RequestResearch.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:5k
源码类别:

Java编程

开发平台:

Java

  1. package bible.ejb.session.example1;
  2. import java.rmi.*;
  3. import javax.ejb.*;
  4. import java.util.*;
  5. import javax.naming.*;
  6. /**
  7.  * Class RequestResearch
  8.  *
  9.  *
  10.  * @author
  11.  * @version %I%, %G%
  12.  */
  13. public class RequestResearch implements SessionBean {
  14.   // Implemented create method required by RequestResearchHome.
  15.   /**
  16.    * Method ejbCreate
  17.    *
  18.    *
  19.    */
  20.   public void ejbCreate() {}
  21.   // Implemented methods required by SessionBean.
  22.   private SessionContext sessionContext;
  23.   /**
  24.    * Method ejbRemove
  25.    *
  26.    *
  27.    * @throws RemoteException
  28.    *
  29.    */
  30.   public void ejbRemove() throws RemoteException {}
  31.   /**
  32.    * Method ejbActivate
  33.    *
  34.    *
  35.    * @throws RemoteException
  36.    *
  37.    */
  38.   public void ejbActivate() throws RemoteException {}
  39.   /**
  40.    * Method ejbPassivate
  41.    *
  42.    *
  43.    * @throws RemoteException
  44.    *
  45.    */
  46.   public void ejbPassivate() throws RemoteException {}
  47.   /**
  48.    * Method setSessionContext
  49.    *
  50.    *
  51.    * @param sessionContext
  52.    *
  53.    * @throws RemoteException
  54.    *
  55.    */
  56.   public void setSessionContext(SessionContext sessionContext)
  57.     throws RemoteException {
  58.     this.sessionContext = sessionContext;
  59.   }
  60.   // Methods for processing requests for research as required
  61.   // for the RequestResearchRemote interface.
  62.   /**
  63.    * Fetches and returns research for a security.
  64.    */
  65.   public String requestResearch(String symbol) throws RemoteException {
  66.     // CheckEnvironment flag here to see whether to route the call to the
  67.     // internal system.
  68.     String research = null;
  69.     if (this.useRequestDataManager()) {
  70.       System.out.println("Locally calling RequestDataManager for research.");
  71.       research = getResearchFromDataManager(symbol);
  72.     } else {
  73.       System.out.println("Randomly generating research for this symbol.");
  74.       research = createRandomResearch(symbol);
  75.     }
  76.     return research;
  77.   }
  78.   /**
  79.    * Randomly creates 'research' for this security.
  80.    */
  81.   private String createRandomResearch(String symbol) {
  82.     Random rand = new Random();
  83.     int    x    = rand.nextInt();
  84.     x = x % 3;
  85.     String research = null;
  86.     switch (x) {
  87.     case 0 :
  88.       research = "Zeetrade recommends you buy " + symbol;
  89.       break;
  90.     case 1 :
  91.       research = "Zeetrade recommends you hold " + symbol;
  92.       break;
  93.     default :
  94.       research = "Zeetrade recommends you sell " + symbol;
  95.       break;
  96.     }
  97.     return research;
  98.   }
  99.   /**
  100.    * Does an environment entry lookup to determine where or not to use
  101.    * the DataManager or randomly generate data here.  This field can be edited in
  102.    * the ejb-jar.xml before EJB deployment.
  103.    */
  104.   private boolean useRequestDataManager() {
  105.     System.out.println("Checking the env-entry for useRequestDataManager");
  106.     InitialContext ctx        = null;
  107.     boolean        useManager = false;
  108.     try {
  109.       // Because Request Research is a bean living in the EJB container,
  110.       // no need to specify server parameters to obtain the correct context.
  111.       ctx = new InitialContext();
  112.       Boolean useManagerBool =
  113.         (Boolean) ctx.lookup("java:comp/env/useRequestDataManager");
  114.       useManager = useManagerBool.booleanValue();
  115.     } catch (Exception e) {
  116.       e.printStackTrace();
  117.     } finally {
  118.       try {
  119.         ctx.close();
  120.       } catch (Exception e) {}
  121.     }
  122.     return useManager;
  123.   }
  124.   /**
  125.    * Calls local EJB RequestDataManager to get research.
  126.    */
  127.   private String getResearchFromDataManager(String symbol) {
  128.     InitialContext ctx = null;
  129.     StringBuffer   sb  = new StringBuffer();
  130.     try {
  131.       // Because Request Research is a bean living in the EJB container,
  132.       // no need to specify server parameters to obtain the correct context.
  133.       ctx = new InitialContext();
  134.       Object objref = ctx.lookup("RequestDataManager");
  135.       // No need to do narrow, simply cast as this is a local object to this JVM.
  136.       RequestDataManagerLocalHome home     =
  137.         (RequestDataManagerLocalHome) objref;
  138.       RequestDataManagerLocal     dataBean = home.create();
  139.       sb.append("**Data Retreived from the local datasource**");
  140.       // Call the dataBean, this is not pass by value as in RMI (Remote
  141.       // beans included) Instead the stringbuffer is passed by reference,
  142.       // and therefore when the local session EJB RequestDataManager
  143.       // appends to it, the appends are altering this buffer (sb).
  144.       dataBean.appendResearchData(sb, symbol);
  145.     } catch (Exception e) {
  146.       e.printStackTrace();
  147.     } finally {
  148.       try {
  149.         ctx.close();
  150.       } catch (Exception e) {}
  151.     }
  152.     return sb.toString();
  153.   }
  154. }
  155. /*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
  156. /*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/