繁体   English   中英

用java2wsdl生成的Web服务是否可以包含多个Java类的API?

[英]Could the web service generated with `java2wsdl` include API from more than one Java class?

我正在使用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选项参数?

在WSDL中,最大的名称空间是服务本身(它的方法是最小的)。 WSDL不支持嵌套名称空间。 Java和WSDL之间最逻辑的映射是WSDL服务的Java类。 这就是使您无法通过多个Java类来获取单个WSDL的请求。 您始终可以托管多个WSDL,但是仍然必须分别生成它们。

引用w3c

Related concrete endpoints are combined into abstract endpoints (services)

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

如果您担心实现的规模,只需查看PayPal的Web服务

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

Axis2将“额外类”用于其他类型-原始复杂类型的子类用作输入/输出。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM