324.12. 웹 서비스 노출
이 구성 요소를 사용하여 웹 서비스를 공개하려면 먼저 Spring XML 파일에서 끝점 매핑을 찾으려면 MessageDispatcher 를 설정해야 합니다. 서블릿 컨테이너 내부에서 실행하려는 경우 web.xml 에 구성된 MessageDispatcherServlet 을 사용할 수 있습니다.
기본적으로 MessageDispatcherServlet 은 /WEB-INF/spring-ws-servlet.xml 이라는 Spring XML을 찾습니다. Spring-WS와 함께 Camel을 사용하려면 XML 파일의 유일한 필수 빈은 CamelEndpointMapping 입니다. 이 빈을 사용하면 MessageDispatcher 가 웹 서비스 요청을 경로에 디스패치할 수 있습니다.
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 설정에 대한 자세한 내용은 Contract-First Web Services 작성에서 확인할 수 있습니다. 기본적으로 3.6 "EndpointMapping"은 이 구성 요소에 의해 처리됩니다 (특히 3.6.2 "메드 포인트로 메시지 아웃"은 CamelEndpointMapping 이 들어 있습니다). 또한 Camel 배포에 포함된 Spring Web Services 예제를 확인하는 것을 잊지 마십시오.