JAVA:ThreadGroup.getParent()上的SecurityException

时间:2010-10-29 03:58:22

标签: java weblogic securityexception threadgroup

我有一些漂亮的样板Java代码,它使用tg.getParent()执行while循环以获取根线程组。这已经在四种不同的环境(一个Windows和三个Linux)上工作了几个月。最近,我们为Accessment Validation测试添加了第五个环境。这个环境应该尽可能地复制我们的生产环境。开发人员对此系统的访问权限非常有限,而且我们的托管组设置系统以获得所有正确的权限和属性是一个为期数周的过程。

现在几乎所有东西都在工作,但是今天,当测试人员进入上面提到的运行getRootThreadGroup()方法的应用程序部分时,对ThreadGroup.getParent()的调用显然抛出了SecurityException。我没有太多细节,因为目前我还无法找到应用程序日志文件。但我99.99%肯定在这里发生了一次SecurityException。我已经查看了用于SecurityException和getParent()以及checkAccess()等的javadoc,但这些对我来说都没有多大意义。

任何人都可以想到一个简单的原因,为什么这个新环境会导致我们的应用程序在此调用中抛出SecurityException,而这在任何其他环境中都没有被观察到(并且代码肯定会在所有其他环境中执行而无异常) ?我的直觉是,不知何故,应用程序的运行时用户没有“某事”的权限......

哦,它运行在带有java 1.6(jrockit-jdk)的Bea Weblogic服务器上,但它应该配置与其他环境完全相同。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

听起来像是在使用安全管理器。如果您编写一个简单的程序来执行Thread.currentThread().getThreadGroup().getParent()并使用-Djava.security.manager运行它,您会看到:

Exception in thread "main" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup)

答案 1 :(得分:0)

没关系。我发现问题实际上是一个缺少的数据库列。今天早上我花了两个小时才终于找到了日志,一旦我发现了这个,找到实际问题非常简单。