2011-01-31 49 views
1

我成功地建造一個簡單的Java Web服務(如例子中,你可以參考"Building simple web service"調用Java applet中的Web服務方法

在Eclipse中很容易使用的「Java Web服務代理來創建Web服務客戶端技術「在教程中指出。

我想運行一個Java Applet,它執行與java客戶端應用程序相同的操作:訪問Web服務,調用方法並返回結果。

當我通過Eclipse運行代碼(右鍵單擊>「作爲Java Applet運行..」)一切工作正常..當我運行在一個簡單的HTML頁面的小程序小程序啓動,但進入死鎖: 沒有例外被拋出,並且在創建MyWebServiceProxy類的行上不做任何事情的情況下阻止該進程,從而調用默認的構造函數。

任何人都可以幫助我嗎?

我在這裏粘貼一些代碼來讓你更好地瞭解什麼,我的小程序裏面做:

public class SimpleWSApplet extends Applet { 

public void paint(Graphics g) 
{ 
    String msg = "Applet initialized"; 
    int i = 1; 
    g.drawString(msg, 20, 20*i++); 

    msg = "Error in applet"; 
    try { 
    Service service = new Service(); 
    Call call = (Call)service.createCall(); 
    call.setTargetEndpointAddress("http://localhost:8080/AppletWSTest/services/SimpleWS"); 
    call.setOperationName(new QName("http://soapinterop.org/", "getMessage")); 
    msg = (String)call.invoke(new Object[]{}); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    msg = "Error: "+e.getMessage(); 
    } 
    g.drawString(msg, 20, 20*i++); 
    //g.drawString(executeInvocation(msg), 20, 20*i++); 
} 
} 

顯然,我的網絡服務被稱爲「SimpleWS」和我調用被稱爲「的getMessage」的方法,它不需要參數,並返回一個String。

請幫我..

回答

3

正如你所知道的,java小程序是在一個沙箱中執行的。默認情況下,applet除了來自其原始服務器外,沒有任何Web資源的訪問權限。只有已簽名的小程序才能訪問此類資源。因此,您應該使用sign您的小程序。

+0

我簽了applet,現在請求證書,但它說org.apache.axis無法找到我的類,而我確定它是在我創建的fatjar中。我應該在applet標籤的「歸檔」中加入jar嗎?如果是的話,哪一個? – arielten 2011-02-01 11:22:30