Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Jax-B与Jax WS结合使用以返回复杂类型_Java_Netbeans_Jaxb_Jax Ws - Fatal编程技术网

Java 将Jax-B与Jax WS结合使用以返回复杂类型

Java 将Jax-B与Jax WS结合使用以返回复杂类型,java,netbeans,jaxb,jax-ws,Java,Netbeans,Jaxb,Jax Ws,我相信你会在这里听到很多关于这类事情的问题,但我发现的答案似乎都不能解决我的问题,所以我希望我能得到一些具体的答案 我有一个由客户端和服务器组成的项目。服务器连接到数据库,客户端可以通过wsdl文件调用服务器中的方法。这很好,但是服务器只能返回简单的类型和列表。我查阅了如何处理自定义类型,然后我被引导到JaxB,这似乎正是我要寻找的。不幸的是,对于如何使用它,我有点困惑。我正在使用NetBeans IDE(6.9.1),这使得处理wsdl文件更容易,尽管我已经读到,一旦wsdl端正常工作,从命令

我相信你会在这里听到很多关于这类事情的问题,但我发现的答案似乎都不能解决我的问题,所以我希望我能得到一些具体的答案

我有一个由客户端和服务器组成的项目。服务器连接到数据库,客户端可以通过wsdl文件调用服务器中的方法。这很好,但是服务器只能返回简单的类型和列表。我查阅了如何处理自定义类型,然后我被引导到JaxB,这似乎正是我要寻找的。不幸的是,对于如何使用它,我有点困惑。我正在使用NetBeans IDE(6.9.1),这使得处理wsdl文件更容易,尽管我已经读到,一旦wsdl端正常工作,从命令行传递复杂类是相当简单的

我想做的是让服务器返回一个类——它只包含数据——客户端可以读取和使用

我已经做了以下几件事,但显然我在哪里出了问题

  • 我在服务器端有一个名为Customer的类,它是在客户端调用特定方法时构造和返回的
  • 客户端显然无法正确解释此类
  • 我使用schemagen从Customer类创建了一个XML模式。然后,我使用netbeans向导将模式绑定到客户机中的一个类
  • 我想这就是我困惑的地方。我想从服务器上解组xml响应,并使用它在客户机上创建一个新对象。我使用的是“jaxbu”netbeans快捷方式,它可以扩展为一些代码,但我不确定如何将返回的对象放入解组器。这有什么意义吗
“jaxbu”生成的代码类似于下面的try块:

javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(c.getClass().getPackage().getName());
javax.xml.bind.Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
c = (CustomerInfo) unmarshaller.unmarshal(new java.io.File("File path"));
如果您需要更多信息,我们将非常感谢您的帮助。请尽管问

谢谢,
马修

对于最终的答案,我不是最好的帮助,但我不久前问了类似的问题,并且在该问题中被指出了有用的方向。正如Blaise Doughan所说,您需要使用一些东西来浏览xml文档,找到您需要的部分,然后从中整理它们


您不应该直接做jaxb的工作。相反,您将所有复杂类型放在与wsdl相关联的模式中(假设您是从wsdl工作的)。然后使用各种jaxws工具(wsgen、wsimport)从wsdl生成存根和jaxb类(对于客户端和服务器)


几乎所有这些都在(metro是jaxws的参考实现)中进行了描述。

感谢您的回答。我的wsdl文件是由netbeans自动生成的,我没有为它创建模式,因为我不知道需要一个模式。wsgen、wsimport和createstub类是我在使用netbeans之前的工作方式,但我的印象是我不能再这样做了?我更喜欢使用NB的解决方案,因为我不必再次切换。谢谢你的链接,我现在就来看看。