Data de postagem: May 11, 2010 8:38:44 PM
Este artigo mostra como usar a API Enginelet para consumir Web Services. Iremos criar um Enginelet para consumir o Web Service criado no artigo Como fazer para criar e publicar WebServices?.
Conceitos básicos da criação de um Enginelet poderão ser encontrados na página Como fazer para executar código Java no iEngine?.
Java SE Development Kit (JDK) 6 (http://java.sun.com/javase/downloads/index.jsp)
Eclipse Web Tools Platform - WTP (http://download.eclipse.org/webtools/downloads/)
Apache CXF 2.1.3 (http://cxf.apache.org/download.html)
1. Use o Apache CXF para gerar os stubs Java a partir do WSDL. No prompt de comando digite:
wsdl2java -p <pacote de destino dos stubs> -d <diretório de destino dos stubs> <url do wsdl>
Exemplo: wsdl2java -p br.com.unum.engine.webservice.teste.client -d "c:\MyServiceClient\src" http://127.0.0.1:8081/myservice?wsdl
Se o servidor de webservices usar a mesma JVM que o cliente de webservice(o que é incomum), sugerimos usar a opção -p do wsdl2java para gera os stubs em outro pacote diferente do pacote default. Isso evita conflito com as classe do servidor.
2. Crie um novo projeto no eclipse chamado MyServiceClient e coloque os stubs gerados na pasta src do projeto;
3. Adicione as seguinte javalibs no projeto:
1. enginelet-2.0.jar;
2. json-lib-2.2.2-jdk15.jar
3. commons-lang-2.3.jar
4. commons-logging-1.1.1.jar
5. commons-logging-api-1.1.1.jar
6. ezmorph-1.0.4.jar
7. commons-collections-3.2.jar
8. commons-beanutils.jar
4. Crie um Enginelet chamado br.com.unum.engine.webservice.teste.MyServiceClientEnginelet;
5. Implemente o Enginelet na seguinte forma:
package br.com.unum.engine.webservice.teste;
import net.sf.json.JSONObject;
import br.com.inteq.engine.enginelet.Enginelet;
public class MyServiceClientEnginelet extends Enginelet {
public String handleCommand(String commandName, String[] params) {
String cpf = params[0];
MyService_Service servico = new MyService_Service();
MyService porta = servico.getMyServiceImplPort();
Entidade entidade = porta.obterEntidadePorCPF(cpf);
JSONObject jsonObject = JSONObject.fromObject(entidade);
return jsonObject.toString();
}
}
6. Gere o JAR;
7. Copie o JAR para o diretório <Pasta do UNUMengine>\javalibs e certifique-se que neste diretório há um arquivo chamado .ignoresync. Caso não exista, crie-o.
8. Reinicie o iEngine para que a JVM atrelada ao iEngine monte um novo classpath;
9. Certifique-se que o serviço esteja no ar e no iDBCsql execute o Enginelet que consume o serviço:
var enginelet = new Enginelet( "br.com.unum.engine.webservice.teste.client.MyServiceClientEnginelet" )
var json = enginelet.handleCommand( "", "613.908.793-72" )
var pessoa = eval( "(" + json + ")" )
pessoa.nome
IMPORTANTE: Algumas distribuições da versão 1.6 da JRE possuem bug. Sugerimos realizar a atualização da sua JRE antes de usa o ambiente Java integrado com o iEngine.
Mais detalhes na página O iEngine passou a apresentar a mensagem 'A distribuição ''1.6.0_02'' da versão 1.6 da JRE não é compatível com o iEngine.' Como resolvo?