所以,我有一个公开Web服务端点的路由。在收到请求后,我会向某些队列发送一些信息,并且我想返回原始呼叫者的回复。 响应是一个枚举,可以有4个值(OK,NULL,RPT,NOK)
。骆驼:如何在处理CXF请求后返回有效的SOAP响应
我可以在soapUI中获得响应,但它不在有效的SOAP Envelope中。这意味着当在Java或.Net中处理响应时,会抛出异常,表示没有有效的Envelope名称空间。
如何保证发送的响应是SOAPMessage?
要生成我responde消息我有这样的方法:
public OnClientEventResponse process(Message message){
if(message.getBody().toString().contains("OnClientEventResponse")){
return (OnClientEventResponse) message.getBody();
}
OnClientEventResponse resp = new OnClientEventResponse();
resp.setReturn(Response.OK);
return resp;
}
在SOAPUI我得到这个:
<onClientEventResponse>
<Response>OK</Response>
</onClientEventResponse>
,但我需要的东西是这样的:
<soap:Envelope xmlns:soap="blabla/soap/envelope">
<soap:Headers/>
<soap:Body>
<onClientEventResponse>
<Response>OK</Response>
</onClientEventResponse>
<soap:Body>
<soap:Envelope>
我的web服务接口类是:
@WebService(name = "ClientEventNotifierEndpoint")
public interface ClientEventNotifierEndpoint {
@WebMethod(operationName = "onClientEvent", action = "urn:OnClientEvent")
@WebResult(name = "return")
public Response onClientEvent(@WebParam(name = "readerCode") String readerCode, @WebParam(name = "clientRfid") String clientRfid,
@WebParam(name = "eventType") String eventType, @WebParam(name = "dateTime") Date dateTime);
}
非常感谢你,我确实不再需要这个,但当我回家后我会尝试它,并会回复你。如果有效,我会选择它作为答案。感谢分享。 当时我解决它的方法是自己添加Envelope,非常粗糙,但是在当时做了诀窍。 – 2013-07-17 15:15:46