我们当前正在使用供应商提供的非常大的 WSDL 架构。绑定(bind)方式是RPC。据我所知,Axis 1.x 是唯一支持 RPC WSDL 定义的 Java 工具。如果我的理解有误,请纠正我。
WSDL2Java 生成一个 service-nameSkeleton.java 文件,该文件具有大小为 1.3Mb 的静态初始化 block - 远远大于 Java 的 64K 限制。
鉴于我们无法更改接口(interface)的定义,您认为我们应该如何进行?
我认为我们的选择是:
- 分解生成的静态 block
- 分解 WSDL(不确定是否可以在不更改界面的情况下实现)
- 修补 Axis WSDL2Java 代码
还有其他想法吗?
最佳答案
查看此article ,其中提供了一些有关如何将 RPC WSDL 转换为文档的说明。我建议先尝试一下。
此外,您可能有一个 RPC/编码的 WSDL(顺便说一句,它不符合 WS-I)。 JAXWS 仅支持 RPC/literal。因此任何框架(如 CXF 或 Axis2)都将支持它。因此,您还可以尝试将 WSDL 转换为 RPC/literal。
CXF 有 tool这可以为您完成这项工作。
无论如何,我建议尝试将 WSDL 转换为更新的形式。这将使您的服务器和客户端实现变得更轻松。我认为这不值得与 Axis1 进行斗争。甚至手动编写和解析 SOAP 消息也会更容易。
关于java - 如何解决 WSDL2Java 创建大于 64K 的静态 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723966/