SimpleJaxWsServiceExporter这个组件怎么添加
时间: 2024-02-20 20:59:19 浏览: 102
SOAP_JAVA:来自Noel Vaes的Spring 5.0教学大纲的练习中的Java SOAP服务和客户端
SimpleJaxWsServiceExporter 是 Spring 框架提供的一个组件,可以将 Java Web Service 导出为 SOAP 服务。要使用这个组件,你需要在你的项目中添加 Spring Web Services 依赖。具体步骤如下:
1. 在 Maven 项目中,在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
```
2. 在 Spring 配置文件中添加 SimpleJaxWsServiceExporter 组件:
```xml
<bean id="simpleJaxWsServiceExporter" class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
<property name="baseAddress" value="http://localhost:8080/"/>
</bean>
```
其中,baseAddress 属性是可选的,如果设置了这个属性,那么导出的 SOAP 服务将监听在指定的地址上。如果不设置这个属性,那么服务将监听在默认地址上。
3. 将需要导出为 SOAP 服务的 Java Web Service 注册到 SimpleJaxWsServiceExporter 中:
```xml
<bean id="myService" class="com.example.MyServiceImpl"/>
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="interceptors">
<list>
<ref bean="validatingInterceptor"/>
</list>
</property>
</bean>
<bean id="validatingInterceptor" class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="xsdSchema" value="classpath:/com/example/myschema.xsd"/>
<property name="validateRequest" value="true"/>
<property name="validateResponse" value="true"/>
</bean>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12"/>
</property>
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.example"/>
</bean>
<bean class="org.springframework.ws.server.endpoint.adapter.MessageEndpointAdapter">
<property name="defaultEndpoint" ref="myServiceEndpoint"/>
</bean>
<bean id="myServiceEndpoint" class="org.springframework.ws.server.endpoint.MethodEndpoint">
<constructor-arg ref="myService"/>
<constructor-arg value="myMethod"/>
<constructor-arg ref="marshaller"/>
<constructor-arg ref="marshaller"/>
<constructor-arg ref="messageFactory"/>
</bean>
<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
<property name="baseAddress" value="http://localhost:8080/"/>
<property name="endpointMappings">
<list>
<ref bean="payloadRootAnnotationMethodEndpointMapping"/>
</list>
</property>
<property name="messageFactory" ref="messageFactory"/>
<property name="transportGuarantee" value="NONE"/>
<property name="transportAuthentication" value="NONE"/>
<property name="transportSecurity" value="NONE"/>
<property name="interceptors">
<list>
<ref bean="validatingInterceptor"/>
</list>
</property>
</bean>
```
在这个配置文件中,我们首先定义了一个 MyServiceImpl 类,它是我们需要导出为 SOAP 服务的 Java Web Service 的实现类。然后,我们定义了一个 PayloadRootAnnotationMethodEndpointMapping 组件,用于将请求映射到相应的 Java 方法上。接着,我们定义了一个 PayloadValidatingInterceptor 组件,用于验证 SOAP 请求和响应的有效性。最后,我们将这些组件注册到 SimpleJaxWsServiceExporter 中,从而导出我们的 Java Web Service 为 SOAP 服务。
阅读全文