首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >wsimport:多个wsdl覆盖ObjectFactory

wsimport:多个wsdl覆盖ObjectFactory
EN

Stack Overflow用户
提问于 2013-04-03 17:10:21
回答 2查看 10.4K关注 0票数 6

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

代码语言:javascript
复制
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl

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

然而,wsimport还为每个for服务创建了一个ObjectFactory,因此如果我在A之后生成B的存根,我只获得与B定义相关的ObjectFactory (因为第一个定义A被覆盖)。相反,如果我交换顺序,A的ObjectFactory仍然有效。

问题是,为了为The服务A和B类型创建JAXBElements包装类实例,我需要这两个ObjectFactories。

有没有一种方法可以映射一个java包中A的名称空间和另一个包中B的名称空间,以便获得

代码语言:javascript
复制
com.mydomain.myapp.a
com.mydomain.myapp.b

所以把两个ObjectFactories都保留下来?

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

EN

回答 2

Stack Overflow用户

发布于 2013-04-03 17:20:41

您可能可以通过JAXB绑定文件来做到这一点--看一下这个问题/答案:java wsimport rename/different ObjectFactory.java

根据这个答案,让我们看看oracle:http://docs.oracle.com/javaee/5/tutorial/doc/bnbbf.html上的绑定文件

票数 2
EN

Stack Overflow用户

发布于 2016-11-18 19:32:35

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

代码语言:javascript
复制
@Bean
public Jaxb2Marshaller marshaller() {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setPackagesToScan("com.example.api");
    return marshaller;
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15783166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档