wsdl中的Java.xml.validation.Schema

wsdl中的Java.xml.validation.Schema,java,jaxb,wsdl,schema,java-metro-framework,Java,Jaxb,Wsdl,Schema,Java Metro Framework,因此,我在NetBeans 8.1中有一个web服务,为此我编写了带有嵌入式XSD的wsdl(还有一个外部引用)。 现在,我需要能够在应用程序的其他实例上调用SOAP服务: i、 e.将实例X调用实例Y上的方法作为应用程序的次要目标。 我不喜欢使用NetBeans自动SOAP客户端向导,因为我会指向我正在构建的服务——在构建过程中,它可能是鸡和蛋类型的东西。其次,我已经拥有了web服务使用的所有必需的JAXB类型,所以构建客户机应该很容易,对吗 当我想使用JAXB将我的请求对象封送到javax.

因此,我在NetBeans 8.1中有一个web服务,为此我编写了带有嵌入式XSD的wsdl(还有一个外部引用)。 现在,我需要能够在应用程序的其他实例上调用SOAP服务: i、 e.将实例X调用实例Y上的方法作为应用程序的次要目标。 我不喜欢使用NetBeans自动SOAP客户端向导,因为我会指向我正在构建的服务——在构建过程中,它可能是鸡和蛋类型的东西。其次,我已经拥有了web服务使用的所有必需的JAXB类型,所以构建客户机应该很容易,对吗

当我想使用JAXB将我的请求对象封送到
javax.xml.soap.SOAPBodyElement
(我当前的策略是将SAAJ用于客户端部分)时,我的问题就开始了,但是如何向封送器添加模式呢?模式嵌入到wsdl中,我不知道如何引用它。 我想我可以将模式部分拆分为一个单独的XSD文件,但是我缺少了
@WebService
的注释选项,在这里我可以提供一个XSD文件,就像我可以提供一个wsdl文件一样(当前“wsdlLocation”在嵌入时同时指向wsdl和XSD)


我想我可能不得不接受不在客户端进行XSD验证(它在服务器端启用),因为从wsdl获取模式对象似乎很棘手-这可能吗?

您可以将.wsdl作为输入流读取,并将其转换为DOMDResult。然后,您可以从DOMResult中获取“schema”节点,并将其转换为DOMSource。这样,您就可以使用Source[]构造函数创建一个Schema对象


我自己还没有让它工作,我有太多的导入,管理名称空间成了地狱。我在上面找到的唯一代码是MarkHansen的“使用JavaWeb服务的SOA”,第7.5.1章:验证。我不认为我可以把代码放在这里,但是这个用例应该需要的所有代码都在这里。

您可以将.wsdl作为输入流读取,并将其转换为DOMResult。然后,您可以从DOMResult中获取“schema”节点,并将其转换为DOMSource。这样,您就可以使用Source[]构造函数创建一个Schema对象


我自己还没有让它工作,我有太多的导入,管理名称空间成了地狱。我在上面找到的唯一代码是MarkHansen的“使用JavaWeb服务的SOA”,第7.5.1章:验证。我不认为我可以把代码放在这里,但是这个用例应该需要的所有代码都在那里。

我从来没有解决过这个问题,而是选择为特定用例使用一个专用接口,该接口将子任务卸载到应用程序的其他实例(这是前云/docker世界)。相反,我只是将对象作为application/x-java-serialized-object发送,处理它们,然后返回给我。整个任务也可以通过soap ws获得,但效率较低。我从未解决过这一问题,而是选择为特定用例使用专用接口,该接口将子任务卸载到应用程序的其他实例(这是前cloud/docker world)。相反,我只是将对象作为application/x-java-serialized-object发送,处理它们,然后返回给我。整个任务也可以通过soap ws实现,但效率较低。感谢您的提示-我接受答案,但同时我走了另一条路-因为这只是内部调用,我只是实现了一个servlet来接收ObjectStreams-它的性能要好得多,性能在这里至关重要。感谢您的提示-我接受答案,但同时我走了另一条路-因为这只是内部调用,我刚刚实现了一个servlet来接收ObjectStreams-它的性能要好得多,性能在这里至关重要。