2014-10-02 61 views
0

我已經構建了一個簡單的web服務,並且我成功地能夠在apache webserver中部署webservice並查看WSDL。java.lang.IllegalArgumentException Webservice不是接口

這裏是我的簡單的web服務 -

import javax.jws.WebMethod; 
import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.jws.WebParam; 
import javax.jws.soap.*; 


@WebService 
@SOAPBinding(style = SOAPBinding.Style.RPC) 
public class HelloWebService { 
    @WebMethod(operationName = "sayHello") 
    public String sayHello(@WebParam(name="guestname") String guestname){ 
     if (guestname==null){ 
      return "Hello"; 
     } 
     return "Hello " + guestname; 

    } 
} 

沒有,我試着去建立如下一個客戶端,

public class HelloClient { 
    public static void main(String[] args) throws MalformedURLException{ 
    URL url = new URL("http://localhost:8080/HelloWebService/helloWebService?wsdl"); 

    //1st argument service URI, refer to wsdl document above 
//2nd argument is service name, refer to wsdl document above 
    QName qname = new QName("http://demo.webservice.com/", "HelloWebServiceService"); 

    Service service = Service.create(url, qname); 

    HelloWebService hello = service.getPort(HelloWebService.class); 

    System.out.println(hello.sayHello("Hello")); 
    } 
} 

,並得到下面的錯誤,

Exception in thread "main" java.lang.IllegalArgumentException: com.webservice.demo.HelloWebService is not an interface 
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:624) 
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:592) 
    at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:244) 

回答

1

由於API表示service.getPort指定了終點界面。你正在傳遞一個具體的類,該jre不能創建一個代理。查看this的一個工作示例(請注意,HelloWorld是一個界面)