2017-05-29 75 views
1

我正在采取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或其他)来执行此映射?

回答

0

重建wsdl后,它开始工作。 我猜有些事情是不对的,它不符合我的端点定义。