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.ObjectMessage) msg;
48 String filename = null;
49 MedRecXMLProcessor xmlProcessor = null;
50 try {
51 filename = (String) message.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 }
|