Sou novo no forum e estou com um problema enorme.
Sou iniciante em Java, ou seja, apanhando muito ainda e me foi solicitado fazer um Web Service que será consumido por uma aplicação php.
Foi solicitado que o mesmo fosse desenvolvido em java pois é uma linguagem free.
Pelo que li no forum uma boa maneira de desenvolver é utilizando tomcat + axis.
Instalei tudo e fiz um pequeno teste e funcionou, porém, agora eu “travei” pois preciso fazer um webservice que receba parametros, acesse o banco de dados e retorne os dados para a aplicação php.
Estou procurando material na internet, mas encontro somente exemplos basicos como o que fiz e não estou conseguindo dar continuidade ao projeto que tem que estar operando até a próxima semana.
Será que alguém teria algum material ou sabe onde posso encontrar um exemplo parecido com o que preciso, pois como sou leigo, até conseguir desenvolver por meios próprios vai ser complicado.
Eu consegui fazer um exemplo utilizando vetores para retornar os dados, porém, no xml de resultado as colunas ficam com as tags iguais.
Tem como eu gerar um xml com o resultset, tendo as colunas do sql como nome das tags?
Eu achei interessante esse Xstream, fiz um exemplo dentro do eclipse e funcionou perfeitamente, porém, quando transformo o .java em .jws no axis, está dando erro justamente quando vou utilizar o bean que criei.
Tem algum segredo pra ele localizar o bean quando transformo em webservice?
As duas classes estão no mesmo diretório mas ele não consegue localizar.
Os erros ocorrem nas seguintes linhas:
List<Pessoa> pessoas = new ArrayList<Pessoa>();
Pessoa pessoa = new Pessoa();
Line 34, column -1: cannot find symbol
Line 34, column -1: cannot find symbol
Line 38, column -1: cannot find symbol
Line 38, column -1: cannot find symbol
Fazendo as configurações normais sua classe já se torna um webservice, desde que esteja mapeada no arquivo services.xml.
E no lado do cliente basta consumir dessa forma:
public String getClientes() throws Exception {
URL url = new URL("http://servidor:8080/SuaAplicacao/services/Servico?wsdl");
Client cliente = new Client(url);
Object[] resultado = cliente.invoke("metodoWS",new Object[]{par1,par2,par3});//caso existam
return resultado[0].toString();
}
Agora transforme sua String em objeto novamente:
XStream xstream = new XStream();
//esse alias deve ser igual a classe do server
xstream.alias("clientes", Cliente.class);
Cliente cliente = (Cliente ) xstream.fromXML(getClientes());
Cara… vale a pena ler SOA e WebServices em Java de Cleuton Sampaio. Esclarece muitas coisas.
Apesar de ser muito por gosto de cada um, prefira o XFire ao Axis(é meio sadomasoquista). Se possível veja o JAX-WS da Sun que integrado ao Netbeans é muito bom.
Por exemplo, devo configurar algo mais no [color=blue]web.xml[/color] além da servlet do XFIRE?
No arquivo [color=red]service.xml[/color], configuro os meus webservices, mas em que lugar na minha app web deve ficar esse arquivo? WEB-INF !!!
Gostaria de um tutorial mais completo um pouco se possivel, preciso desenvolver um web service para realizar consultas, executar history procedures, etc…
A comunicação com webservices, será através de páginas desenvolvidas em PHP.
Por exemplo, devo configurar algo mais no [color=blue]web.xml[/color] além da servlet do XFIRE?
No arquivo [color=red]service.xml[/color], configuro os meus webservices, mas em que lugar na minha app web deve ficar esse arquivo? WEB-INF !!!
Gostaria de um tutorial mais completo um pouco se possivel, preciso desenvolver um web service para realizar consultas, executar history procedures, etc…
A comunicação com webservices, será através de páginas desenvolvidas em PHP.
Desde já agradeço.[/quote]
Se vc vai começca rum projeto do zero, aconselho a não usar o XFire e utilizar logo o APACHE CXF, é uma espécie de evolução do XFire com outros projetos do mesmo tipo.
duas coisas:
1 - mudar a extensão da sua classe java p/ jws e copia-la p/ o axis sovai funcionar se sua classe utilizar somente tipos nativos do java, como os primitivos, String, Date e etc. por isso não esta funcionando, pq vc tem uma referencia a um bean que vc criou.
vc vai precisar criar registrar esses novos tipo no arquivo wsdd.
2 - não use Collections como retorno do seu WS. Algumas linguagens não conhecem esse tipo de dado. utilize arrays.