Para comunicação entre aplicação java o cliente do Jersey é uma boa opção por ser muito simples de utilizar, com poucas linha de código é possível fazer um webservice Rest.
O exemplo baixo é a comunicação de 2 projetos java onde um projeto enviar um json com uma descriação e o projeto webservice(ws) apenas retorna um ok.
O projeto do webservice(projeto-ws) contém classe básica, utilizando apenas recursos do javaee, onde apenas espera um json com uma descrição através de um http post.
Projeto-ws : WSApp.java
import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/app") public class WSApp { @POST @Path("/post") @Consumes(MediaType.APPLICATION_JSON) public Response postApp(AppMessage json) { return Response.ok(xml).build(); } }
A classe WSApp.java deverá estar em um projeto web.
Para manter a consistência dos dados trafegados pelo webservice foi criado uma classe comum entre os 2 projetos
Projeto-commons : AppMessage.java
import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class AppMessage { private String descricao; public AppMessage(String descricao) { this. descricao = descricao; } gets / sets }
Não é exigido a criação dessa classe, poderia simplesmente enviar um parâmetro String, mas caso for enviado vários parâmetros essa classe facilita a consistência do dados e praticidade de enviar apenas um parâmetro objeto ao invés de vários parâmetros.
Projeto-cliente : ClientJersey.java
import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; public void chamarWs() { Client client = Client.create(new DefaultClientConfig()); WebResource webResource = client.resource("http://localhost:8080/projeto-ws/rest/app/post"); webResource.type(MediaType.APPLICATION_JSON) .post(AppMessage.class, new AppMessage(this.descricao)); }
- Client : cria um cliente com a configuração padrão do Jersey;
- WebResource : criar um recurso web onde será configurado o endereço de destino no seu construtor , no atributo “type” é o tipo de arquivo de comunicação, no caso é um JSON e no atributo “post” está dizendo que a comunicação será afeito através de um HTTP POST passando o tipo e o valor no construtor do método que será enviado pelo webservice.