⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 standardejbeventlisteneragentbean.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 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 + -