1

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

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

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

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

Endpoint.publish(url,webserviceinstance)

提前致谢。

4

3 回答 3

1

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

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

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

于 2012-09-07T07:01:17.463 回答
0

如果您发布 wsdl,则可以进行更好的评估。鉴于您看到了一个意想不到的包装器,我的猜测是 jax-ws 对原始 wsdl 的解释与您的预期不同。此处的页面 ( http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ ) 讨论了不同的 wsdl 配置。我的建议是您遵循使用文档/文字/包装约定的说明,因为它或多或少是基于肥皂的服务的主流。

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

于 2012-09-06T04:14:13.443 回答
0

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

于 2012-09-06T19:15:43.263 回答