如何在WAS中定义java安全策略文件?

时间:2014-06-03 17:48:28

标签: java-ee websphere rmi securitymanager websphere-liberty

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

Naming.rebind(url, 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中的方式... ) 谢谢。

1 个答案:

答案 0 :(得分:0)

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

同样不是java.policy中接受的所有关键字都适用于was.policy(同样如Info Center中所述),因此您应该验证您的was.policy文件不是使用任何不受支持的语法。有关was.policy文件here的更多信息。