gpt4 book ai didi

java - 已签名的 Java Applet 在连接到 Web 服务时抛出安全异常

转载 作者:行者123 更新时间:2023-11-29 06:25:46 25 4
gpt4 key购买 nike

我有一个在 tomcat 5.5 上运行的 java 小程序。它已签名 (-selfcert)。当我的 Applet 尝试连接到 Web 服务(已在这一行中)时,我仍然收到 java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader) 异常:

ws_locator = new My_WebserviceLocator(ws_adress + "?wsdl",
new javax.xml.namespace.QName("http://impl.webservice", "My_Webservice"));

由于这里有一些类似的问题,我阅读了它们:

  • 是的,小程序已签名。我用 -verify 检查了一下。

  • Tomcat 安全异常(exception),可能是,但我已经添加到 catalina.policy:

    grant codeBase "file:/home/me/apache-tomcat-5.5.27/webapps/myapplet/-" {
    permission java.security.AllPermission; };

    grant codeBase "file:/home/me/apache-tomcat-5.5.27/webapps/myapplet/applet.jar"{ 权限 java.security.AllPermission; };

通常的东西也在那里:

grant codeBase "file:${java.home}/jre/lib/ext/-" {
permission java.security.AllPermission;
};

没有结果。

好的,快更新,添加:

grant{
permission java.security.AllPermission;
};

本地 java.policy 文件解决了这个问题。但那不是我要找的,applet 应该在 avarage 机器上运行,带有默认的 java.policy 文件。因此必须从代码中修复它。

最佳答案

您是从小程序主线程还是从使用 javascript 调用小程序方法启动的线程调用您的 WS?

请参阅下面的示例。

希望对您有所帮助。

public class MyApplet extends JApplet {

@Override
public void start() {
// It will work if your applet is signed
callWebService();
}

public void methodCalledFromJavascriptWrong() {
// It will NOT work even if your applet is signed
callWebService();

}

public void methodCalledFromJavascriptGood() {
AccessController.doPrivileged(new PrivilegedAction() {

public Object run() {
// It will work if your applet is signed
callWebService();
return null;
}

});

}

private void callWebService() {
//Here you call your web service
}
}

关于java - 已签名的 Java Applet 在连接到 Web 服务时抛出安全异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com