在给定第三方 wsdl 的情况下,我使用 Eclipse 生成了一个 java 客户端代码存根。客户端工作得很好,我可以访问网络服务并做我需要做的事情。
现在,我想编写一些无需连接到 Web 服务即可运行的单元测试。是否可以在axis2堆栈中使用某种机制将xml文件反序列化为java客户端存根代码中的java对象之一?
例如,客户端存根代码中的类之一是“Contact”。假设我有一个 xml 文件,它模仿通常在肥皂请求中找到的 xml。如何将其反序列化为 java Contact 对象?
我以前使用过 XMLBeans,但希望有一种更简单的方法,因为 java 客户端似乎已经在某个地方进行了这种反序列化?也许axis2有一种方法可以获取一大块xml并返回一个java对象?
更新:
我试过这个:
String packageName = Contact.class.getPackage().getName();
JAXBContext jc = JAXBContext.newInstance( packageName );
我明白了:
java.lang.AssertionError: javax.xml.bind.JAXBException: "com.sforce.soap._2006._04.metadata" doesnt contain ObjectFactory.class or jaxb.index
然后,我尝试了这个:
Contact c = new Contact();
JAXBContext jc = JAXBContext.newInstance( c.getClass() );
但是后来我得到了 Contact Class 使用的类之一的异常does not have a no-arq default constructor
我希望这将是一件快速而简单的事情,但在我有时间完全了解axis2以及它如何使用jaxb之前,我将手动解析xml。