8.2.5. EJB メソッドパーミッション
アプリケーションアセンブラーは、method-permission 要素宣言を使用して EJB のホームおよびリモートインターフェースメソッドを呼び出すことができるロールを設定できます。
図8.3 Java EE メソッドパーミッション要素

各
method-permission
要素には、メソッド子要素によって識別される EJB メソッドへのアクセスが許可される論理ロールを定義する 1 つ以上の role-name 子要素が含まれます。role-name
要素の代わりに 未
確認要素を指定して、認証されたユーザーがメソッド子要素で識別されるメソッドにアクセスできることを宣言することもできます。さらに、exclude-list
要素を持つメソッドにアクセスできないように宣言することもできます。EJB が method-permission
要素を使用してロールによってアクセス可能であることが宣言されていないメソッドがある場合、EJB メソッドはデフォルトで使用から除外されます。これは、exclude-list
にメソッドのデフォルトと同等です。
図8.4 Java EE メソッド要素

メソッド要素宣言には、サポートされるスタイルが 3 つあります。
1 つ目は、名前付きエンタープライズ Bean のすべてのホームおよびコンポーネントインターフェースメソッドを参照するために使用されます。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>*</method-name> </method>
2 つ目のスタイルは、名前付きエンタープライズ Bean のホームまたはコンポーネントインターフェースの特定メソッドを参照するために使用されます。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>METHOD</method-name> </method>
オーバーロード名が同じ複数のメソッドがある場合、このスタイルはオーバーロードされたすべてのメソッドを参照します。
3 つ目のスタイルは、オーバーロード名を持つメソッドのセット内で指定されたメソッドを参照するために使用されます。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>METHOD</method-name> <method-params> <method-param>PARAMETER_1</method-param> <!-- ... --> <method-param>PARAMETER_N</method-param> </method-params> </method>
メソッドは、指定されたエンタープライズ bean のホームまたはリモートインターフェースで定義する必要があります。method-param 要素値は、対応するメソッドパラメーター型の完全修飾名です。同じオーバーロードされた署名を持つ複数のメソッドがある場合、パーミッションは一致するオーバーロードされたすべてのメソッドに適用されます。
オプションの
method-intf
要素を使用すると、エンタープライズ Bean のホームインターフェースとリモートインターフェースの両方で定義される名前と署名を持つメソッドを区別することができます。
例8.5「method-permission 要素の使用を示す ejb-jar.xml 記述子フラグメント。」
method-permission
要素の使用の完全な例を提供します。
例8.5 method-permission 要素の使用を示す ejb-jar.xml 記述子フラグメント。
<ejb-jar> <assembly-descriptor> <method-permission> <description>The employee and temp-employee roles may access any method of the EmployeeService bean </description> <role-name>employee</role-name> <role-name>temp-employee</role-name> <method> <ejb-name>EmployeeService</ejb-name> <method-name>*</method-name> </method> </method-permission> <method-permission> <description>The employee role may access the findByPrimaryKey, getEmployeeInfo, and the updateEmployeeInfo(String) method of the AardvarkPayroll bean </description> <role-name>employee</role-name> <method> <ejb-name>AardvarkPayroll</ejb-name> <method-name>findByPrimaryKey</method-name> </method> <method> <ejb-name>AardvarkPayroll</ejb-name> <method-name>getEmployeeInfo</method-name> </method> <method> <ejb-name>AardvarkPayroll</ejb-name> <method-name>updateEmployeeInfo</method-name> <method-params> <method-param>java.lang.String</method-param> </method-params> </method> </method-permission> <method-permission> <description>The admin role may access any method of the EmployeeServiceAdmin bean </description> <role-name>admin</role-name> <method> <ejb-name>EmployeeServiceAdmin</ejb-name> <method-name>*</method-name> </method> </method-permission> <method-permission> <description>Any authenticated user may access any method of the EmployeeServiceHelp bean</description> <unchecked/> <method> <ejb-name>EmployeeServiceHelp</ejb-name> <method-name>*</method-name> </method> </method-permission> <exclude-list> <description>No fireTheCTO methods of the EmployeeFiring bean may be used in this deployment</description> <method> <ejb-name>EmployeeFiring</ejb-name> <method-name>fireTheCTO</method-name> </method> </exclude-list> </assembly-descriptor> </ejb-jar>