【发布时间】:2013-04-03 09:10:21
【问题描述】:
我有多个(比如说 2 个,A 和 B)网络服务,我需要生成一个客户端来一起使用它们。 在 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 才能为 Web 服务 A 和 B 的类型创建 JAXBElements 包装类实例。
有没有办法在一个java包中为A映射命名空间,在另一个包中映射B以获得
com.mydomain.myapp.a
com.mydomain.myapp.b
所以保留两个 ObjectFactories ?
简单的重构没有帮助,因为内部调用了 getClass(),一旦包被重构,它就不再工作了。
【问题讨论】:
标签: java jaxb wsdl wsimport objectfactory