Ejb3.0、Weblogic 11g、JDBCを使用する
別のデプロイメントEARでリモートで実行されているメソッドを呼び出しています。
呼び出されているリモートデプロイメントのメソッドですが、
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
問題は、リモートメソッドが呼び出される前にデータベースで実行するすべてのロジックが、リモートメソッドが終了するまでコミットされないことです。
私が喜んで行うのは、「前」のロジックを実行させ、リモート呼び出しの後に戻って通常どおり続行することをコミットすることです。
何か案が?
説明するいくつかのコード:
@CallByReference
@Stateless(mappedName = "ejb/OperatorProccessBean")
@Local({ OperatorProccessBeanLocal.class })
@Remote({ OperatorProccessBeanRemote.class })
public class OperatorProccessBean implements OperatorProccessBeanLocal,
OperatorProccessBeanRemote
{
...
SBNDispatchBeanRemote SBNDispatchBean = (SBNDispatchBeanRemote) context.lookup("ejb/SBNDispatchBean#com.mirs.sbn.dispatch.SBNDispatchBeanRemote");
if (SBNDispatchBean == null)
{
logger.error(TAG + " SBNDispatchBean is null");
}
else
{
//until here I want all my data to be commited without waiting for the upcoming remote method to finish
SBNDispatchBean.updateSubscriberInBlockingList(...);
}
...
}
これで、メソッドupdateSubscriberInBlockingList()
に注釈が付けられ ます
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
そのメソッドが呼び出される前にデータをコミットしたい。
よろしくお願いします、レイ。