使用注释驱动的Spring WS 2.0.2和动态wsdl找不到端点映射

时间:2011-10-06 14:21:16

标签: annotations wsdl spring-ws

我使用注释驱动的Spring WS 2.0.2来创建一个简单的Web服务,但找不到enpoint映射。

输入和输出是jdom元素,以使其尽可能简单。

Web服务在Tomcat 6.0.29上运行Java 1.6,并返回错误 我的SoapUI服务测试的页面(请求的资源()不可用。

以下是我在记录中遇到的错误:

WARNING: No endpoint found for [SaajSoapMessage (http://foo.bar/myTest)myRequest]

以下是我认为端点映射的配置部分: (如果我缺少更多相关部分,请回复......)

架构(WEB-INF / xsd / myTest.xsd)

targetNamespace="http://foo.bar/myTest"

...

<element name="myRequest" type="tns:string"/>
<element name="myResponse" type="tns:string"/>

web.xml (WEB-INF / web.xml)

<servlet-class>
org.springframework.ws.transport.http.MessageDispatcherServlet
</servlet-class>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/spring/config.xml</param-value>
</init-param>
<init-param>
  <param-name>transformWsdlLocations</param-name>
  <param-value>true</param-value>
</init-param>

Spring config (/ WEB-INF/spring/config.xml)

<sws:annotation-driven/>

<sws:dynamic-wsdl id="myTest"
  portTypeName="myTest"
  localUri="/"
  targetNamespace="http://foo.bar/myTest">
  <sws:xsd location="/WEB-INF/xsd/myTest.xsd"/>
</sws:dynamic-wsdl>

端点(src / main / java / bar / foo / MyEndpoint.java)

@Endpoint
public class MyEndpoint{
  @PayloadRoot(localPart="myRequest",namespace="http://foo.bar/myTest")
  @ResponsePayload
  public Element mySearch( @RequestPayload Element myRequest){
     return myRequest;
  }
}

1 个答案:

答案 0 :(得分:3)

搜索我发现它包含在this answer

中的溶剂

添加

...
xmlns:context="http://www.springframework.org/schema/context"
...
xsi:schemaLocation=" ...
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd ... "

<context:component-scan base-package="bar.foo"/>

到我的Spring配置让servlet找到我的端点。

我的问题是,我找到的弹簧文档中没有包含示例代码 这一步及其相关性。

嗯 - 实际上我之前在教程中发现了这个代码snipplet,但它有点超载了我不需要的功能,而且在官方文档中没有解释为什么它是必要的。