Network Deployment (Distributed operating systems), v8.0 > Administer applications and their environment > Administer web services - Notification (WS-Notification) > Use WS-Notification for publish and subscribe messaging for web services > Accomplishing common WS-Notification tasks
Use a script to get up and running quickly with WS-Notification
Use a jython script to configure the necessary resources to get up and running quickly with WS-Notification in WAS. The example script provided in this topic is intended for development use on a single server only, and not for use in production or network deployment environments.
We can use the example script to configure a default set of resources that enable you to connect WS-Notification applications for development purposes. When executed, the script takes the following actions:
- It searches in the configuration for an existing service integration bus, and creates one if necessary.
- It searches for an existing bus member, and if one is not found it adds the (stand-alone) server to the bus, and uses the default data source.
- It searches for an existing service integration bus topic space destination, and creates one if necessary.
- It creates a v6.1 or v7.0 WS-Notification service.
- It creates a v6.1 or v7.0 WS-Notification service point on the local server for a SOAP over HTTP binding.
- It creates a WS-Notification permanent topic namespace to reference the service integration bus topic space that was found or created in step 3.
- It saves the configuration, and describes where to find the WSDL for the new notification broker web service that has been exposed.
To use the example script...
Procedure
- Save the script to the file system and use a name of your choice (for example wsnQuickStart.py).
- Modify the hostRoot variable defined at the top of the script to point to the HTTP port of the local server (usually 9080).
- Install and configure the SDO repository.
- Start the server, then execute the following command. If you saved the script with a name other than wsnQuickStart.py, then use that name instead.
wsadmin -f wsnQuickStart.py
Example
Here is the example script:####################################################################################### # WS-Notification QuickStart script # # # # This Jython script will quickly create the basic resources required in order to # # start using WS-Notification in WAS v6.1 or later # # # # Before executing it 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 the configuration # ########################################################### # The URL root of HTTP port on the local server hostRoot = "http://xyz.ibm.com:9080" # The type of WS-Notification service to create (Version 6.1 or v7.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 v7.0 service" print "you need to start the newly installed application;" print " WSN_"+wsnServiceName+"_"+wsnServicePointName print "" wsdlLocation = hostRoot+"/"+wsnServiceName+wsnServicePointName +"NB/NotificationBroker?wsdl" else: print "IMPORTANT: Because you've created a v6.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/soap//publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/ engine/"+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 " We 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()
WS-Notification
Configure WS-Notification resources
Use WS-Notification for publish and subscribe messaging for web services
Secure WS-Notification
Related
WSNotificationCommands command group
WS-Notification troubleshooting tips