したがって、Web サービス エンドポイントを公開するルートがあります。リクエストが受信された後、いくつかの情報をいくつかのキューに送信し、元の呼び出し元に応答を返したいと考えています。応答は、4 つの値を持つことができる列挙です(OK,NULL,RPT,NOK)
。
soapUI で応答を取得できますが、有効な SOAP エンベロープではありません。これは、応答が Java または .Net で処理されるときに、有効な Envelope 名前空間がないことを示す例外がスローされることを意味します。
送信される応答が SOAPMessage であることを保証するにはどうすればよいですか?
応答メッセージを生成するには、次のメソッドがあります。
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>
私のWebserviceインターフェースクラスは次のとおりです。
@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);
}