我有多个(假设为2个,A和B)Web服务,我需要生成一个客户端来一起使用它们。 在Netbeans中,我使用“新建Web服务客户端”向导,传递这两个WSDL文件,查看输出时,Netbeans会分别调用wsimport。
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
无论是A还是B,都生成了相同的包com.mydomain.myapp(我猜它们被定义在相同的命名空间中),所以我获得了A和B的存根类集合并合并到同一个包中。
然而,wsimport还为每个Web服务创建了一个ObjectFactory,因此如果我在A之后生成B的存根,则仅获得与B定义相关的ObjectFactory(因为第一个A被覆盖了)。相反,如果我交换顺序,则A的ObjectFactory将保留下来。
问题在于,我需要两个ObjectFactories才能创建用于包装A和B Web服务类型的JAXBElements。
是否有一种方法可以将A的命名空间映射到Java包中,将B的命名空间映射到另一个包中,以便获得
com.mydomain.myapp.a
com.mydomain.myapp.b
那么如何同时保留两个ObjectFactories?
简单重构并不能解决问题,因为内部调用了getClass()方法,一旦包被重构,该方法就无法正常工作。