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_PREFIX
logger
コンストラクターと説明 |
---|
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, setLookupHomeOnStartup
getExpectedType, getJndiName, lookup, setExpectedType, setJndiName
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate
cloneSE, 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