簡體   English   中英

JAX-WS / CXF中的多個@WebService批注

[英]Multiple @WebService annotations in JAX-WS / CXF

我正在嘗試在JAX-WS中實現次要版本,如下所示:

@WebService(targetNamespace="http://mycompany.com/api/Service/v1_0")
public interface ServiceRev0 {
    public void initialMethod();
}

@WebService(targetNamespace="http://mycompany.com/api/Service/v1_1")
public interface ServiceRev1 {
    public void newMethod();
}

public class Service implements ServiceRev0, ServiceRev1 {
    ...
}

Endpoint.publish("api", new Service());

不幸的是,CXF似乎只能“看到”第一個接口及其相關方法。 是否可以做我想做的事情,還是應該采取另一種方法?

這看起來很像通過CXF 解決致命死亡鑽石問題 我知道這很舊,但是我會嘗試像該問題的第二個和第三個答案一樣,顯式地聲明具體方法,然后重試。

(我希望對這樣一個舊項目發表評論不是邪惡的!)

邏輯上似乎是錯誤的,如果在類上添加@WebService批注,則表示它是Web服務實現;如果在接口上,則表示定義Web Service接口。

您的上述定義導致其中具有不同操作的兩個不同的WSDL,最好定義兩個不同的Webservice接口並提供適當的實現。

我在使用cxf 3時遇到了相同的問題。
解決方案/解決方法是創建第三個接口,以擴展需要公開的接口

@WebService(targetNamespace="http://mycompany.com/api/Service/v2")
public interface ServiceRev extends ServiceRev1, ServiceRev2
{
}

暴露:

public class ServiceRevImpl implements ServiceRev
{
....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM