实现Spring Web服务的更好方法

时间:2011-09-07 06:15:00

标签: java web-services spring

我发现用于定义spring webservice的XML配置是非常困难和冗余的。

例如:
展示WSDL


    <bean id="addService" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"
    p:portTypeName="add" p:locationUri="http://localhost:9080/WebServiceExample/"
    p:requestSuffix="-request" p:responseSuffix="-response">
        <property name="schema">
          <bean class="org.springframework.xml.xsd.SimpleXsdSchema" p:xsd="classpath:/WEB-INF/Addition.xsd" />
        </property>
        <property name="targetNamespace" value="addition.apps" />
    

和JAXB上下文(定义marshaller和unmarshallers)


    <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter">
        <property name="marshaller" ref="marshaller" />
        <property name="unmarshaller" ref="marshaller" />
    </bean>

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="contextPath" value="apps.addition"></property>
    </bean>

    <bean id="wsTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
        <property name="marshaller" ref="marshaller" />
        <property name="unmarshaller" ref="marshaller" />
    </bean>
    

假设我需要在应用程序中实现100个Web服务,然后涉及的复杂性是多少。 你能否建议我采用适当的方法来减少配置。任何注释驱动的方法?
提前致谢

2 个答案:

答案 0 :(得分:1)

JAX-WS和JAXB都支持注释,并受Spring Framework支持

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/remoting.html

JAX-WS(很久以前)使用Spring配置

的参考实现

http://www.springsource.org/node/396

有关JAX-WS的更多信息 http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/

Spring WS也有自己的注释支持

http://static.springsource.org/spring-ws/site/reference/html/server.html

更多关于Spring WS和JAX-WS之间的区别

http://forum.springsource.org/showthread.php?77968-Spring-WS-vs-JAX-WS

如果您因为“合同优先”方法而喜欢Spring WS,那么请看一下

http://rphgoossens.wordpress.com/2011/02/20/developing-a-contract-first-jax-ws-webservice/

答案 1 :(得分:0)

Springboot提供了支持创建Web服务的简便方法。 减少了像spring mvc(xml configuration)这样的配置部分。

https://spring.io/projects/spring-boot

https://spring.io/guides/gs/spring-boot/