1) O documento descreve como consumir um serviço SOAP existente usando sua definição WSDL para gerar classes Java e invocar o serviço.
2) Ele explica como gerar classes Java a partir de um WSDL, criar um cliente SOAP, invocar a operação e transformar o resultado em XML.
3) Também fornece um exemplo prático usando um serviço WSDL público que traduz endereços IP em informações geográficas.
1. Consumindo SOAP WSDL-First Service
Até agora vimos como criar e consumir Webservices SOAP quando temos
controle sobre a base de código. No entanto, na maioria dos casos, terá que
consumir a partir de um serviço de WSDL já existente. Mule Studio torna este
trabalho muito fácil com a ajuda de uma ferramenta wsdl2java embutido.
Vamos explorar como podemos conseguir isso.
No final deste tutorial, teríamos aprendido a
1. Gerar classes de mensagens publicitárias Java a partir de um WSDL
existente
2. Criar cliente CXF JAX-WS e especificar atributos do cliente Webservice
3. Passe carga apropriado para invocar esse webservice
4. Criar um sub-fluxo e invocá-lo por meio de fluxo de referência a partir de um
fluxo principal
5. Converter objeto Java em XML e exibir no navegador
Abaixo são os dois fluxos vamos tentar construir em poucos minutos seguintes.
Usaremos o seguinte webservice público que traduz um endereço IP em
informação geográfica.
http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl
2. Este webservice leva em dois parâmetros e retorna informações Geo do
endereço IP correspondente. Opcionalmente testar a funcionalidade
Webservice usando SOAP UI. Vamos usar a porta "IP2GeoSoap" e operação
"resolveip" desta WSDL.
3. Abrir projeto "Mule Training" em Mule Studio. Criar "soapclient" fluxo Mule, se
já não estiver presente. Arraste e solte um elemento de fluxo Sub sobre a lona.
Opcionalmente dar-lhe um nome significativo - resolveIPFlow.
Arraste e solte um componente de SOAP em "resolveIPFlow". Clique em
"Gerar WSDL" de propriedades do componente SOAP. Isso fará com que
diálogo para gerar as classes Java wrapper a partir WSDL.
Digite WSDL URL de IP2Geo Webservice
("http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl") e qualquer nome do pacote
que você gostaria. Neste exemplo, classes de mensagens publicitárias Java
será gerado no âmbito do pacote "training.soap.ip2geo". Clique em OK. Mule
4. Studio usa ferramenta wsdl2java nos bastidores para gerar as classes Java.
Certifique-se de classes de mensagens publicitárias Java são gerados como
mostrado abaixo. IP2Geo.java é a classe de serviço Java, teremos de usar em
etapas subsequentes. Alterar a operação de "cliente JAX-WS" em propriedades
do componente SOAP. Enter "resolveip" para Websevice Operação ",
IP2GeoSoap" para a porta e "training.soap.ip2geo.IP2Geo" para a classe
Cliente. Estes valores são obtidos a partir de WSDL.
componente SOAP converte mula de carga útil em SOAP XML que precisa ser
lançado para endpoint HTTP SOAP. Este ponto final é obtido a partir definição
5. WSDL, como mostrado abaixo.
Limpar Host, Porta e os campos de caminho de HTTP. Em seguida, a partir do
separador "Avançado", digite HTTP endpoint copiamos no passo anterior.
6. Finally, we need to send two parameters to this webservice. Mule expects these
parameters in an object array. Mule expression language is used to build array
expression: #[{‘173.194.36.39’, ”}]. Here, ‘173.194.36.39’ maps to “ipAddress”
parameter and empty value for “licenseKey” parameter. This completes
“resolveIPFlow” sub flow.
7. Lets create main flow that refers to this subflow. Drag and drop another HTTP
endpoint to create another flow – “soapclientFlow2”. Specify “8082” as Port and
“soapclient/wsdlfirst” for Path.
Drag and drop a “Flow Reference” element next to HTTP. Select
“resolveIPFlow” for Flow Name. Sub flow is useful when we want to refer to re-
usable piece of logic from multiple locations. More about sub/child flows can be
read from here.
8. The subflow “resolveIPFlow” would return Java object
“training.soap.ip2geo.IPInformation”. Lets drag and drop “Object to XML”
transformer next to the Flow Reference to transform java object into XML. Mule
uses XStream for this conversion.
Save and run project. Access http://localhost:8082/soapclient/wsdlfirst to see
result of Webservice.