Java.xml.validation.Schema 来自 wsdl
Java.xml.validation.Schema from wsdl
所以我在 NetBeans 8.1 中有一个 Web 服务,为此我编写了带有嵌入式 XSD 的 wsdl(还有一个外部引用)。
现在我需要能够在应用程序的其他实例上调用 SOAP 服务:
即让实例 X 调用实例 Y 的方法,作为应用程序的次要目标。
我不喜欢使用 NetBeans 自动 SOAP 客户端向导,因为我会指向我正在构建的服务——在构建过程中它可能是先有鸡还是先有蛋的事情。其次,我已经有了 Web 服务使用的所有必需的 JAXB 类型,所以构建客户端应该很容易吧?
好吧,当我想使用 JAXB 将我的请求对象编组为 javax.xml.soap.SOAPBodyElement
(我当前的策略是将 SAAJ 用于客户端部分)时,我的麻烦就开始了,但是如何将架构添加到编组器?该模式嵌入在 wsdl 中,我不知道如何引用它。
我想我可以将架构部分拆分成一个单独的 XSD 文件,但我缺少 @WebService
的注释选项,我可以在其中提供一个 XSD 文件,就像我一样可以提供一个 wsdl 文件(目前 'wsdlLocation' 指向嵌入的 wsdl 和 xsd)。
我想我可能不得不忍受不在客户端进行 XSD 验证(它在服务器端启用),因为从 wsdl 获取 Schema 对象似乎很棘手 - 这可能吗不知何故?
您可以将 .wsdl 作为 InputStream 读取并将其转换为 DOMResult。然后,您可以从 DOMResult 中获取 "schema" 节点并将其转换为 DOMSource。这样,您就可以使用 Source[] 构造函数创建一个 Schema 对象。
我自己还没有让它工作,我有太多的导入,管理命名空间变得很麻烦。我在这方面找到的唯一代码是在 Mark Hansen 的 "SOA Using Java Web Services" 中,第 7.5.1 章:验证。我不认为我可以把代码放在这里,但是这个用例需要的所有代码都在那里。
所以我在 NetBeans 8.1 中有一个 Web 服务,为此我编写了带有嵌入式 XSD 的 wsdl(还有一个外部引用)。 现在我需要能够在应用程序的其他实例上调用 SOAP 服务: 即让实例 X 调用实例 Y 的方法,作为应用程序的次要目标。 我不喜欢使用 NetBeans 自动 SOAP 客户端向导,因为我会指向我正在构建的服务——在构建过程中它可能是先有鸡还是先有蛋的事情。其次,我已经有了 Web 服务使用的所有必需的 JAXB 类型,所以构建客户端应该很容易吧?
好吧,当我想使用 JAXB 将我的请求对象编组为 javax.xml.soap.SOAPBodyElement
(我当前的策略是将 SAAJ 用于客户端部分)时,我的麻烦就开始了,但是如何将架构添加到编组器?该模式嵌入在 wsdl 中,我不知道如何引用它。
我想我可以将架构部分拆分成一个单独的 XSD 文件,但我缺少 @WebService
的注释选项,我可以在其中提供一个 XSD 文件,就像我一样可以提供一个 wsdl 文件(目前 'wsdlLocation' 指向嵌入的 wsdl 和 xsd)。
我想我可能不得不忍受不在客户端进行 XSD 验证(它在服务器端启用),因为从 wsdl 获取 Schema 对象似乎很棘手 - 这可能吗不知何故?
您可以将 .wsdl 作为 InputStream 读取并将其转换为 DOMResult。然后,您可以从 DOMResult 中获取 "schema" 节点并将其转换为 DOMSource。这样,您就可以使用 Source[] 构造函数创建一个 Schema 对象。
我自己还没有让它工作,我有太多的导入,管理命名空间变得很麻烦。我在这方面找到的唯一代码是在 Mark Hansen 的 "SOA Using Java Web Services" 中,第 7.5.1 章:验证。我不认为我可以把代码放在这里,但是这个用例需要的所有代码都在那里。