Java + Web Services

nsilvio

Power Member
Ola a todos,

Alguém sabe como criar Web Services em java, sem utilizar EJB containers nem o Tomcat?

Necessito de implementar um web service, mas tenho as seguintes restrições:
. Apenas posso implementar o serviço. O que implica que tem de ser standard (WS-I Basic 1.1)!
. A Java VM é a versão 1.5
. Tem de ser stand alone - não tenho acesso a EJB containers nem o Tomcat

Para complicar, não posso ser eu a gerar o WSDL. Foi o cliente a definir o WSDL... :mad:


Alguem tem ideias em como implementar uma solução deste genero?

Do que investiguei até ao momento, estou a pensar numa das seguintes soluções:
. Utilizar o servidor HTTP Jetty, e processar as mensagens eu mesmo
. Utilizar o AxisService incluido no pacote Axis2

Preferia a segunda solução, mas ainda não consegui disponibilizar o web service (com base no WSDL que tenho) :'(. Alguem sabe configurar o AxisServer?

Desde já, obrigado por qualquer ajuda...
Nuno
 
Última edição:
Oi!

Estas a utilizar que IDE? Eu utilizo no trabalho o Eclipse 3.4 ganymed, e em casa o netbeans. Ambos têm wizards para se criar clientes de web services. Por exemplo, no eclipse tem um wizard no qual indicas o url do webservice ele faz download dos stubs e dos proxies, etc, e somente tens de programar código para invocar os webservices. o projecto pode ser um projecto java simples. dá uma espreitadela, brinca um pc com isso e vais ver que até é simples.
 
Oi!

Estas a utilizar que IDE? Eu utilizo no trabalho o Eclipse 3.4 ganymed, e em casa o netbeans. Ambos têm wizards para se criar clientes de web services. Por exemplo, no eclipse tem um wizard no qual indicas o url do webservice ele faz download dos stubs e dos proxies, etc, e somente tens de programar código para invocar os webservices. o projecto pode ser um projecto java simples. dá uma espreitadela, brinca um pc com isso e vais ver que até é simples.

Infelizmente não quero fazer apenas um cliente :(
Preciso de fazer o servidor (Web Service) onde se vão ligar os clientes.

O problema é que não posso utilizar EJB containers nem o tomcat.
Isto porque o serviço vai correr dentro de um servidor aplicacional onde isso não é possivel.

A solução que segui foi utilizar o Jetty e processar as mensagens SOAP eu mesmo.
O problema agora é conseguir manter-me dentro do standard WS-I Basic 1.1 (standard escolhido para implementar o serviço)
 
Podes utilizar Axis2 ?
Se sim podes criar un web service autonomo com o axis2 : tens uma pista aqui : http://wso2.org/library/2546

Exemplo : Classe MyService
Código:
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]class[/COLOR] MyService {
[COLOR=#0000ff]public[/COLOR] String sayHello(String name) {
[COLOR=#0000ff]return[/COLOR] [COLOR=#ff0000]"Hello "[/COLOR] + name;
}
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]int[/COLOR] add([COLOR=#0000ff]int[/COLOR] a, [COLOR=#0000ff]int[/COLOR] b) {
[COLOR=#0000ff]return[/COLOR] a + b;
}
}
Classe para publicar o Webservice :
Código:
[COLOR=#339933]import org.apache.axis2.AxisFault;[/COLOR]
[COLOR=#339933]import org.apache.axis2.engine.AxisServer;[/COLOR]
 
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]class[/COLOR] RunService {
    [COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]static[/COLOR] [COLOR=#0000ff]void[/COLOR] main(String[] args) [COLOR=#0000ff]throws[/COLOR] AxisFault {
        [COLOR=#0000ff]new[/COLOR] AxisServer().deployService(MyService.[COLOR=#0000ff]class[/COLOR].getName());
    }
}
O servico esta localizado na url : http://localhost:6060
 
Podes utilizar Axis2 ?
Se sim podes criar un web service autonomo com o axis2 : tens uma pista aqui : http://wso2.org/library/2546

Exemplo : Classe MyService
Código:
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]class[/COLOR] MyService {
[COLOR=#0000ff]public[/COLOR] String sayHello(String name) {
[COLOR=#0000ff]return[/COLOR] [COLOR=#ff0000]"Hello "[/COLOR] + name;
}
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]int[/COLOR] add([COLOR=#0000ff]int[/COLOR] a, [COLOR=#0000ff]int[/COLOR] b) {
[COLOR=#0000ff]return[/COLOR] a + b;
}
}
Classe para publicar o Webservice :
Código:
[COLOR=#339933]import org.apache.axis2.AxisFault;[/COLOR]
[COLOR=#339933]import org.apache.axis2.engine.AxisServer;[/COLOR]
 
[COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]class[/COLOR] RunService {
    [COLOR=#0000ff]public[/COLOR] [COLOR=#0000ff]static[/COLOR] [COLOR=#0000ff]void[/COLOR] main(String[] args) [COLOR=#0000ff]throws[/COLOR] AxisFault {
        [COLOR=#0000ff]new[/COLOR] AxisServer().deployService(MyService.[COLOR=#0000ff]class[/COLOR].getName());
    }
}
O servico esta localizado na url : http://localhost:6060


Era mesmo isto que queria utilizar!

O meu problema foi passar do WSDL para a implementação em Java.
Utilizando o WSDL2Java, criando uma implementação, e disponibilizando a implementação com AxisServer().deployService(..), não estava a conseguir invocar o Web Service :(

Confesso que, provavelmente, não investi tempo suficiente em investigar a origem do problema.
Como tinha prazos apertados, decidi optar pelo servidor Jetty, e processar as mensagens eu mesmo. (Diga-se de passagem que já esta a funcionar:009: )

De qualquer forma, conheces algum exemplo mais complexo em, como configurar o AxisServer?

Obrigado,
Nuno
 
O problema é que não posso utilizar EJB containers nem o tomcat.
Isto porque o serviço vai correr dentro de um servidor aplicacional onde isso não é possivel.

O que queres dizer com "o serviço vai correr dentro de um servidor aplicacional"? Qual, qual a tecnologia? Suponho que seja Java para estares a desenvolver em Java.
 
Back
Topo