Usando um Script para Começar a Usar e Executar Rapidamente o WS-Notification
Use um script Jython para configurar os recursos necessários para começar a usar e executar rapidamente o WS-Notification no WebSphere Application Server.
Antes de Iniciar
Sobre Esta Tarefa
É possível usar o script de exemplo para configurar um conjunto padrão de recursos que permitem conectar aplicativos do WS-Notification para propósitos de desenvolvimento. Quando executado, o script executa as seguintes ações:
- Ele por um barramento de integração de serviços existente na configuração e, se necessário, cria um.
- Ele procura por um membro do barramento existente e, se nenhum for localizado, ele inclui o servidor (independente) no barramento e usa a origem de dados padrão.
- Ele procura por um destino de espaço de tópico de barramento de integração de serviços existente e, se necessário, cria um.
- Ele cria um serviço do WS-Notification da Versão 6.1 ou Versão 7.0.
- Ele cria um ponto de serviço do WS-Notification da Versão 6.1 ou 7.0 no servidor local para uma ligação SOAP sobre HTTP.
- Ele cria um namespace de tópico permanente para fazer referência ao espaço de tópico do barramento de integração de serviços que foi localizado ou criado na etapa 3.
- Ele salva a configuração e descreve onde localizar o WSDL para o novo serviço da web do broker de notificação que foi exposto.
Para utilizar o script de exemplo, conclua as seguintes etapas:
Procedimento
Exemplo
#######################################################################################
# Script QuickStart do WS-Notification #
# #
# Este script Jython criará rapidamente os recursos básicos necessários para começar #
# Iniciar usando o WS-Notification no WebSphere Application Server Versão 6.1 ou posterior #
# #
# Antes de executá-lo, é necessário modificar as variáveis definidas abaixo para corresponderem #
# às definições de configuração. #
# #
# Nota: #
# - Este script não destina-se à utilização de produção; destina-se à utilização #
# de somente um servidor independente (não implementação de rede). #
# - O script procurará na configuração um barramento existente e, se não for #
# localizado um, será criado um novo barramento #
# - Ele então procurará um Membro do Barramento existente no barramento escolhido. Se não for #
# localizado um, será criado um utilizando o Armazenamento de Arquivos padrão #
# - Ele então procurará um espaço de tópico do barramento de integração de serviço existente. Se não #
# for localizado um, será criado um. #
# #
# Execute o script digitando; #
# wsadmin -f wsnQuickStart.py #
# #
#######################################################################################
###########################################################
# Variáveis de Configuração #
# #
# Configure as seguintes variáveis para corresponderem à sua configuração #
###########################################################
# A raiz da URL da porta HTTP no servidor local
hostRoot = "http://xyz.ibm.com:9080"
# O tipo de serviço WS-Notification que você deseja criar (Versão 6.1 ou 7.0)
wsnServiceType = "V7.0"
#######################################################################################
# Agora crie os objetos de configuração utilizando as variáveis definidas acima #
#######################################################################################
# Essas variáveis são opções arbitrárias e só devem ser configuradas se necessário.
wsnServiceName = "myWSNService"+wsnServiceType
wsnServicePointName = "myWSNServicePoint"+wsnServiceType
eplName = "myNewEPL"
tnsNamespaceURI = "http://example.org/topicNamespace/example1"
# Variáveis de ambiente gerais
nodeName = AdminTask.listNodes().split("\n")[0].rstrip()
server = AdminTask.listServers().split("\n")[0].rstrip()
print "###########################################################"
print "# Verificar os pré-requisitos antes de iniciar #"
print "###########################################################"
# Verifique a existência do barramento
requiresRestart = "false"
myBuses = AdminTask.listSIBuses().split("\n")
myBus = myBuses[0].rstrip()
if (myBus == ""):
print " *** Criando novo barramento "
myBus = AdminTask.createSIBus("-bus MySampleBus -busSecurity false
-scriptCompatibility 6.1")
requiresRestart = "true"
#endIf
siBusName = AdminConfig.showAttribute(myBus, "name" )
print " nome do barramento de integração de serviços: "+siBusName+" "
# Verifique a existência do membro do barramento
busMembers = AdminTask.listSIBusMembers(" -bus "+siBusName).split("\n")
myBusMember = busMembers[0].rstrip()
if (myBusMember == ""):
print " "
print " *** Criando novo Membro do Barramento "
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 " Membro do barramento de integração de serviços no nó: "+nodeName+" "
print " no servidor: "+busMemberName+" "
# Localize um espaço de tópico para ser utilizado
topicSpaces = AdminTask.listSIBDestinations(" -bus "+siBusName+"
-type TopicSpace ").split("\n")
tSpace = topicSpaces[0].rstrip()
if (tSpace == ""):
print " *** Criando um Espaço de Tópico "
tSpace = AdminTask.createSIBDestination(" -bus "+siBusName+"
-node "+nodeName+" -server "+myBusMember+"
-name MyTopicSpace -type TopicSpace")
print " "
#endIf
siBusTopicSpaceName = AdminConfig.showAttribute(tSpace, "identifier" )
print " espaço de tópico do barramento de integração de serviços: "+siBusTopicSpaceName+" "
print " "
print "###########################################################"
print "# Criar o serviço 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 "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 "# Criar o ponto de serviço do 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 "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 "# Criar o espaço de nomes de tópico permanente do 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 "Espaço de nomes de tópico do WS-Notification criado: "+tnsNamespaceURI+" "
print " espaço de tópico do barramento: "+siBusTopicSpaceName+" "
else:
print "WS-Notification permanent topic namespace already exists: "
+tnsNamespaceURI+" "
#endElse
#######################################################################################
# Todos os objetos foram criados - informe o usuário para onde prosseguir #
#######################################################################################
print " "
print "###########################################################"
print "# Resumo #"
print "###########################################################"
# Calcule onde você localiza o WSDL para o novo serviço.
if (wsnServiceType == "V7.0"):
print "IMPORTANTE: Como você criou um serviço da Versão 7.0,"
print "é necessário iniciar o aplicativo recém-instalado;"
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 "é necessário iniciar 2 aplicativos recém instalados;"
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()