Utilisation d'un script pour démarrer et commencer à travailler rapidement avec WS-Notification
Utilisez un script jython pour configurer les ressources nécessaires pour démarrer et et commencer à travailler rapidement avec WS-Notification dans WebSphere Application Server.
Avant de commencer
Pourquoi et quand exécuter cette tâche
Vous pouvez utiliser cet exemple de script pour configurer un ensemble de ressources par défaut vous permettant de connecter des applications WS-Notification à des fins de développement. Une fois exécuté, le script effectue les actions suivantes :
- Recherche dans la configuration un bus d'intégration de services existant, et en crée un si nécessaire.
- Recherche un membre de bus existant, et si aucun membre n'est trouvé, ajoute le serveur (autonome) au bus, avec la source de données par défaut.
- Recherche une destination d'espace de sujet du bus d'intégration de services existante, et en crée une si nécessaire.
- Crée un service WS-Notification, version 6.0 ou 7.0.
- Crée un point de service WS-Notification version 6.0 ou 7.0 sur le serveur local pour une liaison SOAP sur HTTP.
- Crée un espace de nom de sujet permanent pour WS-Notification pour référencer l'espace de sujet du bus d'intégration de services trouvé ou créé à l'étape 3.
- Enregistre la configuration et indique l'emplacement du fichier WSDL du nouveau service Web du courtier de notification qui a été exposé.
Pour utiliser l'exemple de script, effectuez les étapes suivantes :
Procédure
Exemple
#######################################################################################
# WS-Notification QuickStart script #
# #
# This Jython script will quickly create the basic resources required in order to #
# start using WS-Notification in WebSphere
Application Server Version 6.1 or later #
# #
# Before executing it you must modify the variables defined below to match your #
# configuration settings. #
# #
# Note: #
# - This script is not intended for production use, and is intended for use on #
# a stand-alone server (not network deployment) only. #
# - The script will search the configuration for an existing bus, and if one is #
# not found then a new bus will be created #
# - It will then look for an existing Bus Member on the chosen bus. If one is not #
# found then one will be created using the default File Store #
# - It will then look for an existing service integration bus topic space. If one #
# is not found then it will create one. #
# #
# Execute the script by typing; #
# wsadmin -f wsnQuickStart.py #
# #
#######################################################################################
###########################################################
# Configuration variables #
# #
# Set the following variables to match your configuration #
###########################################################
# The URL root of HTTP port on the local server
hostRoot = "http://xyz.ibm.com:9080"
# The type of WS-Notification service you want to create (Version 6.1 or Version 7.0)
wsnServiceType = "V7.0"
#######################################################################################
# Now create the configuration objects using the variables defined above #
#######################################################################################
# These variables are arbitrary choices and need not be set unless required.
wsnServiceName = "myWSNService"+wsnServiceType
wsnServicePointName = "myWSNServicePoint"+wsnServiceType
eplName = "myNewEPL"
tnsNamespaceURI = "http://example.org/topicNamespace/example1"
# General environment variables
nodeName = AdminTask.listNodes().split("\n")[0].rstrip()
server = AdminTask.listServers().split("\n")[0].rstrip()
print "###########################################################"
print "# Check the pre-requisites before you begin #"
print "###########################################################"
# Check for the existence of the bus
requiresRestart = "false"
myBuses = AdminTask.listSIBuses().split("\n")
myBus = myBuses[0].rstrip()
if (myBus == ""):
print " *** Creating new bus "
myBus = AdminTask.createSIBus("-bus MySampleBus -busSecurity false
-scriptCompatibility 6.1")
requiresRestart = "true"
#endIf
siBusName = AdminConfig.showAttribute(myBus, "name" )
print " service integration bus name: "+siBusName+" "
# Check for the existence of the bus member
busMembers = AdminTask.listSIBusMembers(" -bus "+siBusName).split("\n")
myBusMember = busMembers[0].rstrip()
if (myBusMember == ""):
print " "
print " *** Creating new Bus Member "
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 " service integration bus Member on node: "+nodeName+" "
print " on server: "+busMemberName+" "
# Find a topic space to use
topicSpaces = AdminTask.listSIBDestinations(" -bus "+siBusName+"
-type TopicSpace ").split("\n")
tSpace = topicSpaces[0].rstrip()
if (tSpace == ""):
print " *** Creating a Topic Space "
tSpace = AdminTask.createSIBDestination(" -bus "+siBusName+"
-node "+nodeName+" -server "+myBusMember+"
-name MyTopicSpace -type TopicSpace")
print " "
#endIf
siBusTopicSpaceName = AdminConfig.showAttribute(tSpace, "identifier" )
print " service integration bus topic space: "+siBusTopicSpaceName+" "
print " "
print "###########################################################"
print "# Create the WS-Notification service #"
print "###########################################################"
newService = AdminTask.listWSNServices(" -name "+wsnServiceName+"
-bus "+siBusName).split("\n")[0].rstrip()
if (newService == ""):
newService = AdminTask.createWSNService(" -name "+wsnServiceName+"
-bus "+siBusName+" "+" -type "+wsnServiceType)
print "WS-Notification service created: "+wsnServiceName+" "
print " on bus: "+siBusName+" "
else:
print "WS-Notification service '"+wsnServiceName+"' "
print " already exists on bus '"+siBusName+"' "
#endElse
print " "
print "###########################################################"
print "# Create the WS-Notification service point #"
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 "WS-Notification service point created: "+wsnServicePointName+" "
print " on bus member: "+busMemberName+" "
print " on node: "+nodeName+" "
else:
print "WS-Notification service point '"+wsnServicePointName+"' "
print "already exists on WS-Notification service '"+wsnServiceName+"' "
#endElse
print " "
print "###########################################################"
print "# Create the WS-Notification permanent topic namespace #"
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 "WS-Notification topic namespace created: "+tnsNamespaceURI+" "
print " bus topic space: "+siBusTopicSpaceName+" "
else:
print "WS-Notification permanent topic namespace already exists: "
+tnsNamespaceURI+" "
#endElse
#######################################################################################
# All the objects have been created - inform the user where to proceed next #
#######################################################################################
print " "
print "###########################################################"
print "# Summary #"
print "###########################################################"
# Calculate where you would find the WSDL for the new service.
if (wsnServiceType == "V7.0"):
print "IMPORTANT: Because you've created a Version 7.0 service"
print "you need to start the newly installed application;"
print " WSN_"+wsnServiceName+"_"+wsnServicePointName
print " "
wsdlLocation = hostRoot+"/"+wsnServiceName+wsnServicePointName
+"NB/Service?wsdl"
else:
print "IMPORTANT: Because you've created a Version 6.1 service"
print "you need to start 2 newly installed applications;"
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 " The WSDL for the new service can be viewed at the following location; "
print " "+wsdlLocation+" "
print " "
print " Your web service applications can publish and subscribe to any topics in the namespace; "
print " "+tnsNamespaceURI+" "
print " "
if (requiresRestart == "true"):
print " You must now restart the server for the changes to take effect. "
print " "
#endIf
print " "
print "###########################################################"
print "# Save the configuration and exit #"
print "###########################################################"
AdminConfig.save()
sys.exit()