RequestItemsBean.java
上传用户:hgs128
上传日期:2007-02-03
资源大小:166k
文件大小:4k
源码类别:

百货/超市行业

开发平台:

WINDOWS

  1. /*
  2.  * Created on 1999-5-18
  3.  */
  4. package mdb;
  5. import java.rmi.RemoteException;
  6. import java.util.ArrayList;
  7. import java.util.Iterator;
  8. import javax.ejb.CreateException;
  9. import javax.ejb.FinderException;
  10. import javax.ejb.MessageDrivenBean;
  11. import javax.jms.JMSException;
  12. import javax.jms.MessageListener;
  13. import javax.jms.ObjectMessage;
  14. import javax.naming.NamingException;
  15. import cmp.*;
  16. import stateless.*;
  17. /**
  18.  * @ejb.bean name="RequestItems" 
  19.  *     acknowledge-mode="Auto-acknowledge" 
  20.  *     destination-type="javax.jms.Queue" 
  21.  *     transaction-type="Bean" 
  22.  * 
  23.  *--
  24.  * This is needed for JOnAS.
  25.  * If you are not using JOnAS you can safely remove the tags below.
  26.  * @jonas.bean ejb-name="RequestItems"
  27.  * jndi-name="RequestItemsBean"
  28.  * @jonas.message-driven-destination jndi-name="YOUR_DESTINATION"
  29.  * 
  30.  *--
  31.  * 
  32.  *--
  33.  * This is needed for JBOSS.
  34.  * If you are not using JBOSS you can safely remove the tags below.
  35.  * @jboss.destination-jndi-name name="MDB_DESTINATION"
  36.  * 
  37.  * @ejb.ejb-ref
  38.  * ejb-name="StoreAccess"
  39.  * view-type="remote"
  40.  * ref-name="StoreAccess"
  41.  * 
  42.  * @jboss.ejb-ref-jndi ref-name="StoreAccess"
  43.  * jndi-name="StoreAccessBean"
  44.  * 
  45.  * @ejb.ejb-ref
  46.  * ejb-name="Supplier"
  47.  * view-type="local"
  48.  * ref-name="SupplierLocal
  49.  * 
  50.  * @jboss.ejb-ref-jndi ref-name="SupplierLocal"
  51.  * jndi-name="SupplierLocal"
  52.  * 
  53.  * @jboss.destination-jndi-name
  54.  * name="queue/MdbQueue"
  55.  *--
  56.  **/
  57. public class RequestItemsBean implements MessageDrivenBean, MessageListener {
  58. private StoreAccessHome storeAccess = null;
  59. private SupplierLocalHome suppLocalHome = null;
  60. private ItemLocalHome itemLocalHome = null;
  61. /** Required method for container to set context. */
  62. public void setMessageDrivenContext(
  63. javax.ejb.MessageDrivenContext messageContext)
  64. throws javax.ejb.EJBException {
  65. this.messageContext = messageContext;
  66. }
  67. /** 
  68.  * Required creation method for message-driven beans. 
  69.  * 
  70.  * @ejb.create-method 
  71.  */
  72. public void ejbCreate() {
  73. // no specific action required for message-driven beans 
  74. }
  75. /** Required removal method for message-driven beans. */
  76. public void ejbRemove() {
  77. messageContext = null;
  78. }
  79. /** 
  80.  * This method implements the business logic for the EJB. 
  81.  * 
  82.  * <p>Make sure that the business logic accounts for asynchronous message processing. 
  83.  * For example, it cannot be assumed that the EJB receives messages in the order they were 
  84.  * sent by the client. Instance pooling within the container means that messages are not 
  85.  * received or processed in a sequential order, although individual onMessage() calls to 
  86.  * a given message-driven bean instance are serialized. 
  87.  * 
  88.  * <p>The <code>onMessage()</code> method is required, and must take a single parameter 
  89.  * of type javax.jms.Message. The throws clause (if used) must not include an application 
  90.  * exception. Must not be declared as final or static. 
  91.  */
  92. public void onMessage(javax.jms.Message message) {
  93. System.out.println("Message Driven Bean got message " + message);
  94. System.out.println("Entering RequestitemsBean.onMessage()");
  95. ArrayList outOfStockItems = null;       
  96. Iterator itemsIterator = null;
  97. if(message instanceof ObjectMessage) {
  98. try {
  99. RequestItem ri=(RequestItem)((ObjectMessage)message).getObject();
  100. StoreAccess access=StoreAccessUtil.getHome().create();
  101. String mgrUsrID=access.loginUser(ri.getUsername(), ri.getPasswd());
  102. outOfStockItems=access.getOutOfStockItems();
  103. itemsIterator=outOfStockItems.iterator();
  104. this.suppLocalHome=SupplierUtil.getLocalHome();
  105. System.out.println("List of out of stock items ");
  106. while(itemsIterator.hasNext()) {
  107. ItemData itemData=(ItemData)itemsIterator.next();
  108. String suppID=itemData.getSupplierID();
  109. SupplierLocal supplier=this.suppLocalHome.findByPrimaryKey(suppID);
  110. Integer quantity=new Integer(ri.getQuantity());
  111. String itemID=ri.getItemID();
  112. supplier.requestItem(itemID, quantity);
  113. }
  114. } catch (JMSException e) {
  115. e.printStackTrace();
  116. } catch (RemoteException e) {
  117. e.printStackTrace();
  118. } catch (CreateException e) {
  119. e.printStackTrace();
  120. } catch (NamingException e) {
  121. e.printStackTrace();
  122. } catch (FinderException e) {
  123. e.printStackTrace();
  124. }
  125. }
  126. // do business logic here 
  127. }
  128. /** The context for the message-driven bean, set by the EJB container. */
  129. private javax.ejb.MessageDrivenContext messageContext = null;
  130. }