我有多个(比如说2,A和B)Web服务,我需要生成一个客户端来使用它们。
在Netbeans中,我使用了传递两个wsdl的向导“新Web服务客户端”,查看输出,Netbeans只是简单地为每个wsimport调用了wsimport。
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
A和B都生成相同的包com.mydomain.myapp(我想它们是在同一 namespace 中定义的),因此我将A和B的 stub 类集合并到同一包中。
但是,wsimport还会为每个Web服务创建一个ObjectFactory,因此,如果在A之后生成B的 stub ,则我只会获得与B定义相关的ObjectFactory(因为第一个A被覆盖)。相反,如果我切换顺序,则A的ObjectFactory仍然存在。
问题是我需要两个ObjectFactories才能为Web服务A和B的类型创建JAXBElements包装类实例。
有没有一种方法可以映射Java包中的A和另一个包中的B的 namespace ,以获得
com.mydomain.myapp.a
com.mydomain.myapp.b
并同时保留两个ObjectFactories?
简单的重构无济于事,因为在内部调用了getClass(),一旦重构了软件包,它就不再起作用。
最佳答案
您可能可以通过JAXB绑定(bind)文件来执行此操作-查看以下问题/答案:java wsimport rename/different ObjectFactory.java
从该答案中,可以看到oracle中的绑定(bind)文件:http://docs.oracle.com/javaee/5/tutorial/doc/bnbbf.html
关于java - wsimport:多个wsdl覆盖ObjectFactory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15783166/