Axis2 WebService Client
Este documento relata a maneira mais fácil de construir um webservice client utilizando o Axis2 para gerar as classes de acesso a partir do WSDL.
Utilizaremos o Axis2 v1.7.9, mesma atualmente sendo utilizada como dependência nos módulos do BIS10 e BISFW.
Baixando o Axis2
Para gerar as classes precisamos dos binários do Axis2, que podem ser baixados no site: https://axis.apache.org/axis2/java/core/download.cgi.
Por já ser uma versão legada (já temos a 1.8), a versão 1.7.9 pode ser encontrada no archive do Axis2: http://archive.apache.org/dist/axis/axis2/java/core/1.7.9/
Baixe o pacote axis2-1.7.9-bin.zip e descompacte em alguma pasta de sua preferência.
Para funcionar o Axis2 precisará de duas variáveis de ambiente definidas conforme exemplificado nos comandos a seguir:
set JAVA_HOME=c:\Program Files\Java\jdk1.8.0_301 set AXIS2_HOME=c:\x\libs\axis2-1.7.9
Gerando os Stubs a Partir do WSDL
O Axis gera classes para acessar o WebServices a partir do arquivo WSDL de descrição do WebService. Para isso siga os seguintes passos:
- Crie uma pasta temporária onde os fontes serão gerados;
- Dentro desta pasta criada execute o comando
%AXIS2_HOME%\bin\wsdl2Java -uri <arquivo.wsdl> -d xmlbeans -s
O comando gerará na pasta os seguintes conteúdos:
- Pasta src - Pasta com os arquivos fontes que permitem o acesso ao WebService. Dentro desta pasta, em um package que dependerá das definições do WSDL, será criado uma classe com o sufixo Stub para cada serviço exposto no WebService.
- Pasta resources - Esta pasta contém arquivos necessários para o funcionamento dos Stubs criados, e precisam acompanhar o package final. O conteúdo de dentro desta pasta deve ser incluído na raiz do package.
- Arquivo build.xml - Arquivo do ANT para compilar o código. Não utilizado no projeto do BIS.
Gerando o Stub para Acessar o WS
O primeiro passo a fazer é acessar o endereço do WebService que deseja acessar pelo browser e salvar o WSDL que descreve o serviço. Como exemplo, criaremos o client para acessar o WebService da Receita da Fazenda de São Paulo utilizado para enviar, consultar e retificar arquivos gerados pelo ECF da Nota Paulista.
O endereço deste webservice é https://www.nfp.fazenda.sp.gov.br/ws/arquivocf.asmx, ao acessa-lo pelo browser podemos notar o link que fornece o WSDL sobre o link "Service Description", e o salvamos com a extensão WSDL, mesmo que o browser não o forneça a extensão adequada.

Com o Axis 2 e o WSDL salvo, temos quase tudo o que precisamos para o Eclipse gerar as classes de acesso do WebService. O que falta agora é um "Dynamic Web Project", cuja versão do "Dynamic Web Module Version" não seja maior que 2.5. Também é necessário clicar no botão "Modify" da sessão de configuração e ativar as opções da imagem abaixo:
O Axis 2 apenas suporta até a versão 2.5, embora as classes que vamos gerar possam ser usadas tranquilamente em qualquer lugar, inclusive fora de projetos Web, como é o caso do BIS em que o acesso é feito pelo Core, e o código fica no .jar do EJB. Para isso crie um projeto temporário para o Axis usar, no fim do processo apagaremos ele.


Com o projeto criado, pressione CTRL+N, ou vá ao menu File -> New... -> Other e no Wizard que aparece encontre a opção "Web Service Client" e click em Next.

Na tela seguinte, indique o arquivo WSDL que salvamos do endereço do webservice. Na barra vertical a esquerda escolha apenas a opção "Assmble Client" para que o Axis se limite apenas em fazer as clases como queremos. Na sessão de configuração há três opções a serem definidas:
- Web Service Runtime: Deve escolher Axis2 ou o Eclipse usará outra engine para gerar as classes.
- Client Project: Se o eclipse não escolheu o projeto corretamente, clique e altere para o projeto web que criamos antes, pois será onde ele colocará as classes geradas.
- Client EAR project: Ele exige um EAR para gerar as classes (para o caso da opção de deploy ser escolhida na barra), para não misturar com o projeto do BISERP, clique nessa opção e na caixa de baixo onde deve escolher o projeto
- EAR digite um nome qualquer, ele criará o projeto do tipo EAR. Nos apagaremos ele posteriormente junto com o WebProject.
Tudo definido? Click em Finish.

Se tudo correu bem, temos agora no projeto no mínimo duas classes, sendo que uma dela deve ter o sufixo Stub. É através desta classe que acessaremos os métodos do WebService. Basta criar uma instância dela e nela devemos encontrar os métodos tal como é oferecido no webservice. Deixando a chamada completamente transparente para o desenvolvedor.
![]() |
|
![]() |
|