解决:java.security.AccessControlException: Access Denied Error

本文介绍了一种在Oracle R12.2.0升级至R12.2.2后,遇到的Forms页面仅显示边框的问题解决方案。通过调整Java安全策略文件java.policy中的权限设置,解决了Applet无法正确加载的问题。

在R12.2.0升级到R12.2.2完成后,出现了一个错误,在打开form界面时候,发现forms页面只出现边框,没有任何职责显示:


刚开始感觉应该是重启oacore就好了,因为在R12.2.2中oacore是由weblogic管理的,所以,决定重启weblogic,重启之后,发现问题依旧存在。

然后,根据同事建议:

用sysadmin登录》功能管理员》

清除所有高速缓存。

但是还是不行。。

然后,在java控制台发现有java程序运行的报错:

java.security.AccessControlException: access denied ( java.util.PropertyPermission oracle.apps.fnd.jdbc.connection.mode read)

意思就是说,java.util.PropertyPermission oracle.apps.fnd.jdbc.connection.mode是read模式的,为了让它不denied,我尝试把它改成read/write模式就好了。。。

这是因为applet在没有被允许的情况下去获取系统资源.

同时,错误提示需要一个RuntimePermission,它将使applet去获得sun.jdbc.odbc 包.所以
可以在您系统的java运行时包修改一个关于安全的一文件.
具体做法是:找到您的ie浏览器使用的jre包,我的是:D:/Program Files/Java/jre1.6.0/lib/security,在这个包下面有个java.policy文件,打开编辑它:
:

在grant里增加一句:
 permission java.util.PropertyPermission "*", "read,write";

重新打开form,问题解决。



<think>好的,我现在需要解决用户遇到的Java权限问题,具体是java.security.AccessControlException: Access denied (javax.management.MBeanTrustPermission register)。首先,我得确认这个异常的原因。用户提到MBeans注册失败,可能是因为安全管理器限制了MBean的注册权限。 接下来,我应该考虑如何调整安全策略。通常,Java的安全策略通过策略文件(如java.policy)来管理。可能需要添加MBeanTrustPermission权限到相应的代码库。但用户可能需要具体的步骤,比如修改策略文件或配置启动参数。 另外,代码层面的解决方法,比如在注册MBean之前检查权限,或者使用AccessController来提升权限。这部分需要确保代码示例正确,并且符合Java安全机制的最佳实践。 还要考虑不同的应用场景,比如独立应用、Web应用或应用服务器,不同的环境可能需要不同的配置方式。例如,Tomcat可能需要修改catalina.policy文件。 最后,生成相关问题时要涵盖常见问题,比如其他MBean权限异常、安全策略配置方法以及如何完全禁用安全管理器。需要确保回答结构清晰,分步骤说明,并引用相关的示例和策略配置。</think>针对Java中出现的$java.security.AccessControlException$异常提示$javax.management.MBeanTrustPermission\ register$权限不足问题,可通过以下方案逐步解决: ### 一、核心解决方案 1. **修改安全策略文件** ```java grant { permission javax.management.MBeanTrustPermission "register"; }; ``` 将该条目添加到$JRE_HOME/lib/security/java.policy$文件中,或创建自定义策略文件并通过启动参数引用: ```bash -Djava.security.policy=/path/to/custom.policy ``` 2. **代码层权限提升** ```java AccessController.doPrivileged((PrivilegedAction<Void>) () -> { try { ManagementFactory.getPlatformMBeanServer().registerMBean(object, name); } catch (Exception e) { throw new RuntimeException(e); } return null; }); ``` ### 二、不同场景配置 1. **Web容器环境(如Tomcat)** 修改$CATALINA_HOME/conf/catalina.policy$: ```java grant codeBase "file:${catalina.base}/webapps/your_app/-" { permission javax.management.MBeanTrustPermission "register"; }; ``` 2. **Spring Boot应用** 在$application.properties$中添加: ```properties -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false ``` ### 三、临时调试方案(不推荐生产环境) ```bash java -Djava.security.manager -Djava.security.policy==/path/to/all_permissions.policy YourApp ``` 对应的all_permissions.policy文件: ```java grant { permission java.security.AllPermission; }; ``` ### 四、权限验证方法 ```java SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new MBeanTrustPermission("register")); } ``` [^1]: 该异常表明安全管理器阻止了未经授权的MBean注册操作,需通过策略文件明确授权
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值