1

我已经使用 cxf 2.7.3 生成了从 wsdl 到 java 的代码,但是在构建程序集时出现“代码太大”错误。表示其中一种方法已超过 java 64kb 限制。我确切地知道哪个类,对我来说这似乎是 cxf 中的错误。Actully Axis2 也是如此,所以我想知道是否有人知道如何解决这个问题。

我正在使用的代码路径 eco-api-ex/examples/java/中提供

如何强制代码生成拆分大型生成方法?还是我应该为此使用一些外部工具?

[ERROR] \workspace\e-conomics\target\generated\src\main\java\com\e_conomic\Econo
micWebServiceSoap_EconomicWebServiceSoap12_Client.java:[34,23] error: code too l
arge
4

2 回答 2

3

不要使用 -client 标志运行 wsdl2java。_Client.java 类只是一个示例类,用于展示如何使用生成的服务类和代理等。它通常不需要任何东西。那应该是唯一一个用这样的大方法生成的类。

于 2013-03-31T22:32:56.210 回答
1

那里有一个 3MB 的 WSDL 文档。(难怪我的浏览器在我试图查看那个大小的通用 XML 文档时有点不高兴。)它定义了大约 3000 个元素;还有 3k 条消息和 4.5k 次操作。我不知道你到底在什么地方达到了极限(在一些地方构建了特定类型的所有实体的注册表),但这并不重要。对于大多数代码来说,它太大了,无法正常处理。(您达到的限制似乎是方法的字节码总大小的限制;达到该限制通常表明其他地方出现严重错误:在这种情况下,它是破坏地堡的 WSDL 文档。)

构建一个包含更小的元素、消息和操作集的精简版本将是一个绝妙的主意。将该缩减版本放在 Maven 可以找到的存储库中(例如,在 中src/main/wsdl)也很有意义,因为它会阻止您在每次构建时再次下载该 3MB 文档。

于 2013-03-31T20:48:19.260 回答