📄 standardejbeventlisteneragentbean.java
字号:
/*
* StandardEJBEventListenerAgentBean.java
*
* Created on 2002/02/25, 11:09
*/
package jp.co.intra_mart.framework.base.event;
import jp.co.intra_mart.framework.system.log.LogConstant;
import jp.co.intra_mart.framework.system.log.LogManager;
import jp.co.intra_mart.framework.base.data.DataManager;
import jp.co.intra_mart.framework.base.data.DataAccessController;
import javax.ejb.EJBException;
import jp.co.intra_mart.framework.base.data.DataManagerException;
import jp.co.intra_mart.framework.base.data.DataConnectException;
import jp.co.intra_mart.framework.system.exception.ApplicationException;
import jp.co.intra_mart.framework.system.exception.SystemException;
/**
* EJB傪棙梡偡傞応崌偺拪徾揑側僀儀儞僩儕僗僫偱偡丅
* 儊僜僢僪{@link #fire(jp.co.intra_mart.framework.base.event.Event, jp.co.intra_mart.framework.base.data.DataAccessController)}傪幚憰偡傞昁梫偑偁傝傑偡丅
*
* @author INTRAMART
* @version 1.0
*/
public abstract class StandardEJBEventListenerAgentBean
extends EJBEventListenerAgentBean {
/**
* StandardEJBEventListenerAgentBean傪怴婯偵惗惉偟傑偡丅
*/
public StandardEJBEventListenerAgentBean() {
super();
}
/**
* 儂乕儉僀儞僞僼僃乕僗偺堷悢側偟偺create()儊僜僢僪偵懳墳偟傑偡丅
*
* @since 3.2
*/
public void ejbCreate() {
}
/**
* 僀儀儞僩張棟傪幚峴偟傑偡丅
* 偙偺僋儔僗偱偼埲壓偺傛偆側弴斣偱張棟傪峴偄傑偡丅
* <OL>
* <LI>僀儀儞僩僩儕僈偺幚峴(慜張棟)
* <LI>僀儀儞僩張棟偺幚峴({@link #fire(Event, DataAccessController)})
* <LI>僀儀儞僩僩儕僈偺幚峴(屻張棟)
* <LI>娙堈僩儔儞僓僋僔儑儞偺僐儈僢僩({@link jp.co.intra_mart.framework.base.data.DataAccessController#commit()})
* </OL>
* 偙偺僋儔僗偱偼{@link StandardEventListener#execute(Event)}偲偼堘偄捈愙UserTransaction傪埖偭偰偄傑偣傫丅偦偺偨傔丄偙偺EJB傪巊偆偨傔偵偼僐儞僥僫娗棟僩儔儞僓僋僔儑儞(Container-management Transaction:CMT)傪巊梡偟偰偔偩偝偄丅
*
* @return 僀儀儞僩張棟寢壥
* @param event 僀儀儞僩
* @throws ApplicationException 僀儀儞僩張棟帪偵傾僾儕働乕僔儑儞椺奜偑敪惗
* @throws SystemException 僔僗僥儉張棟帪偵傾僾儕働乕僔儑儞椺奜偑敪惗
* @throws EJBException 僔僗僥儉儗儀儖偺僄儔乕
*/
public EventResult execute(Event event)
throws ApplicationException, SystemException, EJBException {
DataManager manager = null;
DataAccessController dataAccessController = null;
EventTriggerList triggerList = null;
EventTriggerList postTriggerList = null;
EventResult result = null;
// 僨乕僞傾僋僙僗僐儞僩儘乕儔偺庢摼
try {
manager = DataManager.getDataManager();
dataAccessController = manager.getDataAccessController();
} catch (DataManagerException e) {
throw new EJBException(e.getMessage(), e);
}
// 僀儀儞僩張棟
try {
// 僀儀儞僩僩儕僈乮慜張棟乯偺庢摼
try {
triggerList =
new EventTriggerList(
event.getApplication(),
event.getKey());
} catch (Exception e) {
// 僄儔乕儘僌偵弌椡// Debug
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + e.getMessage(),
e);
triggerList = null;
}
// 僀儀儞僩僩儕僈乮屻張棟乯偺庢摼
try {
postTriggerList =
new EventTriggerList(
event.getApplication(),
event.getKey(),
false);
} catch (Exception e) {
// 僄儔乕儘僌偵弌椡// Debug
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + e.getMessage(),
e);
postTriggerList = null;
}
// 僀儀儞僩僩儕僈偺幚峴乮慜張棟乯
if (triggerList != null) {
triggerList.fireAll(event, dataAccessController);
}
// 僀儀儞僩張棟偺幚峴
result = fire(event, dataAccessController);
// 僀儀儞僩僩儕僈偺幚峴乮屻張棟乯
if (postTriggerList != null) {
postTriggerList.fireAll(event, dataAccessController);
}
dataAccessController.commit();
} catch (Exception e) {
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + e.getMessage(),
e);
// 椺奜偑敪惗偟偨応崌丄儘乕儖僶僢僋偡傞
try {
this.sessionContext.setRollbackOnly();
} catch (IllegalStateException ex) {
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + ex.getMessage(),
ex);
}
try {
dataAccessController.rollback();
} catch (DataConnectException ex) {
// 儘僌
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + ex.getMessage(),
ex);
}
if (e instanceof EJBException) {
throw (EJBException)e;
} else if (e instanceof ApplicationException) {
throw (ApplicationException)e;
} else if (e instanceof SystemException) {
throw (SystemException)e;
} else {
throw new SystemException(e.getMessage(), e);
}
} finally {
// 僨乕僞傾僋僙僗僐儞僩儘乕儔偺儕儕乕僗
try {
dataAccessController.release();
} catch (DataConnectException e) {
// 儘僌
LogManager.getLogManager().getLogAgent().sendMessage(
EventManager.class.getName(),
LogConstant.LEVEL_ERROR,
EventManager.LOG_HEAD + e.getMessage(),
e);
}
}
// 僀儀儞僩張棟寢壥傪曉偡
return result;
}
/**
* 僀儀儞僩偵懳偡傞張棟偱偡丅
*
* @param event 僀儀儞僩
* @param dataAccessController 僨乕僞傾僋僙僗僐儞僩儘乕儔
* @return 僀儀儞僩張棟寢壥
* @throws SystemException 僔僗僥儉椺奜偑敪惗
* @throws ApplicationException 傾僾儕働乕僔儑儞椺奜偑敪惗
*/
protected abstract EventResult fire(
Event event,
DataAccessController dataAccessController)
throws SystemException, ApplicationException;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -