使用`java2wsdl`生成的Web服务是否包含来自多个Java类的API?

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

      com.mc.xews.XEWS 

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

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

可能是java2wsdl extra classes选项参数应该用于此吗?

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

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

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

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

引用w3c :

 Related concrete endpoints are combined into abstract endpoints (services) 

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

如果您担心实施的规模,请查看PayPal的Web服务 。