public class LocalSlsbInvokerInterceptor extends AbstractSlsbInvokerInterceptor
ローカル EJB ホームが古くなることはないため、ホームオブジェクトをキャッシュします。ターゲット EJB の JNDI ロケーションの指定方法については、JndiObjectLocator を参照してください。
Bean コンテナーでは、このクラスは通常、シングルトンとして最適に使用されます。ただし、その Bean コンテナーがシングルトンを事前にインスタンス化する場合(XML ApplicationContext バリアントと同様)、EJB コンテナーがターゲット EJB をロードする前に Bean コンテナーがロードされると問題が発生する可能性があります。これは、デフォルトでは、JNDI ルックアップはこのクラスの init メソッドで実行されてキャッシュされますが、EJB はまだターゲットの場所にバインドされていないためです。最善の解決策は、lookupHomeOnStartup プロパティを false に設定することです。この場合、EJB への最初のアクセス時にホームがフェッチされます。(このフラグは、下位互換性の理由から、デフォルトでのみ true です)。
AbstractSlsbInvokerInterceptor.setLookupHomeOnStartup(boolean), AbstractSlsbInvokerInterceptor.setCacheHome(boolean)CONTAINER_PREFIXlogger| コンストラクターと説明 |
|---|
LocalSlsbInvokerInterceptor() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected MethodSE | getCreateMethod(ObjectSE home)EJB コンポーネントとして直接機能する EJB3 スタイルのホームオブジェクトを確認します。 |
protected ObjectSE | getSessionBeanInstance() 呼び出しを委譲する EJB インスタンスを返します。 |
ObjectSE | invokeInContext(MethodInvocation invocation) この実装は、呼び出しごとに新しい EJB インスタンスを「作成」します。 |
protected ObjectSE | newSessionBeanInstance() ステートレスセッション Bean の新しいインスタンスを返します。 |
protected void | releaseSessionBeanInstance(EJBLocalObjectEE ejb) 指定された EJB インスタンスを解放します。 |
protected void | removeSessionBeanInstance(EJBLocalObjectEE ejb) 指定された EJB インスタンスを削除します。 |
afterPropertiesSet, create, getHome, invoke, isHomeRefreshable, refreshHome, setCacheHome, setExposeAccessContext, setLookupHomeOnStartupgetExpectedType, getJndiName, lookup, setExpectedType, setJndiNameconvertJndiName, isResourceRef, lookup, lookup, setResourceRefgetJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplatecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE@Nullable public ObjectSE invokeInContext(MethodInvocation invocation) throws ThrowableSE
または、getSessionBeanInstance() および releaseSessionBeanInstance(javax.ejb.EJBLocalObject) をオーバーライドして、EJB インスタンスの作成を変更します。たとえば、単一の共有 EJB インスタンスを保持します。
AbstractSlsbInvokerInterceptor の invokeInContext invocation - AOP メソッドの呼び出し ThrowableSE - 呼び出しが失敗した場合 protected MethodSE getCreateMethod(ObjectSE home) throws EjbAccessException
AbstractSlsbInvokerInterceptor の getCreateMethod home - EJB ホームオブジェクト EjbAccessException - メソッドを取得できなかった場合 protected ObjectSE getSessionBeanInstance() throws NamingExceptionSE, InvocationTargetExceptionSE
NamingExceptionSE - JNDI によってスローされた場合 InvocationTargetExceptionSE - create メソッドによってスローされた場合 newSessionBeanInstance()protected void releaseSessionBeanInstance(EJBLocalObjectEE ejb)
ejb - リリースする EJB インスタンス removeSessionBeanInstance(javax.ejb.EJBLocalObject)protected ObjectSE newSessionBeanInstance() throws NamingExceptionSE, InvocationTargetExceptionSE
NamingExceptionSE - JNDI によってスローされた場合 InvocationTargetExceptionSE - create メソッドによってスローされた場合 AbstractSlsbInvokerInterceptor.create()protected void removeSessionBeanInstance(@Nullable EJBLocalObjectEE ejb)
ejb - 削除する EJB インスタンス EJBLocalObject.remove()EE