gpt4 book ai didi

java - 如何调和 Java Web 服务中原始文件和生成文件之间的冲突?

转载 作者:行者123 更新时间:2023-11-30 11:59:29 26 4
gpt4 key购买 nike

我有一个使用 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 中。如果一切都失败了,这将是我所做的,但看起来非常不优雅。

我确定我错过了一个简单的最佳实践。感谢任何见解!

最佳答案

当您从 WSDL 生成 Java 代码时,您可以使用 Apache CXF 及其 wsdl2java 工具(或通过使用 maven-cxf-codegen-plugin)并指定以下选项:

-nexclude <schema-namespace>=<java-package> 

使用此选项将:

  • 告诉 wsdl2java 工具不要从给定的 XML 命名空间生成类,
  • 告诉工具从给定的 java 包导入生成的代码。

当然,引用的类必须在稍后的编译过程中存在于 java-package 中(在代码生成过程中不需要)。

在您的示例中使用:

wsdl2java -nexclude <some-schema-namespace-I-dont-know>=mypackage

关于java - 如何调和 Java Web 服务中原始文件和生成文件之间的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541263/

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