【问题标题】: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?

是否应该使用来自java2wsdl 的extra 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
      相关资源
      最近更新 更多