AXIS2 – Consumindo WebServices SOAP com o Magic xpa 4.x

Vejamos a seguir nesta publicação, como consumir um webServices SOAP no Magic xpa 4.x usando o Apache AXIS2

São várias as opções que temos disponíveis no Magic xpa 4.x para o consumo de webServices SOAP, a partir de um WSDL existente:

 

  • Invoke WS Lite
  • WCF Client
  • HTTP Post Operation
  • Apache AXIS2

 

Neste post, vamos abordar e exemplificar a opção 4: Consumo de WS SOAP com o Apache AXIS2.

(em outras publicações falaremos das demais opções)

 

Esta (AXIS2) é uma opção multi plataforma: serve tanto para o SO Windows, quanto para o SO Linux.

Mas antes, vamos abordar as “pré-condições” para utilização deste recurso.

 

Pré-Requisitos

Java 8

Vem por default na instalação do Magic xpa 4.7. Mas se sua versão for inferior a esta por exemplo, pode ser necessário instá-lo (caso já não esteja) manualmente na máquina.

É um pré-requisito do Magic xpa Studio e também do Magic xpa Runtime.

 

A sua pasta de instalação deve estar informada no MAGIC.INI, na seção [MAGIC_JAVA]:

 

Além disso, é conveniente sempre ter uma variável de ambiente chamada JAVA_HOME apontando para a pasta de localização do JDK 8 (de preferência o de 32Bits):

 

e ter estas pastas adicionadas no início do PATH do SO:

 

SET PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;<restante do PATH>

 

Apache AXIS 2

Este possivelmente precise ser instalado à parte, caso já não o tenha (para atender outros sistemas por exemplo) ou o instalador (Setup) do Magic xpa não o tenha disponibilizado junto ao produto principal.

AXIS2 = https://axis.apache.org/axis2/java/core/

É um pré-requisito do Magic xpa Studio somente.

Uma vez instalado, deve ser criada uma variável de ambiente (Windows) de nome AXIS2_HOME, apontando para sua pasta home de instalação:

 

Além disso, a pasta (referência): lib\* desta instalação deve também estar informada no MAGIC.INI, na seção [MAGIC_JAVA], chave CLASSPATH:

 

Apache ANT

Este possivelmente precise ser instalado à parte, caso já não o tenha (para atender outros sistemas por exemplo) ou o instalador (Setup) do Magic xpa não o tenha disponibilizado junto ao produto principal.

ANT = https://ant.apache.org/

É um pré-requisito do Magic xpa Studio somente.

Uma vez instalado, deve ser criada uma variável de ambiente (Windows) de nome ANT_HOME, apontando para sua pasta home de instalação:

 

Além disso, a pasta (referência): lib\* desta instalação deve também estar informada no MAGIC.INI, na seção [MAGIC_JAVA], chave CLASSPATH:

 

Consumindo o Serviço Web – Gerando a classe “Proxy”

Resolvidas as questões dos pré-requisitos, o próximo passo é ter a posse do WSDL do(s) serviço(s) que necessitamos acessar e codificar sua chamada no Magic xpa.

Neste exemplo vamos utilizar o https://www.dataaccess.com/webservicesserver/TextCasing.wso?WSDL, método InvertStringCase:

*Nota: Este WS simples recebe um texto como argumento e inverte suas letras maiúsculas em minúsculas, e vice-versa.

 

Devemos acessar o CRR do nosso projeto a adicionar uma novo componente do tipo “Apache Axis2“:

 

Em seguida, executamos o ZOOM (F5) neste novo componente e informamos ao assistente o WSDL do serviço (que pode ser uma URL ou um arquivo em disco):

 

Ao clicar “OK”, o Magic xpa Studio vai invocar o Apache AXIS2 (%AXIS2_HOME%\bin\wsdl2java.bat [ … ] ), gerando um arquivo JAR com o código Java que faz o consumo deste webService.

Este módulo cliente de consumo é colocado na pasta %EngineDir%\JavaClientModules:

 

E passa a ser a referência interna no componente que acabamos de criar no CRR:

 

*Nota: Esta pasta %EngineDir%\JavaClientModules precisa ser levada para o ambiente do Magic xpa Runtime, que vai executar este projeto.

 

Consumindo o Serviço Web – Programando a chamada do Serviço

Tendo gerado a classe Java de consumo, o passo final é a codificação no programa Magic xpa da chamada deste serviço.

Como é um componente Apache AXIS2 (Java), isso é feito através de variáveis do tipo JAVA nos programas.

Geralmente (mas não é regra imutável), uma chamada vai requerer 3 classes:

 

  • Stub = É a classe geral do serviço que foi decodificado e convertido em código Java. Ela abrange todos os métodos listados no WSDL.
  • Request = É a classe que define o objeto com os “parâmetros de entrada” (caso existam) do método que será invocado.
  • Response = É a classe que define o objeto com o “retorno” (caso exista) do método que será invocado.

 

Para nosso método de exemplo (InvertStringCase), essas classes foram geradas como:

 

  • Stub = com.dataaccess.www.webservicesserver.TextCasingStub
  • Request = com.dataaccess.www.webservicesserver.TextCasingStub.InvertStringCase
  • Response = com.dataaccess.www.webservicesserver.TextCasingStub.InvertStringCaseResponse

 

Estes são justamente os tipos de dados das variáveis JAVA do nosso programa Magic xpa:

 

Tendo as variáveis definidas, em algum ponto do programa (ex: Task Prefix) é necessário instanciá-las (criar seus objetos), através da chamada dos seus construtores (exceto ‘Response’):


Java.com.dataaccess.www.webservicesserver.TextCasingStub()
Java.com.dataaccess.www.webservicesserver.TextCasingStub.InvertStringCase()

 

Como este método (InvertStringCase) recebe um argumento (uma ‘string’), devemos preenchê-lo na classe Request:

 

B.setSAString( RTrim( <Virtual ALPHA> ) )
*Nota: Este formato acima não é uma regra geral. Vai variar de serviço para serviço, método para método, a forma como devem ser preenchidos os argumentos de entrada.

 

Na sequência, é feita a chamada do método (com o objeto ‘Request‘ como argumento), e ele retorna uma instância (objeto) da classe ‘Response‘:

 

<Objeto STUB>.invertStringCase( <Objeto REQST> )

 

E para finalizar, se deu tudo certo (não houver um Java Exception), podemos extrair o resultado da classe ‘Response‘ retornada:

 

<Objeto RESPONSE>.getInvertStringCaseResult()

 

No exemplo, passamos como argumento a stringmagic software brasil‘ e o retorno do webService é este:

 

Baixe deste endereço um projeto exemplo com o Magic xpa 4.7, usando o Apache AXIS2.

 

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado.