【问题标题】:How to generate all classes under a base package when using WSDL2Java from Axis 2?使用 Axis 2 中的 WSDL2Java 时如何生成基础包下的所有类?
【发布时间】:2019-04-16 12:09:21
【问题描述】:

我正在尝试强制 WSDL2Java (org.apache.axis2.wsdl.WSDL2Java) 生成给定基础包下的所有类,例如 com.mycompany.thewebservice。*

根据the documentation,-p 选项应该可以解决问题:

-p --package 目标包名。如果省略,将使用默认包(使用 WSDL 的目标命名空间形成)。

但不幸的是,当我们使用 -p 选项时,在给定的包下只生成了 3 个主要类(XService.java、XCallbackHandler.java 和 XServiceStub.java)。生成许多​​其他包,例如:

  • com.theservice.*
  • org.w3.www._2004._60.xmlmime
  • org.xmlsoap.schemas.soap.encoding

这对我们来说一团糟,因为我们集成了许多 Web 服务,并且我们希望将服务的所有类保存在一个公共基础文件夹下。

我们过去使用的是 Axis 1,它的 WSDL2Java (org.apache.axis.wsdl.WSDL2Java) 有一个参数 --package,它的作用就像一个魅力。在这种情况下,所有类都在我指定的包下整齐地生成。

有没有办法强制 Axis 2 WSDL2Java 生成给定包下的所有类?我知道 -ns2p --namespace2package 参数,但我不想为我们集成的每个服务一一列出 URL。

【问题讨论】:

标签: java axis2 wsdl2java


【解决方案1】:

我使用的是axis2-eclipse-codegen-plugin-1.7.9,并且-p 选项也不会将所有生成的类放在一个包中。

我找到了解决该问题的方法。

1) 只需将下载的axis2-eclipse-codegen-plugin-1.7.9.jar 文件放到名为“droppings”的Eclipse/STS 文件夹下
2) 重新启动基于 Eclipse 的 IDE
3) 从 STS 菜单转到 File --> New --> Other... ,选择 Axis2 Code Generator (在 Axis2 Wizards 下) --> 点击 Next --> 选择 "Generate Java source code from a WSDl file" - -> 下一步 --> 指向您的 WSDL 文件位置 --> 下一步 --> 对于 Codegen 选项,选择自定义,填写其他字段 --> 单击高级选项,然后
4) 取消选中复选框“Unpacks the databinding classes”,如下图所示,它告诉Axis2根据Axis2 CodegenToolReference将所有绑定类生成为内部类:

unpackClasses 解包生成的类。这迫使 要单独生成的数据绑定类,否则会 已作为内部类生成。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多