我有多个(比如说 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,因此如果我在 AI 仅获取与 B 定义相关的 ObjectFactory 后生成 B 的存根(因为第一个 A 被覆盖)。相反,如果我切换顺序,A 的 ObjectFactory 会继续存在。
问题是我需要两个 ObjectFactories 才能为 web 服务 A 和 B 的类型创建 JAXBElements 包装类实例。
有没有办法在 java 包中映射 A 的命名空间,在另一个包中映射 B 以获得
com.mydomain.myapp.a
com.mydomain.myapp.b
所以保留两个 ObjectFactories ?
简单的重构没有帮助,因为在内部调用了 getClass(),一旦包被重构,它就不再工作了。