我正在尝试基于定义一个Request和一个Response的WSDL创建WS。传入请求应映射到端点,具体取决于SOAP消息中定义的SOAPAction。为了实现这一点,我试图在我的servlet.xml配置文件中使用SoapActionEndpointMapping并定义映射,如Spring documentation中所述。
<bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping">
<property name="mappings">
<props>
<prop key="http://myCompany/MyService/MyRequest/mySoapActionOne">myFirstEndpoint</prop>
<prop key="http://myCompany/MyService/MyRequest/mySoapActionTwo">mySecondEndpoint</prop>
</props>
</property>
我的端点扩展了AbstractMarshallingPayloadEndpoint,应该能够处理请求。
问题是,当我尝试发送请求(使用SoapUI)时,我在日志中收到以下错误:
WARN [EndpointNotFound] No endpoint mapping found for [SaajSoapMessage {http://schemas.mycompany/MyService}MyRequest]
我早先使用PayloadRootQNameEndpointMapping取得了巨大的成功,但是无法使用它。
感谢任何帮助。
问候。
答案 0 :(得分:0)
您是否还定义了处理程序适配器bean?您需要一个才能使用MarshallingPayloadEndpoint,以便spring知道如何执行编组。适配器的名称类似于MarshallingEndpointHandlerAdapter或类似名称。
答案 1 :(得分:0)
在SOAP客户端(SOAPUI)中,您需要将SOAPAction标头添加到您的请求中,以便为spring提供要在其映射中使用的SOAP操作。
E.g。的SOAPAction = HTTP:// myCompany的/为MyService / MyRequest / mySoapActionOne
您正在使用哪种类型的端点应该没有任何区别,因为目前您正在收到404响应 - 您的请求未找到通往任何端点的路径。