【问题标题】:Invoke web service method inside Java Applet在 Java Applet 中调用 Web 服务方法
【发布时间】:2011-01-31 15:32:01
【问题描述】:

我成功搭建了一个简单的Java Web Service(例子可以参考"Building simple web service"

在 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++);
 }
}

显然,我的 Web 服务称为“SimpleWS”,我调用的方法称为“getMessage”,它不接受任何参数,并返回一个字符串。

请帮帮我..

【问题讨论】:

    标签: java webservice-client applet


    【解决方案1】:

    如您所知,java 小程序在沙箱中执行。默认情况下,applet 无法访问任何 Web 资源,除非来自其原始服务器。只有签名的小程序才能访问此类资源。因此,您应该sign 您的小程序。

    【讨论】:

    • 我签署了小程序,现在请求证书,但它说 org.apache.axis 找不到我的类,而我确定它在我创建的 fatjar 中。我应该在小程序标签的“存档”属性中包含罐子吗?如果是的话,哪一个?
    • 您是否在签名的 jar 中包含轴类?.. 看起来,这些类不包括在内。而且,您可以将 jax-ws 用于 Web 服务,通过这种方式,您不需要需要像 apache axis 这样的第三方库。
    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多