Olá,
Estou a desenvolver um web service.
Gerei o skeleton do WS a partir do wsdl com a ferramenta wsdl2java (axis).
Tenho 2 classes principais e um interface, para além dos objectos gerados a partir dos schemas.
Neste momento não necessito de utilizar as classes e quero aplicar uma transformação à mensagem XML recebida (aplicando um XSL) para obter um outro XML.
Da mesma forma, não quero utilizar a serialização do objecto de retorno do método mas sim compor o meu próprio SOAPEnvelope (de acordo com o schema de resposta, claro).
Ou seja, na classe MyService_MessageReceiverInOut
code
if(“ACCAO”.equals(methodName)){
//chamar o skeleton para tratar o XML recebido
Object obj = skel.accao(msgContext.getEnvelope().getBody().toStringWithConsume());
//método original
//envelope = toEnvelope(getSOAPFactory(msgContext), obj, false);
//o método myToEnvelope devolve o SOAPEnvelope com a mensagem pretendida
envelope = myToEnvelope(msgContext);
}
newMsgContext.setEnvelope(envelope);
(…)
O problema é que obtenho o seguinte log do Apache:
26/Fev/2008 10:52:00 com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection post
WARNING: SAAJ0014: Invalid reply message. Content length of reply was zero.
No entanto, tanto o conteúdo do envelope como do newMsgContext tem o XML pretendido.
Alguém tem ideias do que poderá ser?
Desde já agradeço.
Cumprimentos,
Daniel