Olá, alguém sabe me informar se existe alguma classe java para trabalhar com objetos webservice? Obrigado!
Webservice com java?
5 Respostas
Voce pode fazer com Axis, mas da um trabalho, é bem mais produtivo usar EJB 3.
Nunca mexi com Axis mas falam que não é uma experiência muito boa. Acomselho usar ou EJB mesmo ou CXF da Apache que é bastante parecido com EJB.
Voce pode fazer com Axis, mas da um trabalho, é bem mais produtivo usar EJB 3.
Mas tipo, queria saber se existe algum objeto que tem um atibuto wsdl, ai seto esse atributo e provavelmente esse objeto deva ter um metodo do tipo loadWSDL(). Que nem no código abaixo mas que esta em actionscript:
service = new WebService();
service.wsdl = "http://210.00.000.000:4000/services/FrontEnd?wsdl";
service.addEventListener("result", trataGetDadosClient);
service..addEventListener("fault", faultHandler);
service.addEventListener("load", obtemGetDadosClient);
service.port = "FrontEndHttpSoap11Endpoint";
service.loadWSDL();
O mais recomendado é, de fato, usar EJB3, que já cria o WSDL e associa o XML às suas entidades. Mas dá pra fazer o que você quer “na unha”, usando JAX-WS mesmo. Um exemplo seria mais ou menos assim:
@WebServiceProvider(targetNamespace="", wsdlLocation="", portName="", serviceName="")
@ServiceMode(Mode.PAYLOAD)
public class Servico implements Provider<SOAPMessage> {
//Ecoa a requisição
public SOAPMessage invoke (SOAPMessage request) {
return request;
}
}
E, pra publicar a criança:
public class Server {
public static void main (String[] args) {
Endpoint e = Endpoint.create(new Servico());
e.publish("http://localhost:9000/servico");
synchronized (Server.class) {
try {
Server.wait();
} catch (InterruptedException e) {
//Sai do wait e encerra.
}
}
}
}
(mais ou menos isso)
Note que não é uma abordagem muito boa, já que exige que você desenvolva o WSDL na unha, trate o XML na unha, enfim… não é uma boa. Caso, mesmo assim, você goste da idéia, no meu blog existe um post mostrando como fazer isso com mais detalhes.
[]´s
Ah, esquecí de falar… com EJB3, fica mais ou menos assim:
@WebService
@Stateless
public class Servico {
@WebMethod
public String helloWorld(String nome) {
return "Olá, " + nome;
}
}
[]´s