0

エンドポイントに Apache Camel および CXF Spring 構成を使用しています。特定のメソッドを呼び出すにはどうすればよいですか。つまり、10 個の cxfEndpoint をサイトに公開する必要がある 10 個のメソッドで wsdl が定義されている場合、または何らかの方法で呼び出しによってパラメータ化できる場合は? そのサービスで呼び出したい「メソッド名」を挿入するにはどうすればよいですか?

 <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
        wsdlURL="testutils/hello_world.wsdl"
        serviceClass="org.apache.hello_world_soap_http.Greeter"
        endpointName="s:SoapPort"
        serviceName="s:SOAPService"
    xmlns:s="http://apache.org/hello_world_soap_http" />
4

1 に答える 1

1

したがって、5 つの操作で WSDL を作成すると、CXF で WSDL2JAVA ツールを実行すると、これらの 5 つの操作が公開されます。

次のように、2 つの操作を持つ WSDL があるとします。

  1. GetClient
  2. ListClient

headers.operationNameキャメルでは、このルートをキャメル コンシューマーとして公開すると、メッセージのプロパティをチェックすることで、どの操作が実行されたかを確認できます。

たとえば、ユーザーがGetClient操作を実行するheaders.operationNameと、 は string と等しくなります"GetClient"

したがって、次のようなルートを作成して、さまざまな操作を処理できます。

    <from uri="cxf:bean:AccountsService?dataFormat=POJO"/>
    <doTry>
        <choice>
            <when>
                <simple>${headers.operationName} == 'GetClient'</simple>
                <bean ref="GetClientBean"/>
            </when>
            <when>
                <simple>${headers.operationName} == 'ListClient'</simple>
                <bean ref="ListClientBean"/>
            </when>
            <when>
                <simple>${headers.operationName} == 'SomeOtherOperation'</simple>
                <bean ref="SomeOtherBean"/>
            </when>
        </choice>

公開する操作を制限したい場合は、公開したくない操作に対して例外をスローするか、エラー メッセージを作成するだけです。

楽しむ!

于 2013-09-13T00:57:43.823 に答える