我成功构建了一个简单的Java Web服务(例如你可以参考"Building simple web service")
在Eclipse中,可以使用本教程中指示的“Java Web服务代理技术”轻松创建Web服务客户端。
我想运行一个与Java客户端应用程序相同的Java Applet:访问Web服务,调用方法并返回结果。
当我运行Eclipse的代码时(右键单击>“作为Java Applet运行...”)一切正常..当我在一个简单的html页面中运行applet时,applet启动但进入死锁状态: 不会抛出任何异常,并且在创建MyWebServiceProxy类的行上执行任何操作时都会阻止该进程,并调用默认构造函数。
有人可以帮助我吗?
我在这里贴了一些代码,让你更好地理解我在applet中做的事情:
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++);
}
}
显然我的Web服务被称为“SimpleWS”,我调用的方法称为“getMessage”,它不带参数,并返回一个String。
请帮帮我..
答案 0 :(得分:3)
如您所知,java applet在沙箱中执行。默认情况下,applet除了原始服务器之外,不能访问任何Web资源。只有签名的小程序才能访问此类资源。因此,您应该sign您的小程序。