我相信你在这里有很多关于这类事情的问题,但我找到的答案似乎都没有解决我遇到的问题,所以我希望我能够得到一些具体的答案。
我有一个由客户端和服务器组成的项目。服务器连接到数据库,客户端可以通过wsdl文件调用服务器中的方法。这工作正常,但服务器只能返回简单的类型和列表。我查找了如何处理自定义类型,并且我被定向到JaxB,这似乎正是我正在寻找的。不幸的是,我对我应该如何使用它感到有点困惑。我正在使用NetBeans IDE(6.9.1),这使得处理wsdl文件变得更容易,尽管我已经读过,一旦你有了wsdl的结尾,从命令行传递复杂的类是相当简单的工作正常吗?
我想要做的是让服务器返回一个类 - 它只包含数据 - 客户端可以读取和使用它。
我做了以下事情,但显然我在某个地方出错了!
“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"));
如果您需要更多信息,我们将非常感谢您的帮助。请不要犹豫。
谢谢, 马修
答案 0 :(得分:2)
我不会成为最后答案的最佳帮助,但我刚才提出了类似的问题,并在该问题中指出了有用的方向。就像Blaise Doughan说你需要使用一些东西来浏览xml文档并找到你需要的部分然后从那里编组。
答案 1 :(得分:1)
你不应该直接做jaxb的东西。相反,您将所有复杂类型放在与wsdl关联的模式中(假设您使用的是wsdl)。然后使用各种jaxws工具(wsgen,wsimport)从wsdl生成存根和jaxb类(对于客户端和服务器)。
几乎所有这些都在jaxws tutorials中描述(metro是jaxws的参考实现)。