XMLUploadEJB.ejb
01 package com.bea.medrec.xml;
02 
03 import com.bea.medrec.utils.MedRecLog4jFactory;
04 import javax.jms.JMSException;
05 import javax.jms.Message;
06 import javax.jms.MessageListener;
07 import javax.jms.ObjectMessage;
08 import org.apache.log4j.Logger;
09 import weblogic.ejb.GenericMessageDrivenBean;
10 import weblogic.ejbgen.*;
11 
12 /**
13  <p>Handles the flow of incoming xml processing.</p>
14  *
15  @author Copyright (c) 1999-2006 by BEA Systems, Inc. All Rights Reserved.
16  */
17 @EjbRefs({
18     @EjbRef(name = "ejb/adminsession",
19             home = "com.bea.medrec.controller.AdminSessionHome",
20             remote = "com.bea.medrec.controller.AdminSession",
21             type = Constants.RefType.SESSION,
22             link = "AdminSessionEJB",
23             jndiName = "AdminSessionEJB.AdminSessionHome")
24 })
25 @MessageDriven(ejbName = "XMLUploadEJB",
26                destinationJndiName = "jms/XML_UPLOAD_MDB_QUEUE",
27                destinationType = "javax.jms.Queue",
28                initialBeansInFreePool = "0",
29                maxBeansInFreePool = "10",
30                defaultTransaction = MessageDriven.DefaultTransaction.REQUIRED)
31 @ResourceEnvRefs({
32     @ResourceEnvRef(name = "jms/MAIL_MDB_QUEUE",
33                     type = "javax.jms.Queue",
34                     jndiName = "jms/MAIL_MDB_QUEUE")
35 })
36 public class XMLUploadEJB
37     extends GenericMessageDrivenBean implements MessageListener {
38   private static Logger logger =
39       MedRecLog4jFactory.getLogger(XMLUploadEJB.class.getName());
40 
41   /**
42    <p>Receives filename of XML to be processes.</p>
43    */
44   public void onMessage(Message msg) {
45     logger.debug("Message from xml upload queue: " +
46         msg);
47     ObjectMessage message = (javax.jms.ObjectMessagemsg;
48     String filename = null;
49     MedRecXMLProcessor xmlProcessor = null;
50     try {
51       filename = (Stringmessage.getObject();
52       // Get XML processor, then all pending xml files.
53       xmlProcessor = MedRecXMLProcessor.getInstance();
54       // Pass xml file to be presisted.
55       xmlProcessor.saveXMLRecord(filename);
56     catch (JMSException jmsex) {
57       logger.error("Unable to upload the following file: " +
58           filename, jmsex);
59       getMessageDrivenContext().setRollbackOnly();
60     catch (Exception ex) {
61       logger.error("Unable to upload the following file: " +
62           filename, ex);
63     }
64   }
65 }