Utilización de un script para poner en marcha WS-Notification rápidamente
Utilice un script jython para configurar los recursos necesarios para poner en marcha WS-Notification rápidamente en WebSphere Application Server.
Antes de empezar
Acerca de esta tarea
Puede utilizar el script de ejemplo para configurar un conjunto de recursos predeterminado que le permita conectar aplicaciones WS-Notification con fines de desarrollo. Una vez ejecutado, el script realiza las acciones siguientes:
- Busca en la configuración un bus de integración de servicios existente y crea uno si es necesario.
- Busca un miembro de bus existente y, si no lo encuentra, añade el servidor (autónomo) al bus, y utiliza el origen de datos predeterminado.
- Busca un destino de espacio de temas del bus de integración de servicios existente y crea uno si es necesario.
- Crea un servicio WS-Notification Versión 6.1 o Versión 7.0
- Crea un punto de servicio WS-Notification Versión 6.1 o Versión 7.0 en el servidor local para un enlace SOAP sobre HTTP.
- Crea un espacio de nombres de tema permanente WS-Notification que haga referencia al espacio de temas del bus de integración de servicios encontrado o creado en el paso 3.
- Guarda la configuración y describe dónde encontrar el WSDL para el nuevo servicio web de intermediario de notificaciones que se ha expuesto.
Para utilizar el script de ejemplo, efectúe los pasos siguientes:
Procedimiento
Ejemplo
#######################################################################################
# Script QuickStart WS-Notification #
# #
# Este script Jython creará rápidamente los recursos básicos necesarios para empezar #
# a utilizar WS-Notification en WebSphere Application Server versión 6.1 o posterior #
# #
# Antes de ejecutarlo, debe modificar las variables definidas más abajo para #
# que coincidan con los valores de configuración. #
# #
# Nota: #
# - Este script no está pensado para utilizarse en producción, sino sólo en #
# un servidor autónomo (sin despliegue de red). #
# - El script buscará la configuración de un bus existente y, si no encuentra #
# ninguna, se creará un nuevo bus #
# - Después buscará un miembro de bus existente en el bus elegido. Si no encuentra #
# ninguno, creará uno utilizando el almacén de archivos predeterminado #
# - Después buscará un espacio de temas del bus de integración de servicios existente. Si no #
# encuentra ninguno, creará uno. #
# #
# Ejecute el script escribiendo; #
# wsadmin -f wsnQuickStart.py #
# #
#######################################################################################
###########################################################
# Variables de configuración #
# #
# Establezca las variables siguientes para que coincidan con la configuración #
###########################################################
# La raíz de URL del puerto HTTP en el servidor local
hostRoot = "http://xyz.ibm.com:9080"
# El tipo de servicio WS-Notification que desea crear (Versión 6.1 o Versión 7.0)
wsnServiceType = "V7.0"
#######################################################################################
# Ahora cree los objetos de configuración utilizando las variables definidas antes #
#######################################################################################
# Estas variables son arbitrarias y no se deben definir a menos que sea necesario.
wsnServiceName = "myWSNService"+wsnServiceType
wsnServicePointName = "myWSNServicePoint"+wsnServiceType
eplName = "myNewEPL"
tnsNamespaceURI = "http://example.org/topicNamespace/example1"
# Variables de entorno generales
nodeName = AdminTask.listNodes().split("\n")[0].rstrip()
server = AdminTask.listServers().split("\n")[0].rstrip()
print "###########################################################"
print "# Comprobar los requisitos previos antes de empezar #"
print "###########################################################"
# Compruebe la existencia del bus
requiresRestart = "false"
myBuses = AdminTask.listSIBuses().split("\n")
myBus = myBuses[0].rstrip()
if (myBus == ""):
print " *** Creando nuevo bus "
myBus = AdminTask.createSIBus("-bus MySampleBus -busSecurity false
-scriptCompatibility 6.1")
requiresRestart = "true"
#endIf
siBusName = AdminConfig.showAttribute(myBus, "name" )
print " nombre bus integración de servicios: "+siBusName+" "
# Compruebe la existencia del miembro de bus
busMembers = AdminTask.listSIBusMembers(" -bus "+siBusName).split("\n")
myBusMember = busMembers[0].rstrip()
if (myBusMember == ""):
print ""
print " *** Creando nuevo miembro de bus "
busMemberName = AdminConfig.showAttribute(server, "name")
myBusMember = AdminTask.addSIBusMember(" -bus "+siBusName+"
-node "+nodeName+" -server "+busMemberName)
print ""
requiresRestart = "true"
else:
nodeName = AdminConfig.showAttribute(myBusMember, "node")
busMemberName = AdminConfig.showAttribute(myBusMember, "server")
#endElse
print " Miembro del bus de integración de servicios en el nodo: "+nodeName+" "
print " en el servidor: "+busMemberName+" "
# Busque un espacio de temas para utilizar
topicSpaces = AdminTask.listSIBDestinations(" -bus "+siBusName+"
-type TopicSpace ").split("\n")
tSpace = topicSpaces[0].rstrip()
if (tSpace == ""):
print " *** Creando un espacio de temas "
tSpace = AdminTask.createSIBDestination(" -bus "+siBusName+"
-node "+nodeName+" -server "+myBusMember+"
-name MyTopicSpace -type TopicSpace")
print ""
#endIf
siBusTopicSpaceName = AdminConfig.showAttribute(tSpace, "identifier" )
print " espacio de temas del bus de integración de servicios: "+siBusTopicSpaceName+" "
print ""
print "###########################################################"
print "# Cree el servicio WS-Notification #"
print "###########################################################"
newService = AdminTask.listWSNServices(" -name "+wsnServiceName+"
-bus "+siBusName).split("\n")[0].rstrip()
if (newService == ""):
newService = AdminTask.createWSNService(" -name "+wsnServiceName+"
-bus "+siBusName+" "+" -type "+wsnServiceType)
print "Se ha creado servicio WS-Notification: "+wsnServiceName+" "
print " en el bus: "+siBusName+" "
else:
print "El servicio WS-Notification '"+wsnServiceName+"' "
print " ya existe en el bus '"+siBusName+"' "
#endElse
print ""
print "###########################################################"
print "# Cree el punto de servicio WS-Notification #"
print "###########################################################"
eplURLRoot = hostRoot+"/wsn"
wsdlURLRoot = hostRoot+"/SIBWS/wsdl"
newServicePoint = AdminTask.listWSNServicePoints(newService, "
-name "+wsnServicePointName+" " ).split("\n")[0].rstrip()
if (newServicePoint == ""):
if (wsnServiceType == "V7.0"):
newServicePoint = AdminTask.createWSNServicePoint(newService, "
-name "+wsnServicePointName+" -node "+nodeName+" -server "+busMemberName)
else:
newServicePoint = AdminTask.createWSNServicePoint(newService, "
-name "+wsnServicePointName+"
-node "+nodeName+" -server "+busMemberName+" -eplName "+eplName+"
-eplURLRoot "+eplURLRoot+" -eplWSDLServingURLRoot "+wsdlURLRoot+" " )
print "Se ha creado el punto de servicio WS-Notification: "+wsnServicePointName+" "
print " en el miembro de bus: "+busMemberName+" "
print " en el nodo: "+nodeName+" "
else:
print "El punto de servicio WS-Notification '"+wsnServicePointName+"' "
print "ya existe en el servicio WS-Notification '"+wsnServiceName+"' "
#endElse
print ""
print "###########################################################"
print "# Cree el espacio de nombres de tema permanente WS-Notification #"
print "###########################################################"
newTopicNamespace = AdminTask.listWSNTopicNamespaces(newService, "
-namespace "+tnsNamespaceURI+" ").split("\n")[0].rstrip()
if (newTopicNamespace == ""):
newTopicNamespace = AdminTask.createWSNTopicNamespace(newService, "
-namespace "+tnsNamespaceURI+" -busTopicSpace "+siBusTopicSpaceName+"
-reliability RELIABLE_PERSISTENT")
print "Se ha creado el espacio de nombres de tema WS-Notification: "+tnsNamespaceURI+" "
print " espacio de temas del bus: "+siBusTopicSpaceName+" "
else:
print "El espacio de nombres de temas permanentes WS-Notification ya existe: "
+tnsNamespaceURI+" "
#endElse
#######################################################################################
# Se han creado todos los objetos - Informe al usuario sobre dónde debe seguir #
#######################################################################################
print ""
print "###########################################################"
print "# Resumen #"
print "###########################################################"
# Calcule dónde encontrará el WSDL para el nuevo servicio.
if (wsnServiceType == "V7.0"):
print "IMPORTANTE: como ha creado un servicio Versión 7.0"
print "debe iniciar la aplicación recién instalada;"
print " WSN_"+wsnServiceName+"_"+wsnServicePointName
print ""
wsdlLocation = hostRoot+"/"+wsnServiceName+wsnServicePointName
+"NB/Service?wsdl"
else:
print "IMPORTANTE: como ha creado un servicio Versión 6.1"
print "debe iniciar 2 aplicaciones recién instaladas;"
serverName = AdminConfig.showAttribute(server, "name")
print " "+eplName+"."+nodeName+"."+serverName
print " sibws."+nodeName+"."+serverName
print ""
wsdlLocation = hostRoot+"/wsn/soaphttpengine/"+siBusName+"/"
+wsnServiceName+"NotificationBroker/"
+wsnServicePointName+"NotificationBrokerPort?wsdl"
print " El WSDL del nuevo servicio puede visualizarse en la ubicación siguiente; "
print " "+wsdlLocation+" "
print ""
print " Las aplicaciones de servicios web pueden publicarse y suscribirse a temas del espacio de nombres; "
print " "+tnsNamespaceURI+" "
print ""
if (requiresRestart == "true"):
print " Ahora debe reiniciar el servidor para que los cambios entren en vigor. "
print ""
#endIf
print ""
print "###########################################################"
print "# Guarde la configuración y salga #"
print "###########################################################"
AdminConfig.save()
sys.exit()