2

サンプルを使用する場合、axis2Server サービスは非常に優れています。しかし、javax を使用して独自の Web サービスを作成したときに、問題が発生しました。

wso2 esb 4.60のデフォルト構成を使用しました

ウェブサービス:

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public class Lpu {
    public boolean scheduleAnAppointment(@WebParam(name = "time") Integer time) {
        return true;
    }
}

Web サービスの開始:

import javax.xml.ws.Endpoint;

public class Server {
    public static void main(String[] args)
    {
        Endpoint.publish("http://localhost:8090/WebServices/lpu", new Lpu());
    }
} 

構成 esb:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
   <sequence name="main">
      <in>
         <log level="full"/>
         <send>
            <endpoint>
               <address uri="http://localhost:8090/WebServices/lpu"/>
            </endpoint>
         </send>
      </in>
      <out>
         <log level="full"/>
         <send/>
      </out>
   </sequence>
</definitions>

応答:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <axis2ns1:binary xmlns:axis2ns1="http://ws.apache.org/commons/ns/payload">PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxTOkVudmVsb3BlIHhtbG5zOlM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIj48UzpCb2R5PjxuczI6c2NoZWR1bGVBbkFwcG9pbnRtZW50UmVzcG9uc2UgeG1sbnM6bnMyPSJodHRwOi8vZmVyLndlYnNlcnZpY2UvIj48cmV0dXJuPmZhbHNlPC9yZXR1cm4+PC9uczI6c2NoZWR1bGVBbkFwcG9pbnRtZW50UmVzcG9uc2U+PC9TOkJvZHk+PC9TOkVudmVsb3BlPg==</axis2ns1:binary>
   </soapenv:Body>
</soapenv:Envelope>

私は取得したい:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:scheduleAnAppointmentResponse xmlns:ns2="http://lpu.webservice/">
         <return>true</return>
      </ns2:scheduleAnAppointmentResponse>
   </S:Body>
</S:Envelope>

私のお願い

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fer="http://lpu.webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <lpu:scheduleAnAppointment>
         <time>12</time>
      </lpu:scheduleAnAppointment>
   </soapenv:Body>
</soapenv:Envelope>
4

2 に答える 2

1

ESB 4.6.0 は、メッセージをビルドしないパススルー トランスポートでリリースされました。そのため、シーケンスでログ メディエーターを使用すると、バイナリ レスポンスが得られます。ただし、クライアント側では、推奨される形式で応答を受け取る必要があります。

NIO トランスポートに切り替えると、シーケンスで実際のメッセージ ペイロードも取得できます。そのためには、axis2 構成 (axis2.conf) でトランスポートの送信者と受信者を編集する必要があります。

于 2013-06-10T13:51:05.253 に答える