0

ルート スレッド グループを取得するために tg.getParent() で while ループを実行する、かなり定型的な Java コードがいくつかあります。これは、4 つの異なる環境 (1 つの Windows と 3 つの Linux) で数か月間動作しています。最近、Accessment Validation テスト用に 5 番目の環境を追加しました。この環境は、可能な限り本番環境のレプリカであると想定されています。開発者はこのシステムへのアクセスが非常に制限されており、ホスト グループがシステムをセットアップしてすべての適切な権限とプロパティを設定するのに数週間のプロセスが必要でした.

現在、ほぼすべてが機能していますが、今日、テスターが上記の getRootThreadGroup() メソッドを実行するアプリケーションの部分に行ったとき、ThreadGroup.getParent() への呼び出しで SecurityException がスローされたようです。現時点ではアプリケーション ログ ファイルを見つけることができなかったため、詳細はわかりません。しかし、ここで SecurityException が発生したことは 99.99% 確信しています。SecurityException と getParent() と checkAccess() などの javadoc を見てきましたが、どれもあまり意味がありません。

この新しい環境が原因で、アプリケーションがこの呼び出しで SecurityException をスローする単純な理由を考えられる人はいますか? (そして、コードは他のすべての環境で例外なく確実に実行されます)。私の直感では、どういうわけか、アプリケーションの実行時ユーザーが「何か」へのアクセス許可を持っていないということです...

ああ、これは Java 1.6 (jrockit-jdk) を搭載した Bea Weblogic サーバーで実行されていますが、他の環境とまったく同じように構成する必要があります。

助けてくれてありがとう。

4

2 に答える 2

1

セキュリティマネージャーが使用されているようです。実行する簡単なプログラムを作成して で実行Thread.currentThread().getThreadGroup().getParent()すると-Djava.security.manager、次のように表示されます。

Exception in thread "main" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup)
于 2010-10-29T14:58:44.237 に答える
0

どうでも。問題は、実際にはデータベース列の欠落であることがわかりました。今朝、最終的にログを見つけるのに 2 時間かかりました。ログが見つかったら、実際の問題を見つけるのは非常に簡単でした。

于 2010-10-29T15:09:05.003 に答える