EJB3.0 MDB 异步日志实现

EJB3.0 MDB 异步日志实现
/*
 * LogMessageBean.java
 * Copyright (C) 2009  <[email protected]>
 *
 *        This program is free software; you can redistribute it and/or modify
 *        it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *     (at your option) any later version.
 *
 *       This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *        GNU General Public License for more details.
 *
 
*/
package  org.lambdasoft.mdb;

import  java.util.Map;

import  javax.ejb.ActivationConfigProperty;
import  javax.ejb.MessageDriven;
import  javax.jms.Message;
import  javax.jms.MessageListener;
import  javax.jms.ObjectMessage;
import  javax.naming.InitialContext;

import  org.lambdasoft.components.log.BaseLogSendInterface;
import  org.lambdasoft.components.log.OperateType;
import  org.lambdasoft.components.log.param.LogParam;
import  org.lambdasoft.utils.FileUtil;

/**
 * 日志添加消息
 * 
 * 
@author  lei.tang ([email protected])
 * @date 2009-9-17
 * 
@version  1.0
 
*/
@MessageDriven(activationConfig 
=  {
        @ActivationConfigProperty(propertyName 
=   " destinationType " , propertyValue  =  MessageConstant.DESTINATIONTYPE_QUEUE),
        @ActivationConfigProperty(propertyName 
=   " acknowledgeMode " , propertyValue  =  MessageConstant.ACKNOWLEDGEMODE_AUTO),
        @ActivationConfigProperty(propertyName 
=   " destination " , propertyValue  =  MessageConstant.DESTINATION_LOG) })
public   class  LogMessageBean  implements  MessageListener{
    
public   static   final  String LOG_PREFIX  =   " LOG.TYPE.BEAN. " ;
    
private  Map < String, String >  logConfigure;
    
public   void  onMessage(Message message) {
        
if ( ! (message  instanceof  ObjectMessage))
            
return ;
        ObjectMessage objectMessage 
=  (ObjectMessage)message;
        
try  {
            
if ( ! (objectMessage.getObject()  instanceof  LogParam))
                
return ;
            LogParam logParam 
=  (LogParam)objectMessage.getObject();
            InitialContext context 
=   new  InitialContext();
            
for  (Object level : logParam.getOperateTypes()) {
                OperateType operateType 
=  (OperateType)level;
                String ejbName 
=  getConfigure().get(LOG_PREFIX  +  (operateType.toString()));
                Object sendComponent 
=  context.lookup(ejbName);
                
if  (sendComponent  !=   null
                        
&&  (sendComponent  instanceof  BaseLogSendInterface)) {
                    ((BaseLogSendInterface) sendComponent).log(logParam);
                }
            }
        } 
catch  (Exception e) {
            e.printStackTrace();
            
return ;
        }
    }
    
    
private  Map < String, String >  getConfigure() {
        String propertiesName 
=   " /org/lambdasoft/components/log/ejb/logConfigure.properties " ;
        
try  {
            logConfigure 
=  FileUtil.getPropertiesMap(LogMessageBean. class ,propertiesName);
            
return  logConfigure;
        } 
catch  (Exception e) {
            
return   null ;
        }
    }
}



/*
 * MessageConstant.java
 * Copyright (C) 2009  <[email protected]>
 *
 *        This program is free software; you can redistribute it and/or modify
 *        it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *     (at your option) any later version.
 *
 *       This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *        GNU General Public License for more details.
 *
 
*/
package  org.lambdasoft.mdb;

/**
 * 消息驱动bean定义
 * 
 * 
@author  lei.tang ([email protected])
 * @date 2009-9-18
 * 
@version  1.0
 
*/
public   class  MessageConstant {
    
public   static   final  String DESTINATIONTYPE_QUEUE  =   " javax.jms.Queue " ;
    
public   static   final  String ACKNOWLEDGEMODE_AUTO  =   " Auto-acknowledge " ; // 会话确认模式
    
    
public   static   final  String DESTINATION_CACHE  =   " queue/AO_CACHE " ;
    
public   static   final  String DESTINATION_LOG  =   " queue/AO_LOG " ;
    
public   static   final  String DESTINATION_MAIL  =   " queue/AO_MAIL " ;
    
public   static   final  String DESTINATION_CACHE_REFLASH  =   " queue/AO_CACHE_REFLASH " ;
    
    
private  MessageConstant() {}
    
}



/*
 * LogMessage.java
 * Copyright (C) 2009  <[email protected]>
 *
 *     This program is free software; you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */
package org.lambdasoft.mdb;

import java.io.Serializable;

/**
 * 
 * @author lei.tang ([email protected])
 * @date 2009-9-17
 * @version 1.0
 */
public interface LogMessage extends Serializable{
String getType();
String getLevel();
String getLog();
}

你可能感兴趣的:(EJB3.0 MDB 异步日志实现)