java - 如何解决 WSDL2Java 创建大于 64K 的静态 block ?

标签 java web-services soap axis wsdl2java

我们当前正在使用供应商提供的非常大的 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/

相关文章:

c# - xdoc 查询的 Select 语句

java - 如何使用 Jackson 和 spring-boot 将简单的 Kotlin 数据类映射到 json 或从 json 映射

Java Try-Catch 异常计算器

java - 这个数组变量引用是如何起作用的?

java - Bufferedreader解释?

java - SSLHandshakeException : No subject alternative names present

web-services - REST 服务 - 用于唯一检查的 URI 形成

java - CXF 3.0.4 SOAP客户端拦截器传递参数

soap - icCube XMLA 请求文档

r - 使用 R 的 Bing Ads API 报告数据 - 获取 ReportRequestId