2011-01-31 51 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