发现错误“找不到SaajSoapMessage的端点映射”

时间:2017-05-29 15:48:57

标签: spring web-services spring-boot

我正在迈出Spring Boot的第一步并创建一个SOAP Web服务。

制作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] o.s.ws.server.EndpointNotFound:找不到[SaajSoapMessage Ping]的端点映射

过去两天我一直被困在这里。 认为问题可能与我的端点方法的参数不匹配,我尝试创建一个接收单个字符串的operationg(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,servlet或其他)来执行此映射?

1 个答案:

答案 0 :(得分:0)

重建wsdl后,它开始工作了。 我想有些东西不对,它与我的终点定义不匹配。