325.12. 公开 Web 服务
要使用此组件公开 Web 服务,您首先需要设置 MessageDispatcher 来查找 Spring XML 文件中的端点映射。如果您计划在 servlet 容器中运行,您可能需要使用 web.xml
中配置的 MessageDispatcherServlet
。
默认情况下,MessageDispatcherServlet
将查找名为 /WEB-INF/spring-ws-servlet.xml
的 Spring XML。要将 Camel 与 Spring-WS 搭配使用,该 XML 文件中唯一的强制 bean 是 CamelEndpointMapping
。此 bean 允许 MessageDispatcher
将 Web 服务请求分配给您的路由。
web.xml
<web-app> <servlet> <servlet-name>spring-ws</servlet-name> <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-ws</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
spring-ws-servlet.xml
<bean id="endpointMapping" class="org.apache.camel.component.spring.ws.bean.CamelEndpointMapping" /> <bean id="wsdl" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> <property name="schema"> <bean class="org.springframework.xml.xsd.SimpleXsdSchema"> <property name="xsd" value="/WEB-INF/foobar.xsd"/> </bean> </property> <property name="portTypeName" value="FooBar"/> <property name="locationUri" value="/"/> <property name="targetNamespace" value="http://example.com/"/> </bean>
有关设置 Spring-WS 的更多信息,请参阅 Writing Contract-First Web Services。基本段落 3.6 "Implementing the Endpoint" 由此组件处理(特别是段落 3.6.2"向 Endpoint 进行"恢复消息"是 CamelEndpointMapping
所在的位置。另外,请不要忘记检查 Camel 发行版中包含的 Spring Web 服务示例。