2013-01-01 21 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