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 服务示例。