[英]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.