Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/ahlner/Log4J2DB/beans/Log4JMessageListener.java


1   /* $Id: Log4JMessageListener.java,v 1.11 2003/08/17 17:57:11 phah Exp $
2    * Project: Log4J2DB.
3    * 
4    * This Software is published under General Public License.
5    * See terms of licence at gnu.org
6    */
7   /*
8    * Created on Mar 8, 2003 by Philipp Ahlner
9    */
10  package org.ahlner.Log4J2DB.beans;
11  import javax.ejb.EJBException;
12  import javax.ejb.MessageDrivenBean;
13  import javax.ejb.MessageDrivenContext;
14  import javax.jms.JMSException;
15  import javax.jms.Message;
16  import javax.jms.MessageListener;
17  import javax.jms.ObjectMessage;
18  import org.apache.log4j.Logger;
19  import org.apache.log4j.spi.LoggingEvent;
20  /**
21   * @author Philipp Ahlner
22   * @ejb.bean name = "Log4JMessageListener" destination-type = "javax.jms.Topic" acknowledge-mode = "Auto-acknowledge"
23   * @jboss.destination-jndi-name name = "MyErrorsTopic" 
24   */
25  public class Log4JMessageListener implements MessageDrivenBean, MessageListener
26  {
27      private static Logger log = Logger.getLogger(Log4JMessageListener.class);
28      /* (non-Javadoc)
29       * @see javax.ejb.MessageDrivenBean#setMessageDrivenContext(javax.ejb.MessageDrivenContext)
30       */
31      MessageDrivenContext context = null;
32      public void ejbCreate()
33      {
34          log.debug("ejbCreate()");
35      }
36      public void setMessageDrivenContext(MessageDrivenContext context) throws EJBException
37      {
38          this.context = context;
39      }
40      /* (non-Javadoc)
41       * @see javax.ejb.MessageDrivenBean#ejbRemove()
42       */
43      public void ejbRemove()
44      {
45          log.debug("ejbRemove()");
46      }
47      /* (non-Javadoc)
48       * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
49       */
50      public void onMessage(Message msg)
51      {
52          log.debug("onMessage()");
53          LoggingEvent evt = null;
54          if (msg instanceof ObjectMessage)
55          {
56              ObjectMessage omsg = (ObjectMessage) msg;
57              try
58              {
59                  evt = (LoggingEvent) omsg.getObject();
60              }
61              catch (JMSException e)
62              {
63                  log.error("Received not a Log4J LoggingEvent: " + e.getMessage());
64              }
65              try
66              {
67                  LogEventHome logEventHome = LogEventUtil.getHome();
68                  // map LoggingEvent properties to bean properties
69                  logEventHome.create(
70                    "n/a", //FIXME hostname must be decoded in further log4j versions!!!
71                      evt.categoryName,
72                      new Float(evt.timeStamp),
73                      evt.level.toString(),
74                      evt.getRenderedMessage()); 
75              }
76              catch (Exception e1)
77              {
78                  e1.printStackTrace();
79              }
80          }
81      }
82  }
83  /*
84   * $Log: Log4JMessageListener.java,v $
85   * Revision 1.11  2003/08/17 17:57:11  phah
86   * fixed BugId: [ 789746 ] Session not serailizable
87   *
88   * Revision 1.10  2003/07/05 17:20:40  phah
89   * some improvements
90   *
91   * Revision 1.9  2003/04/12 09:39:32  phah
92   * bug fixed
93   *
94   * Revision 1.8  2003/03/24 20:45:47  phah
95   * Primary key class removed
96   *
97   * Revision 1.7  2003/03/23 23:13:02  phah
98   * Interfaces replaced by XDoclet
99   *
100  * Revision 1.6  2003/03/15 16:08:13  phah
101  * deployment descriptor changed
102  *
103  * Revision 1.5  2003/03/13 19:31:57  phah
104  * some interface changes
105  *
106  * Revision 1.4  2003/03/12 21:27:04  phah
107  * Interface change: serialization of LoggingEvent resides in
108  * the MessageListener.
109  *
110  * Revision 1.3  2003/03/12 18:16:07  phah
111  * souce format and cvs id + log added
112  *
113  */