public Account retreiveAccount(String ssn) throws RemoteException {
    Account acct = new Account();
    try {
      DataSource ds =
          (DataSource)
              javax.rmi.PortableRemoteObject.narrow(
                  jndiContext.lookup("java:comp/env/database"), DataSource.class);
      Connection con = ds.getConnection();

      try {
        PreparedStatement stmt = con.prepareStatement("select * from Account where SSN = ?");
        try {
          stmt.setString(1, ssn);
          ResultSet rs = stmt.executeQuery();
          if (!rs.next()) return null;

          acct.setSsn(rs.getString(1));
          acct.setFirstName(rs.getString(2));
          acct.setLastName(rs.getString(3));
          acct.setBalance(rs.getInt(4));
        } finally {
          stmt.close();
        }
      } finally {
        con.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
      throw new RemoteException("[Bean] " + e.getClass().getName() + " : " + e.getMessage());
    }
    return acct;
  }
  public void openAccount(Account acct, Boolean rollback)
      throws RemoteException, RollbackException {

    try {
      DataSource ds =
          (DataSource)
              javax.rmi.PortableRemoteObject.narrow(
                  jndiContext.lookup("java:comp/env/database"), DataSource.class);
      Connection con = ds.getConnection();

      try {
        UserTransaction ut = ejbContext.getUserTransaction();
        /*[1] Begin the transaction */
        ut.begin();

        /*[2] Update the table */
        PreparedStatement stmt =
            con.prepareStatement(
                "insert into Account (SSN, First_name, Last_name, Balance) values (?,?,?,?)");
        try {
          stmt.setString(1, acct.getSsn());
          stmt.setString(2, acct.getFirstName());
          stmt.setString(3, acct.getLastName());
          stmt.setInt(4, acct.getBalance());
          stmt.executeUpdate();
        } finally {
          stmt.close();
        }

        /*[3] Commit or Rollback the transaction */
        if (rollback.booleanValue()) ut.setRollbackOnly();

        /*[4] Commit or Rollback the transaction */
        ut.commit();
      } finally {
        con.close();
      }
    } catch (RollbackException re) {
      throw re;
    } catch (Exception e) {
      e.printStackTrace();
      throw new RemoteException("[Bean] " + e.getClass().getName() + " : " + e.getMessage());
    }
  }