⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tellerbean.java

📁 卡内基梅隆大学软件工程课件,很全面
💻 JAVA
字号:
/* * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. *  * This software is the proprietary information of Sun Microsystems, Inc.   * Use is subject to license terms. *  */import java.util.*;import javax.ejb.*;import java.sql.*;import javax.sql.*;import javax.naming.*;import javax.transaction.*;public class TellerBean implements SessionBean {   private String customerId;   private double machineBalance;   private SessionContext context;   private Connection con;   private String dbName = "java:comp/env/jdbc/TellerDB";   public void withdrawCash(double amount) {      UserTransaction ut = context.getUserTransaction();      try {         ut.begin();         updateChecking(amount);         machineBalance -= amount;         insertMachine(machineBalance);         ut.commit();      } catch (Exception ex) {          try {             ut.rollback();          } catch (SystemException syex) {              throw new EJBException                 ("Rollback failed: " + syex.getMessage());          }          throw new EJBException              ("Transaction failed: " + ex.getMessage());     }   }   public double getCheckingBalance() {      try {         return selectChecking();      } catch (SQLException ex) {          throw new EJBException             ("Unable to get balance: "             + ex.getMessage());      }   }   public void ejbCreate(String id) throws CreateException {      customerId = id;      try {         makeConnection();         machineBalance = selectMachine();      } catch (Exception ex) {          throw new CreateException(ex.getMessage());      }        }   public void ejbRemove()  {      try {         con.close();      } catch (SQLException ex) {          throw new EJBException(ex.getMessage());      }   }   public void ejbActivate()  {      try {         makeConnection();      } catch (Exception ex) {          throw new EJBException(ex.getMessage());      }   }   public void ejbPassivate()  {      try {         con.close();      } catch (SQLException ex) {          throw new EJBException(ex.getMessage());      }   }   public void setSessionContext(SessionContext context) {      this.context = context;   }   public TellerBean() {}/************************** Database Routines **********************/   private void makeConnection()       throws NamingException, SQLException {      InitialContext ic = new InitialContext();      DataSource ds = (DataSource) ic.lookup(dbName);      con =  ds.getConnection();   }   private void updateChecking(double amount)       throws SQLException {      String updateStatement =            "update checking set balance =  balance - ? " +            "where id = ?";      PreparedStatement prepStmt =             con.prepareStatement(updateStatement);      prepStmt.setDouble(1, amount);      prepStmt.setString(2, customerId);      prepStmt.executeUpdate();      prepStmt.close();   }   private void insertMachine(double amount)      throws SQLException {      String insertStatement =            "insert into cash_in_machine values " +            "( ? , current_date )";      PreparedStatement prepStmt =            con.prepareStatement(insertStatement);      prepStmt.setDouble(1, amount);      prepStmt.executeUpdate();      prepStmt.close();   }   private double selectMachine() throws SQLException  {      String selectStatement =            "select amount " +            "from cash_in_machine " +            "where time_stamp = " +            "(select max(time_stamp) from cash_in_machine)";      PreparedStatement prepStmt =            con.prepareStatement(selectStatement);      ResultSet rs = prepStmt.executeQuery();      if (rs.next()) {         double result = rs.getDouble(1);         prepStmt.close();         return result;      }      else {         prepStmt.close();         throw new EJBException           ("Row for id " + customerId + " not found.");      }    }   private double selectChecking() throws SQLException  {      String selectStatement =            "select balance " +            "from checking " +            "where id = ?";      PreparedStatement prepStmt =            con.prepareStatement(selectStatement);      prepStmt.setString(1, customerId);      ResultSet rs = prepStmt.executeQuery();      if (rs.next()) {         double result = rs.getDouble(1);         prepStmt.close();         return result;      }      else {         prepStmt.close();         throw new EJBException           ("Row for id " + customerId + " not found.");      }    }} // TellerBean

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -