首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用`java2wsdl`生成的web服务可以包含来自多个Java类的API吗?

使用`java2wsdl`生成的web服务可以包含来自多个Java类的API吗?
EN

Stack Overflow用户
提问于 2012-11-30 19:44:56
回答 2查看 500关注 0票数 2

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

代码语言:javascript
复制
<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选项参数是否应该用于此目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-05 04:43:17

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

Axis2对附加类型使用“额外的类”--作为输入/输出的原始复杂类型的子类。

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

票数 2
EN

Stack Overflow用户

发布于 2012-12-05 02:23:46

在WSDL中,最大的名称空间是服务本身(它的方法是最小的)。WSDL不支持嵌套的命名空间。Java和WSDL之间最符合逻辑的映射是从Java类到WSDL服务。这使得传递多个Java类来获取单个WSDL的请求变得不可能。您总是可以托管多个WSDL,但您仍然必须单独生成这些WSDL。

引用w3c

代码语言:javascript
复制
Related concrete endpoints are combined into abstract endpoints (services)

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13644630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档