Spring Web Services まとめ その5
エンドポイントマッピング(Chapter5)
サービスの入力メッセージとendpointの実装をマッピングするためには、エンドポイントマッピングを利用する。
エンドポイントマッピングとしては、ペイロードを元にマッピングするPayloadRootQNameEndpointMappingや、SOAP Actionを元にマッピングするSoapActionEndpointMapping*1などがあらかじめ用意されている。以下は、それぞれのマッピングの定義例である。
- PayloadRootQNameEndpointMappingの場合
<beans> <bean id="endpointMapping" class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> <property name="mappings"> <props> <prop key="{http://samples}orderRequest">getOrderEndpoint</prop> <prop key="{http://samples}order">createOrderEndpoint</prop> </props> </property> </bean> <bean id="getOrderEndpoint" class="samples.GetOrderEndpoint"> <constructor-arg ref="orderService"/> </bean> <bean id="createOrderEndpoint" class="samples.CreateOrderEndpoint"> <constructor-arg ref="orderService"/> </bean> <beans>
- SoapActionEndpointMappingの場合
<beans> <bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping"> <property name="mappings"> <props> <prop key="http://samples/RequestOrder">getOrderEndpoint</prop> <prop key="http://samples/CreateOrder">createOrderEndpoint</prop> </props> </property> </bean> <bean id="getOrderEndpoint" class="samples.GetOrderEndpoint"> <constructor-arg ref="orderService"/> </bean> <bean id="createOrderEndpoint" class="samples.CreateOrderEndpoint"> <constructor-arg ref="orderService"/> </bean> </beans>
また、その4で利用した@Endpointアノテーションもエンドポイントマッピングの1種である。@Endpointアノテーションは、PayloadRootAnnotationMethodEndpointMappingまたはSoapActionAnnotationMethodEndpointMappingを利用している。