【发布时间】:2016-03-01 07:28:46
【问题描述】:
所以我在 NetBeans 8.1 中有一个 Web 服务,为此我编写了带有嵌入式 XSD 的 wsdl(以及一个外部引用)。 现在我需要能够在应用程序的其他实例上调用 SOAP 服务: 即让实例 X 调用实例 Y 上的方法,作为应用程序的次要目标。 我不喜欢使用 NetBeans 自动 SOAP 客户端向导,因为我将指向我正在构建的服务 - 在构建过程中它可能是鸡和蛋类型的东西。其次,我已经拥有了 Web 服务所需的所有 JAXB 类型,所以构建客户端应该很容易吧?
当我想使用 JAXB 将我的请求对象编组为 javax.xml.soap.SOAPBodyElement 时,我的麻烦就开始了(我目前的策略是使用 SAAJ 作为客户端部分),但是如何向编组器添加 Schema?架构嵌入在 wsdl 中,我不知道如何引用它。
我想我可以将架构部分拆分为一个单独的 XSD 文件,但我缺少@WebService 的注释选项,我可以在其中提供一个 XSD 文件,就像我可以提供一个 wsdl 文件(当前是 'wsdlLocation ' 指向嵌入的 wsdl 和 xsd)。
我想我可能不得不忍受不在客户端进行 XSD 验证(它在服务器端启用),因为从 wsdl 获取 Schema 对象似乎很棘手——这可能吗?
【问题讨论】:
-
我从未解决过这个问题,而是选择为特定用例使用专用接口,将子任务卸载到应用程序的其他实例(这是云/docker 之前的世界)。相反,我只是将对象作为 application/x-java-serialized-object 发送,处理它们,然后返回给我。整个任务也可以通过 soap ws 获得,但效率较低。
标签: java jaxb wsdl schema java-metro-framework