我正在采取Spring Boot的第一步并创建SOAP Web服务。出现错误“找不到SaajSoapMessage的端点映射”
继生成SOAP Web服务(https://spring.io/guides/gs/producing-web-service/)教程,我设法创建了一个可以工作的简单Web服务。
在该示例上展开,现在我试图创建一个具有多个操作的Web服务。 这次我使用wsdl来生成所有的JAXB类。 所有东西都正确生成,我可以调用Web服务并获取wsdl。
然后我用SOAP UI产生基于返回的WSDL我的方法的样品要求,但当我尝试执行他们,我得到的错误(实际上是警告):
WARN 10280 --- [ NIO-8080-EXEC-1] osws.server.EndpointNotFound:未找到[SaajSoapMessage平]
而且我一直停留在此的最后两天端点映射。 认为问题可能是我的端点方法的参数不匹配,我尝试创建一个接收单个字符串的操作(Ping),但即使那个失败。
我正在使用一个配置器类和所有的例子,我可以找到使用配置文件(web.xml和servlet文件),我不能把它们放在一起来解决这个问题。
这是我的配置类(我已经删除了进口,节省空间):
package ws;
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/SVN/*");
}
@Bean (name = "SVNClient")
public Wsdl11Definition defaultWsdl11Definition() {
SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition();
wsdl11Definition.setWsdl(new ClassPathResource("/wsdl/SVNClient.wsdl"));
return wsdl11Definition;
}
}
而这正是我有我的终点(我已经删除了进口,以节省空间)类:
package ws;
@Endpoint
public class WebServiceEndPoint {
private static final String NAMESPACE_URI = "http://gestion.svn.client";
@Autowired
public WebServiceEndPoint() {
System.out.println("Entramos en WebServiceEndPoint");
}
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "Ping")
public @ResponsePayload PingResponse ping() {
PingResponse resposta = new PingResponse();
resposta.setOut("I'm in");
return resposta;
}
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "getLog")
public @ResponsePayload GetLogResponse getLog(@RequestPayload InputParameters wsPayload) {
GetLogResponse response = new GetLogResponse();
response.setCODERROR("0");
response.setMENSAJEERROR("I'm in");
return response;
}
我的疑问是:
是@Endpoint
和@PayloadRoot
注释足以端点Web服务操作映射?我的意思是:
- 是否有方法或参数声明使得它们与Web服务定义不匹配?
- 还是我还需要一些配置文件(web.xml,servlets或其他)来执行此映射?