Por exemplo:
O Código abaixo irá receber uma mensagem do tipo: {“serviceName”:“nome_do_serviço”, “paramInteiro1”: 10, “paramInteiro2”:20}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response esbListener(@WebParam(name = "msg") ServiceMessage msg) throws MessageTransmissionException {
return Response.ok(msg).build();
}
Com essa mensagem e com este código funciona perfeitamente. Fazendo com Response, o retorno é genérico. Independente do que minha app retornar, ele consegue enviar no corpo do HTTP. Mas, o parametro msg, é limitado. Se eu quiser enviar a seguinte mensagem {“serviceName”:“nome_do_serviço”, “paramInteiro1”: 10}, ocorrerá uma exceção…
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class ServiceMessage {
private String serviceName;
private int numberOne;
private int numberTwo;
public ServiceMessage() {
}
public ServiceMessage(String serviceName, int numberOne, int numberTwo) {
this.serviceName = serviceName;
this.numberOne = numberOne;
this.numberTwo = numberTwo;
}
public int getNumberOne() {
return numberOne;
}
public void setNumberOne(int numberOne) {
this.numberOne = numberOne;
}
public int getNumberTwo() {
return numberTwo;
}
public void setNumberTwo(int numberTwo) {
this.numberTwo = numberTwo;
}
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
}
Será que existe a possibilidade de fazer com que o parâmetro msg seja genérico? ou seja, recebe qualquer mensagem. Se ela for aceitavel, faz o processamento. Senão, envia uma mensagem de erro? Não sei se fui claro, qualquer coisa tento explicar melhor. Att, Obrigado pela atenção.