2013-01-01 58 views
0

我讀到這個問題很多線程,我發現了一些處理它 - 但不幸的是我不能真正理解如何解決我的問題。創建Web服務(JAX-WS)與返回的自定義類型的功能

現在我創建的WebService(使用Tomcat 7),我想分享的接口。 我有大約8個相互關聯的接口。例如:

@WebService 
@SOAPBinding(style = Style.RPC) 
interface A { 
    public String method1(); 
} 

@WebService 
@SOAPBinding(style = Style.RPC) 
interface B { 
    public String method1(); 
    public A getA(); 
} 

@WebService 
@SOAPBinding(style = Style.RPC) 
interface C { 
    public A getA(); 
    public B getB(); 
} 

的問題是,之後,我創建WAR(對於接口C)文件,我正在嘗試部署在Tomcat中的web服務,我得到從Tomcat的錯誤,看起來像這樣:

重度:WSSERVLET11:無法解析運行時的描述: com.sun.xml.ws.spi.db.DatabindingException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:中 1個計數IllegalAnnotationExceptions COM .mkyong.ws.ITest是一個接口, JAXB不能處理接口。這個問題是關係到 以下位置:在com.mkyong.ws.ITest

com.sun.xml.ws.spi.db.DatabindingException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException : IllegalAnnotationExceptions com.mkyong.ws.ITest的1個計數是一個接口,和 JAXB不能處理接口。此問題與以下位置 有關:at com.mkyong.ws.ITest

有沒有人有想法如何解決它? 謝謝。

回答

0

您不能返回使用JAX-WS的接口類型。返回類型和參數必須是實際的類。 RMI將支持該接口。 JAX-WS沒有。

+0

謝謝您的回答! 最後,我的web服務客戶端將是一個Android應用程序,RMI不適用於Android,在許多線程中,我看到人們建議使用webservice和soap來創建一個服務器(android)客戶端。你有一個想法如何共享(使服務器)這8個接口與Android客戶端相互關聯? 謝謝。 – Dave

+0

你仍然可以使用接口,但返回類型必須是具體的實現。它不能是抽象類型或接口。 – Till