gpt4 book ai didi

java - wsimport:多个 wsdl 覆盖 ObjectFactory

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:10 24 4
gpt4 key购买 nike

我有多个(比如说 2 个,A 和 B)网络服务,我需要生成一个客户端来一起使用它们。在 Netbeans 中,我使用向导“new Web Service Client”传递两个 wsdl,查看输出 Netbeans 只需为它们中的每一个调用 wsimport。

wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl

A 和 B 都生成相同的包 com.mydomain.myapp(我猜它们是在相同的命名空间中定义的),所以我将 A 和 B 的 stub 类集合并到同一个包中。

但是,wsimport 还为每个 Web 服务创建一个 ObjectFactory,因此如果我在 A 之后生成 B 的 stub ,我只会获得与 B 定义相关的 ObjectFactory(因为第一个 A 被覆盖)。相反,如果我切换顺序,A 的 ObjectFactory 将继续存在。

问题是我需要两个 ObjectFactories 才能为 Web 服务 A 和 B 的类型创建 JAXBElements 包装类实例。

有没有办法在java包中为A映射命名空间,在另一个java包中映射B以获取

com.mydomain.myapp.a
com.mydomain.myapp.b

所以保留两个 ObjectFactories ?

简单的重构没有帮助,因为在内部调用了 getClass(),一旦包被重构,它就不再工作了。

最佳答案

这对我有用(使用 Spring java 配置)

@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("com.example.api");
return marshaller;
}

使用 setPackagesToScan 而不是 setContextPath 为我完成了工作(我假设它忽略了 ObjectFactory 中的内容并扫描了整个包)。

关于java - wsimport:多个 wsdl 覆盖 ObjectFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15783166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com