注: この Java 配備ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
java.beans.Introspector.setBeanInfoSearchPath()
メソッドの実行時に java.security.AccessControlException
がスローされるSun Java™ Runtime Environment (JRE™) 実装を使ってブラウザ内でアプレットを実行すると、java.beans.Introspector.setBeanInfoSearchPath()
メソッドの実行時に java.security.AccessControlException
がスローされます。
java.security.AccessControlException: access denied (java.util.PropertyPermission * read,write)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertiesAccess(Unknown Source)
at java.beans.Introspector.setBeanInfoSearchPath(Unknown Source)
at ....
同じアプレットが、Microsoft Virtual Machine (VM) では何のエラーもなく実行されます。
Introspector.setBeanInfoSearchPath()
メソッドの呼び出しでは、BeanInfo
クラスの検索に使用されるパッケージ名の一覧を変更できます。複数のアプレットが VM で実行中の場合、ほかのアプレットに BeanInfo
の検索をリダイレクトするために、想定外のパッケージで、信頼されていないアプレットがこのメソッドを呼び出す可能性があります。これはセキュリティー上の欠陥です。
セキュリティーに関する事柄を扱うため、JRE では java.util.PropertyPermission
に対するセキュリティーチェックを Introspector.setBeanInfoSearchPath() メソッドに追加します。署名なしのアプレットがこのメソッドを呼び出すと、java.security.AccessControlException
がスローされます。
上記の原因を修正するには、次の手順に従います。
jarsigner
ツールを使用してアプレットに署名する。これでアプレットは信頼されるアプレットとして実行され、Introspector.setBeanInfoSearchPath()
メソッドを呼び出すためのアクセス権を得る。Introspector.setBeanInfoSearchPath()
を呼び出さないようにアプレットのコードを改変する。たとえば BeanInfo
クラス検索パスに依存する代わりに、完全修飾パッケージ名を使用して BeanInfo
を検索する。JAR 署名および検証ツールである「jarsigner」を参照してください。