324.12. 公开 Web 服务
要使用此组件公开 Web 服务,首先需要设置 MessageDispatcher 以在 Spring XML 文件中查找端点映射。如果您计划在 servlet 容器内运行,您可能想使用在 web.xml
中配置的 MessageDispatcherServlet
。
默认情况下,MessageDispatcherServlet
将查找名为 /WEB-INF/spring-ws-servlet.xml
的 Spring XML。要将 Camel 与 Spring-WS 一起使用,则 XML 文件中唯一必需是 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 的更多信息,请参阅指定承包商的 Web 服务。3.6 "创建端点"的段落由这个组件处理(特别是 3.6.2 段落 3.6.2 "从 Message to the Message to the Endpoint"中称为 CamelEndpointMapping
处)。另外,不要忘记查看 Camel 分发中包含的 Spring Web 服务示例。