我有一个使用mypackage.Foo类的遗留Java应用程序。我希望该应用程序使用返回Foo实例的Web服务。要连接到这个Web服务,我在WSDL上使用wsimport来生成工件,它给了我另一个Foo.java文件。理想情况下,我想告诉wsimport生成使用原始Foo的工件并且不生成任何其他Foo文件,但我还没有找到方法来做到这一点。如何在Java应用程序中协调两个Foo文件?看来我的选择是:
1)将生成的Foo文件放在另一个包中。但是将otherpackage.Foo分配给mypackage.Foo变量失败
2)使用生成的Foo而不是原始的Foo。在某些情况下,这似乎是最好的解决方案,但原始的Foo具有不在生成的Foo中的功能。此外,进行应用程序范围的更改是不可行的。
3)使用第一个选项并编写一个方法来手动将otherpackage.Foo的字段复制到mypackage.Foo中。如果一切都失败了,这将是我的工作,但似乎非常不优雅。
我确信我错过了一个简单的最佳做法。欣赏任何见解!
答案 0 :(得分:1)
当您从WSDL生成Java代码时,您可以使用Apache CXF和它的wsdl2java工具(或使用maven-cxf-codegen-plugin)并指定以下选项:
-nexclude <schema-namespace>=<java-package>
使用此选项将:
当然,在编译期间,引用类必须存在于java-package中(代码生成期间不需要)。
在您的示例中使用:
wsdl2java -nexclude <some-schema-namespace-I-dont-know>=mypackage