0

我正在使用 RMI 开发企业应用程序,但在尝试(重新)绑定对象时出现错误:

Naming.rebind(url, this);

// 对象“this”是 UnicastRemoteObject 的子类 在此指令之前,我创建了一个新的 RMISecurityManager :

if (System.getSecurityManager() == null) {
    System.setSecurityManager(new RMISecurityManager());
}

确切的错误是:

[err] java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.sun.reflect")

我正在开发 WAS Liberty Profile 8.5.5。我尝试在EAR项目的META-INF文件夹中创建java.policy、app.policy、was.policy、server.policy,没有任何成功。

我试图用指令设置文件: System.setProperty("java.security.policy", ".../security/java.policy"); 这样,它就起作用了!

我错过了什么?(由于最后一个解决方案有效,我假设 java.policy 文件格式正确且高效,所以这只是将这个文件包含到我的 ear 文件中并在配置中纳入 WAS 的方法......)谢谢。

4

1 回答 1

0

信息中心获取 was.policy 文件在ear存档中的正确位置,META-INF/was.policy但可能还有更多。“当启用 Java 2 安全性时,应用程序 EAR 文件现在可以运行了。” 因此必须启用 Java 2 安全性。

java.policy也不是所有在作品中接受的关键字was.policy(也如信息中心中所述),因此您可能应该验证您的was.policy文件没有使用任何不受支持的语法。更多关于这里was.policy的文件。

于 2014-06-04T06:15:49.473 回答