public class SimpleRemoteSlsbInvokerInterceptor extends AbstractRemoteSlsbInvokerInterceptor implements DisposableBean
呼び出しごとに新しい EJB インスタンスを「作成」するか、すべての呼び出しのためにセッション Bean インスタンスをキャッシュします(setCacheSessionBean(boolean) を参照)。ターゲット EJB の JNDI ロケーションの指定方法については、JndiObjectLocator を参照してください。
Bean コンテナーでは、このクラスは通常、シングルトンとして最適に使用されます。ただし、その Bean コンテナーが(XML ApplicationContext バリアントと同様に)シングルトンを事前にインスタンス化する場合、EJB コンテナーがターゲット EJB をロードする前に Bean コンテナーがロードされると問題が発生する可能性があります。これは、デフォルトでは、JNDI ルックアップはこのクラスの init メソッドで実行されてキャッシュされますが、EJB はまだターゲットの場所にバインドされていないためです。最善の解決策は、"lookupHomeOnStartup" プロパティを "false" に設定することです。この場合、EJB への最初のアクセス時にホームがフェッチされます。(このフラグは、下位互換性のためにデフォルトでのみ true です)。
このインボーカは、通常、EJB コンポーネントインターフェースのスーパーインターフェースとして機能する RMI ビジネスインターフェースで使用されます。または、このインボーカーは、リモート SLSB を、対応する非 RMI ビジネスインターフェース、つまり EJB ビジネスメソッドをミラーリングするが RemoteExceptions を宣言しないインターフェースでプロキシすることもできます。後者の場合、EJB スタブによってスローされた RemoteExceptions は自動的に Spring のチェックされていない RemoteAccessException に変換されます。
RemoteAccessException, AbstractSlsbInvokerInterceptor.setLookupHomeOnStartup(boolean), AbstractSlsbInvokerInterceptor.setCacheHome(boolean), AbstractRemoteSlsbInvokerInterceptor.setRefreshHomeOnConnectFailure(boolean)CONTAINER_PREFIXlogger| コンストラクターと説明 |
|---|
SimpleRemoteSlsbInvokerInterceptor() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | destroy() 必要に応じて、キャッシュされたセッション Bean インスタンスを削除します。 |
protected ObjectSE | doInvoke(MethodInvocation invocation) この実装は、呼び出しごとに新しい EJB インスタンスを「作成」します。 |
protected ObjectSE | getSessionBeanInstance() 呼び出しを委譲する EJB コンポーネントインスタンスを返します。 |
protected void | refreshHome() 必要に応じて、キャッシュされたセッション Bean インスタンスをリセットします。 |
protected void | releaseSessionBeanInstance(EJBObjectEE ejb) 指定された EJB インスタンスを解放します。 |
void | setCacheSessionBean(boolean cacheSessionBean) 実際のセッション Bean オブジェクトをキャッシュするかどうかを設定します。 |
getCreateMethod, invokeInContext, isConnectFailure, isHomeRefreshable, newSessionBeanInstance, refreshAndRetry, removeSessionBeanInstance, setRefreshHomeOnConnectFailureafterPropertiesSet, create, getHome, invoke, setCacheHome, setExposeAccessContext, setLookupHomeOnStartupgetExpectedType, getJndiName, lookup, setExpectedType, setJndiNameconvertJndiName, isResourceRef, lookup, lookup, setResourceRefgetJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplatecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void setCacheSessionBean(boolean cacheSessionBean)
標準の EJB 準拠ではデフォルトでオフ。このフラグをオンにして、実際のセッション Bean オブジェクトをキャッシュできることがわかっているサーバーのセッション Bean アクセスを最適化します。
@Nullable protected ObjectSE doInvoke(MethodInvocation invocation) throws ThrowableSE
または、getSessionBeanInstance() と releaseSessionBeanInstance(javax.ejb.EJBObject) をオーバーライドして、EJB インスタンスの作成を変更します。たとえば、単一の共有 EJB コンポーネントインスタンスを保持します。
AbstractRemoteSlsbInvokerInterceptor の doInvoke invocation - AOP メソッドの呼び出し ThrowableSE - 呼び出しが失敗した場合 AbstractSlsbInvokerInterceptor.getHome(), AbstractRemoteSlsbInvokerInterceptor.newSessionBeanInstance()protected ObjectSE getSessionBeanInstance() throws NamingExceptionSE, InvocationTargetExceptionSE
デフォルトの実装は AbstractRemoteSlsbInvokerInterceptor.newSessionBeanInstance() に委譲します。
NamingExceptionSE - JNDI によってスローされた場合 InvocationTargetExceptionSE - create メソッドによってスローされた場合 AbstractRemoteSlsbInvokerInterceptor.newSessionBeanInstance()protected void releaseSessionBeanInstance(EJBObjectEE ejb)
デフォルトの実装は AbstractRemoteSlsbInvokerInterceptor.removeSessionBeanInstance(javax.ejb.EJBObject) に委譲します。
ejb - リリースする EJB コンポーネントインスタンス AbstractRemoteSlsbInvokerInterceptor.removeSessionBeanInstance(javax.ejb.EJBObject)protected void refreshHome()
throws NamingExceptionSEAbstractSlsbInvokerInterceptor の refreshHome NamingExceptionSE - JNDI ルックアップによってスローされた場合 JndiObjectLocator.lookup(), AbstractSlsbInvokerInterceptor.getCreateMethod(java.lang.Object)public void destroy()
DisposableBean の destroy