1

wso2 esb でメッセージ フローを機能させるのに苦労しているので、基本的な通信を実装するには助けが必要です。

Service1 は整数を受け取りたい Service2 乱数を生成する

Service1 には InSequence: ログ、送信 (指定されたアドレスポイントへ) があります。OutSequence: ログ、送信

これは次のようになります。

 <proxy name="ClientAskNumber" transports="https http" startOnLoad="true"
        trace="disable">
        <target faultSequence="fault">
            <inSequence>
                <log level="full">
                    <property name="Insequence" value="***" />
                </log>
                <send>
                    <endpoint>
                        <address uri="http://localhost:8280/services/RandomNumbers" />
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <log level="full">
                    <property name="Outsequence" value="***" />
                </log>
                <send />
            </outSequence>
        </target>
    </proxy>

私はこの応答を持っています:<faultstring>System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: urn:mediate. at System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()....etc

その意味?他に何か不足していますか?助けてください。ありがとうございました

編集:

私は Wso2 ESB を研究しており、メッセージ通信を機能させる方法を理解する必要があるだけです。その後、さまざまな種類のメディエーションを追加しようとします。私はこのテクノロジーに慣れていないので、問題を分解しているだけであり、ご覧のとおり、それを機能させるのに本当に苦労しています...

EDIT2:*

<proxy xmlns="http://ws.apache.org/ns/synapse" name="ClientAskNumber" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target endpoint="RandomNumbers">
      <inSequence>
         <log>
            <property name="CLIENTASKS" value="******C_ASKS" />
         </log>
         <send>
            <endpoint key="RandomNumbers" />
         </send>
      </inSequence>
      <outSequence>
         <log>
            <property name="CLIENTRECEIVES" value="*******C_RECEIVES" />
         </log>
      </outSequence>
   </target>
</proxy>
4

2 に答える 2

3

これが他の誰かを助ける場合:問題"Server did not recognize the value of HTTP Header SOAPAction: urn:mediate..."は、次のように、Webサービスメソッド「getNumbers」を呼び出すためにヘッダーメディエーターをInSequenceに追加する必要があることです。

 <inSequence>
         <log>
            <property name="CLIENTASKS" value="******C_ASKS" />
         </log>
         <header name="Action" value="http://tempuri.org/getNumbers" />
         <send>
            <endpoint key="RandomNumbers" />
         </send>
      </inSequence>

そして、soapUIを介してこのリクエストを送信します。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Numbers xmlns="http://tempuri.org/" />
  </soap:Body>
</soap:Envelope>

これが、WSO2ESBで.Netソリューションを使用している他の人に役立つことを願っています(残念ながら、そこには多くの例がありません...)

PS彼の助けをくれたRathaに感謝します

于 2012-08-13T14:24:31.433 に答える
1

これは私があなたに言うことができるフローです..あなたはあなたの最初のサービスのエンドポイントとしてあなたの2番目のサービスを指す必要があります..上記の設定で

http://localhost:8280/services/RandomNumbers --->2nd service url
ClientAskNumber -->1st service..

これで、2 番目のサービスを実行するために必要な要求を送信できます (つまり、乱数を取得するため)。したがって、プロキシはそのエンドポイントに転送され、アウトシーケンスに応答を返します。ログメディエーターを使用しました。

取得しているエラー応答で、2 番目のサービスから取得していることを願っています。エンドポイントに正しいリクエストを送信しているかどうかを確認します

于 2012-08-13T10:05:31.297 に答える