【问题标题】:Could the web service generated with `java2wsdl` include API from more than one Java class?使用 `java2wsdl` 生成的 Web 服务是否可以包含来自多个 Java 类的 API?
【发布时间】:2012-11-18 15:20:21
【问题描述】:

我正在使用 Axis2 来运行 Web 服务。这是一个定义服务的services.xml 文件:

<service name="XEWS" scope="transportsession" class="com.mc.xews.XEWS">
<messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass" locked="false">com.mc.xews.XEWS</parameter>

我的问题是整个 API 位于一个 Java 文件 XEWS.java 中,而这个类被发送到 java2wsdl。有没有办法让多个类作为java2wsdl 的输入?此文件与WSDL 一起使用以生成Web 服务。现在我只使用一个类作为java2wsdl 的输入,所以这个类变得很大,因为有很多 API 函数....如果我知道如何将多个文件发送到 java2wsdl,它们可以很好地分组到单独的类中.从此类生成的 JavaDocs 文档也很难阅读。

Web 服务是否可以包含来自多个 Java 类的 API?

是否应该使用来自java2wsdlextra classes 选项参数?

【问题讨论】:

  • 您是否尝试使用 -u 标志编译您的 WSDL?
  • 谢谢。我在谷歌上苦苦挣扎……你有什么指点吗?
  • 你在哪里找到的描述?这是不正确的:-u 选项是--unpack-classes 的缩写。您可以参考Axis2 WSDL2Java Command Line Tool Documentation页面了解更多信息。
  • OK,此选项在wsdl2java 的输出处解包类。这也很好,比一个巨大的XEWSstub.java 文件要好。但是,我真正想要的是如何将多个文件发送到 java2wsdl

标签: java web-services axis2


【解决方案1】:

不,这是不可能的,因为 Axis2 生成工具以代码优先的方法将 Java 类:WSDL 映射为 1:1。假设,他们可以提供将多个 Java 类映射到单个 WSDL 的功能(这将需要生成工具中的其他参数)。

Axis2 对其他类型使用“额外类”——原始复杂类型的子类用作输入/输出。

如果整洁紧凑的代码是唯一的问题,我建议将其重构为只有一个类定义所有必需的操作,但将执行委托给特定且适当的(多个)类。这可以认为是Façade pattern的应用。

【讨论】:

    【解决方案2】:

    在 WSDL 中,最大的命名空间是服务本身(它的方法是最小的)。 WSDL 不支持嵌套命名空间。 Java 和 WSDL 之间最合乎逻辑的映射是 Java 类到 WSDL 服务。这就是使您无法请求传递多个 Java 类来获得单个 WSDL 的原因。您始终可以托管多个 WSDL,但您仍然必须单独生成它们。

    引用w3c

    Related concrete endpoints are combined into abstract endpoints (services)
    

    有一个 IMPORT 机制来组合 WSDL,但这被视为 WSDL2Java(或任何其他 SOAP 客户端)的单一服务,因此它仍然代表单一服务。

    如果您担心实现的大小,只需查看PayPal's web service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多