クライアントからを呼び出す場合は、最初にJNDIルックアップを介してオブジェクト参照EJBBean
を取得する必要があります。EJBHome
このコードは、作業が必要になるたびに実行する必要があるEJBBean
ため、冗長で高価になります。
この問題を解決するには、EJBHome
オブジェクト参照をキャッシュして、JNDIルックアップを繰り返さずにキャッシュから何度も再利用できます。
これはEJBHomeFactory Pattern
(またはより一般的なサービスロケーターパターン)です。
Map
私が見た実装の大部分は、キャッシュとして同期を使用しHashtable
ます。アプリケーションがサーバーにデプロイされたときにキャッシュが構築され、その後キャッシュに変更が加えられない場合(get()メソッドのみが実行されます)、本当に同期が必要ですかMap
、それとも実行されHashMap
ますか?
HashMap
スレッドの少なくとも1つがマップを変更する場合(これにはSOの投稿もあります)、安全ではないことはわかっていますが、この場合、スレッドは読み取りのみを実行します。
だから、でHashMap
使用しても安全EJBHomeFactory Pattern
ですか?