2

BPS をセットアップし、アプリケーション サーバーでサービスを呼び出すために使用できるいくつかの BPEL プロセスを作成しました。Labview サーバーへのエンドポイントを使用する ESB 上に REST プロキシ サービスを作成しました。Labview には、毎秒ランダムな値を生成する非常に基本的な REST サービスがあります。次のように REST サービスにアクセスできますhttp://localhost:8000/Maths/random。これにより、ランダムな値で次の出力が生成されます

RValue:19.000000

Gadget サーバーを介してこのサービスにアクセスし、WSO2 グラフィックス フレームワークを使用して値をグラフとして表示することに成功しました。

しかし、同じプロキシ サービスを BPEL プロセスから呼び出そうとすると問題が発生します。ESB からプロキシ サービス用の wsdl ファイルを生成しました。この wsdl ファイルは、ポート接続などに使用されます。パラメーターや要素のない「仲介」操作が 1 つだけあります。BPS サーバーがサービスを呼び出すためのいくつかのチュートリアルに従いましたが、これまでのところ成功していません。誰かがこれを行う方法を教えてくれますか、または同様のチュートリアルを教えてくれますか? どうもありがとう。

以下のU Razaは、私が得るBPSエラーです

[2012-03-15 18:22:33,265] 情報 - BpelServerImpl - 登録されたプロセス { http://areasearvice.bpel.bps}AreaService-14. [2012-03-15 18:22:42,282] INFO - CarbonAuthenticationUtil - IP アドレス 143.53.207.235 [2012-03-15 18: 23:09,041] エラー - BpelObjectFactory$BOMSAXErrorHandler - null:file:///D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:88:56:cvc -complex-type.3.2.2: 属性「xml:space」は要素「bpel:literal」に表示できません。[2012-03-15 18:23:09,043] 警告 - BpelObjectFactory - 解析中の検証エラー、-Dorg.apache.ode.compiler.failOnValidationErrors=false スイッチによる継続 [2012-03-15 18:23:09,046] 情報- BpelC - info: [CompilingProcess] BPEL プロセスをコンパイルしています。[2012-03-15 18:23:09,116] 情報 - WSDLRegistry - ファイルの WSDL:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1。33183578879275E12/BPELREST/GetLVRandomProxy.wsdl は重複インポートです。ドキュメントはすべて異なる名前空間にある必要があります (これは適切ではありませんが、それでも機能します)。[2012-03-15 18:23:09,116] 情報 - WSDLRegistry - ファイルの WSDL:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl は既にありますインポートされた場合、これは循環参照を示します。[2012-03-15 18:23:09,134] エラー - BpelC - ファイル:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72: エラー: [CopyToMessageFromNonMessage] メッセージ変数へのコピー RestProxyPLRequest には、右辺値のメッセージが必要です。[2012-03-15 18:23:09,139] エラー - BpelC - ファイル:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95: エラー: [CopyFromMessageToNonMessage] メッセージ変数からのコピー RestProxyPLResponse には左辺値のメッセージが必要です。[2012-03-15 18:23:09,143] エラー - BPELUploadExecutor - BPEL プロセスのコンパイルの失敗。org.apache.ode.bpel.compiler.api.CompilationException: エラー: [CompilationErrors] コンパイルが 2 つのエラーで完了しました: file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/ 1.33183578879275E12/BPELREST/RestfulProxy.bpel:72: エラー: [CopyToMessageFromNonMessage] メッセージ変数へのコピー RestProxyPLRequest には r 値のメッセージが必要です。file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95: エラー: [CopyFromMessageToNonMessage] メッセージ変数からのコピー RestProxyPLResponse には l-価値。org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:

4

2 に答える 2

4

これを試してみたところ、次のプロキシ サービスを呼び出すための BPEL サンプルが提供されました。サンプルアーティファクトはこちらからご覧ください。注 - goodreadsから API キーを取得し、MyKeyHere.

<proxy name="GetProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <inSequence>
                <log level="full"/>
                <property name="HTTP_METHOD" value="GET" scope="axis2"/>
                <property name="REST_URL_POSTFIX" value="/4776766.xml?key=MyKeyHere" scope="axis2"/>
                <send>
                    <endpoint>
                        <address uri="http://www.goodreads.com/author/list"/>
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
    </proxy>
于 2012-03-22T07:05:37.483 に答える
0

これは、GET リクエストで機能した ESB プロキシ構成です。

<proxy name="GetProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <inSequence>
                <log level="full"/>
                <property name="HTTP_METHOD" value="GET" scope="axis2"/>
                <property name="REST_URL_POSTFIX" value="/4776766.xml?key=MyKeyHere" scope="axis2"/>
                <send>
                    <endpoint>
                        <address uri="http://www.goodreads.com/author/list"/>
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
    </proxy>

これは POST リクエスト用です

<proxy name="TestProxy" transports="https http" startOnLoad="true" trace="disable">
    <target>
        <inSequence>
            <log level="full"/>
            <property name="messageType" value="application/xml" scope="axis2"/>
            <property name="ContentType" value="application/xml" scope="axis2"/>
            <send>
                <endpoint>
                    <address uri="http://localhost:8080/TestServlet/emal/xml_api"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <property name="messageType" value="text/xml" scope="axis2"/>
            <property name="ContentType" value="text/xml" scope="axis2"/>
            <send/>
        </outSequence>
    </target>
</proxy>

ところで、BPS 経由ではなく、ガジェット サーバー経由でそのプロキシ サービスに正常にアクセスしたということですか? BPS から取得した ESB プロキシ構成とエラー ログを投稿できますか?

于 2012-03-15T07:06:07.970 に答える