如何为同一个 spring-WS 项目中的不同服务定义单独的 wsdl



我是Spring -WS的新手,所以我正在寻找一些关于Spring Web服务的建议。

我正在尝试为我的公司产品创建 Web 服务。有两个不同目标的两组服务。但我不想创建两个不同的项目,因为我不想将 2 *.war 传递给客户端,并且在较低级别也有很多相互依赖关系。

因此,我想要一些关于如何生成两个(或多个)WSDL 文件的建议/建议。 因此,可以从不同的位置访问两个不同的 WSDL 文件。

我尝试只使用一个servlet,创建并绑定其中的所有bean(spring-ws-servlet.xml),并尝试创建两个不同的动态wsdl(我创建了两个不同的模式文件并为"schema"设置了不同的值)。但它没有用。

那么,谁能指导我哪种方式在架构上更好并且符合最佳实践?

提前感谢,

现在,我想知道实现这一目标的最佳方法是什么。我应该在 web 中定义两个不同的 servlet.xml并创建两组映射,还是简单地定义两个在 *-servlet.xml(Spring 映射文件)中生成不同 wsdl 的 bean,如果那么如何,从而只创建一组映射。

最简单的,我想它的方法很乏味,但我所做的是我为不同的 1+ 服务添加了一个新的 bean; 我称之为连接配置文件(也称为应用程序.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。

最新更新