2

Spring -WS は初めてなので、Spring Web サービスに関する提案を探しています。

会社の製品の Web サービスを作成しようとしています。2 つの異なるターゲットに対して 2 つのサービス セットがあります。しかし、2 つの異なるプロジェクトを作成したくありません。2 つの *.war をクライアントに渡したくないし、下位レベルにも多くの相互依存関係があるからです。

そこで、2 つ (または複数) の WSDL ファイルを生成する方法について提案/アドバイスをお願いします。したがって、2 つの異なる WSDL ファイルは、異なる場所からアクセスできます。

サーブレットを 1 つだけ使用して、その中のすべての Bean を作成してバインドし (spring-ws-servlet.xml)、2 つの異なる動的 wsdl を作成しようとしました (2 つの異なるスキーマ ファイルを作成し、「スキーマ」に異なる値を設定しました)。しかし、うまくいきませんでした。

では、どの方法がアーキテクチャ的に優れており、ベストプラクティスに沿っているか教えてもらえますか?

前もって感謝します、

今、これを達成するための最良の方法は何だろうと考えていました。web.xml で 2 つの異なるサーブレットを定義して 2 つのマッピング セットを作成するか、*-servlet.xml (Spring マッピング ファイル) で異なる wsdl を生成する 2 つの Bean を単純に定義する必要があります。

4

1 に答える 1

0

最も簡単なのは、退屈なアプローチだと思いますが、私がしたことは、別の 1+ サービスに新しい Bean を追加したことです。私はこれを配線構成ファイル (application.xml、spring-config.xml とも呼ばれます) と呼んでいます。

これが私が持っていたものです:

<bean id="SmallBusinessAccount" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">
    <property name="schemaCollection">
        <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
            <property name="inline" value="true" />
            <property name="xsds">
                <list>
                    <value>schemas/SmallBusinessAccountSerivceOperations.xsd</value>
                </list>
            </property>
        </bean>
    </property>
    <property name="portTypeName" value="SmallBusinessAccountService"/>
    <property name="serviceName" value="SmallBusinessAccountServices" />
    <property name="locationUri" value="/endpoints"/>
</bean>

<bean id="CreditManagement" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">
    <property name="schemaCollection">
        <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
            <property name="inline" value="true" />
            <property name="xsds">
                <list>
                    <value>schemas/CreditManagementServiceOperations.xsd</value>
                </list>
            </property>
        </bean>
    </property>
    <property name="portTypeName" value="CreditManagementService"/>
    <property name="serviceName" value="CreditManagementServices" />
    <property name="locationUri" value="/endpoints"/>
</bean>

これにより、同じプロジェクト内の異なるサービス実装に対して異なる wsdl が生成されます。

より良いアプローチがあるかどうかはわかりません。サービスのリストを単一の Bean に注入して、それらのサービスごとに分離された wsdl を生成するようなものです。

于 2013-11-06T14:59:18.977 に答える