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