发布后更改WSDL

时间:2012-09-05 14:39:02

标签: java xsd jaxb wsdl

当我发布从WSDL创建的Web服务时,发布后创建的WSDL与原始WSDL不同。区别在于发布后创建的WSDL / XSD具有包含所有根元素的附加元素(ARG0)。

由于上述原因,我无法将原始WSDL / XSD共享给客户端开发人员,因为原始WSDL和发布后创建的WSDL / XSD不同。

我使用Java作为编程语言和JAX-WS。

使用API​​ javax.xml.ws.Endpoint发布Web服务,而无需任何应用程序服务器。

Endpoint.publish(URL,webserviceinstance)

提前致谢。

3 个答案:

答案 0 :(得分:1)

由于问题是不必要的包装问题,我专注于包装注释。最后我发现这个问题有一个相关的注释。在Class的开头添加以下注释语句后,问题已经解决。

@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
public class WebServiceHandler implements WebService {
//....
}

从现在开始,我可以创建从原始WSDL到已部署机器的成功请求。

答案 1 :(得分:0)

如果您发布wsdl,可以进行更好的评估。鉴于您正在看到一个意外的包装器,我的猜测是jax-ws正在以不同于您想要的方式解释您的原始wsdl。这里的页面(http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/)讨论了不同的wsdl配置。我的建议是你遵循使用document / literal / wrapped惯例的说明,因为它或多或少是基于肥皂的服务的主流。

生成的已发布wsdl在服务名称,端口名称或命名空间方面仍然可能略有不同,除非您使用@Webservice批注属性将这些属性强制为特定值,但它们将保持一致,以便您可以提供向您的客户发布了wsdl并期望成功。

答案 2 :(得分:0)

此类问题的最常见原因是实现Web服务的类没有带有正确@WebService属性的endpointInterface注释。实际上,实现从WSDL生成的端点接口是不够的。