その他の高度な EJB トピック

デッドロック

EJB エンジンには XA 準拠のロック メカニズムが実装されているので、メソッドの呼び出し時のトランザクションと並行処理管理のために EJB オブジェクトがロックされます。EJB エンジンには、トランザクション内の呼び出しやチェーン内の呼び出しで発生する可能性のあるデッドロックに対応する効率的なデッドロック検出メカニズムも実装しています。デッドロックが検出されると、EJB エンジンはデッドロックを解除し、影響を受けたトランザクションをロールバックするか、またはトランザクション内の呼び出しでない場合は allaire.ejipt.DeadlockException を返します。

セキュリティの無効化

EJB セキュリティ チェックを無効にするには、ejb.allowedIdentities を定義して all に設定する env-entry を追加します。これによって、認証されたユーザも未知のユーザも Bean またはメソッドにアクセスできます。EJB セキュリティを使用しない場合は、常にこの env-entry を指定してセキュリティ チェックを無効にします。ejb.allowedIdentiesall に設定すると、すべての呼び出し者が Bean のすべてのメソッドにアクセスできるようになります。env-entry の前にメソッド名を付けると、すべての呼び出し者は、そのメソッドにのみアクセスできます。

SSL

Java 2 に準拠した SSL パッケージ、つまりクライアント/サーバー RMI ソケット ファクトリを使用している SSL パッケージであれば、ホーム/オブジェクト ソケット ファクトリ プロパティでクラス名を指定するだけで、EJB エンジンと統合できます。

ローカル Bean

クライアントが JNDI コンテキストを要求すると、使用可能なすべてのホーム オブジェクトの参照がサーバーによってクライアントに送信されます。このため、すべてのクライアントは、サーバーに公開されているすべてのリモートおよびホーム インターフェイスにアクセスできます。

Bean をローカル専用モードで公開することもできます。この場合、ホーム オブジェクトは、どのクライアントにもエクスポートされず、サーバーで同じ場所に配置されている Bean からのみアクセスできます。Bean をローカルとして指定するには、次の env-entry を Bean の公開記述子に含めます。

<env-entry>
  <env-entry-name>ejipt.isLocal</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>true</env-entry-value>
</env-entry>

ローカル Bean はリモート リソースを消費しません。エンティティ Bean をセッション Bean でラップする場合は、エンティティ Bean をローカルとして指定し、インターフェイスがエクスポートされるのを防ぎます。