簡體   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