2

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

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

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

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

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

提前致谢,

现在,我想知道实现这一目标的最佳方法是什么。我应该在 web.xml 中定义两个不同的 servlet 并创建两组映射,还是简单地在 *-servlet.xml(spring 映射文件)中定义两个生成不同 wsdl 的 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>

这将为同一项目中的不同服务实现生成不同的 wsdls。

我不知道是否有更好的方法;就像将服务列表注入到为每个服务生成隔离 wsdls 的单个 bean 中一样。

于 2013-11-06T14:59:18.977 回答