This would probably not work with most of the EJB containers since your
connection is an instance variable.

Make it either a parameter to your DB routines or get it inside and
close it after you are done with it.

Something like:

private void dbMethod(...)
{
 Connection con = null;
    try
    {
        dataSource.getConnection();
        // do the db work
    }
    finally
    {
        try
        {
            con.close();
        }
        catch(Exception ignore) {}
    }

}
You can still cache the DataSource but not the connection itself.


--dejan


Dan King wrote:

>Hi All,
>
>I've just completed the EJB section of the J2EE tutorial and thought I'd
>write my own bean-managed persistence entity bean just to make sure I'd
>understood everything.
>
>Anyway, I've written my own "EmployeeApp" which accesses a table
>"employee":
>
>create table employee (id VARCHAR(3) CONSTRAINT pk_employee PRIMARY KEY,
>firstname VARCHAR(24), lastname VARCHAR(24), position VARCHAR(24),
>salary NUMERIC(10,2), isDirector VARCHAR(1));
>
>
>The EmployeeApp contains:
>
>Bean
>Home Interface
>Remote Interface
>Client
>
>classes and they are pretty much the same as the SavingsAccount example
>in the tutorial.  I've deployed it exactly the same way using the
>"deploytool" that comes with the tutorial but I keep getting an
>exception when I try to call create().
>
>I've since updated the client to only do a findByPrimaryKey and then a
>getPosition() [retrieves the position from the Employee class] but again
>I get the Rollback exception.  The findByPrimaryKey method seems to
>execute OK but the getPosition() throws the RollbackException.
>
>I include the dd, client, interfaces and bean code along with the output
>I'm getting and would really appreciate any help.  Sorry about the long
>e-mail but I thought I'd include everything to help with diagnosis.
>
>
>Many thanks,
>
>Dan King.
>[EMAIL PROTECTED]
>
>
>
>OUTPUT:
>
>C:\JAVA\j2eetutorial\examples\ears>set APPCPATH=EmployeeAppClient.jar
>
>C:\JAVA\j2eetutorial\examples\ears>runclient -client EmployeeApp.ear
>-name Emplo
>yeeClient -textauth
>Initiating login ...
>Username = null
>Enter Username:guest
>Enter Password:guest123
>Binding name:`java:comp/env/ejb/SimpleEmployee`
>A
>B
>C
>D
>E
>F
>Caught an exception.
>java.rmi.ServerException: RemoteException occurred in server thread;
>nested exception is:    java.rmi.RemoteException: Transaction aborted
>(possibly due to transaction time out).; nested exception is:
>javax.transaction.RollbackException; nested
>exception is: javax.transaction.RollbackException
>java.rmi.RemoteException: Transaction aborted (possibly due to
>transaction time out).; nested exception is:
>javax.transaction.RollbackException; nested exception is:
>javax.transaction.RollbackException
>javax.transaction.RollbackException
>        <<no stack trace available>>
>Unbinding name:`java:comp/env/ejb/SimpleEmployee`
>C:\JAVA\j2eetutorial\examples\ears>
>
>
>
>DD:
>
><?xml version="1.0" encoding="UTF-8"?>
>
><!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise
>JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
>
><ejb-jar>
>
>  <display-name>EmployeeJAR</display-name>
>
>  <enterprise-beans>
>
>    <entity>
>
>      <display-name>EmployeeEJB</display-name>
>
>      <ejb-name>EmployeeEJB</ejb-name>
>
>      <home>EmployeeHome</home>
>
>      <remote>Employee</remote>
>
>      <ejb-class>EmployeeBean</ejb-class>
>
>      <persistence-type>Bean</persistence-type>
>
>      <prim-key-class>java.lang.String</prim-key-class>
>
>      <reentrant>False</reentrant>
>
>      <security-identity>
>
>        <description></description>
>
>        <use-caller-identity></use-caller-identity>
>
>      </security-identity>
>
>      <resource-ref>
>
>        <res-ref-name>jdbc/EmployeeDB</res-ref-name>
>
>        <res-type>javax.sql.DataSource</res-type>
>
>        <res-auth>Container</res-auth>
>
>        <res-sharing-scope>Shareable</res-sharing-scope>
>
>      </resource-ref>
>
>    </entity>
>
>  </enterprise-beans>
>
>  <assembly-descriptor>
>
>    <method-permission>
>
>      <unchecked />
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getFirstName</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getPrimaryKey</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>findByFirstName</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>getEJBMetaData</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>remove</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.Object</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getEJBHome</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changePosition</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>getHomeHandle</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getLastName</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>remove</method-name>
>
>        <method-params>
>
>          <method-param>javax.ejb.Handle</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>findByPrimaryKey</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getHandle</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>findSalaryInRange</method-name>
>
>        <method-params>
>
>          <method-param>java.math.BigDecimal</method-param>
>
>          <method-param>java.math.BigDecimal</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>create</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>          <method-param>java.lang.String</method-param>
>
>          <method-param>java.lang.String</method-param>
>
>          <method-param>java.lang.String</method-param>
>
>          <method-param>java.math.BigDecimal</method-param>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getSalary</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getDirectorStatus</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getPosition</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changeSalary</method-name>
>
>        <method-params>
>
>          <method-param>java.math.BigDecimal</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changeDirectorStatus</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>remove</method-name>
>
>        <method-params />
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Home</method-intf>
>
>        <method-name>findByLastName</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>isIdentical</method-name>
>
>        <method-params>
>
>          <method-param>javax.ejb.EJBObject</method-param>
>
>        </method-params>
>
>      </method>
>
>    </method-permission>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getPosition</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getDirectorStatus</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changePosition</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changeDirectorStatus</method-name>
>
>        <method-params>
>
>          <method-param>java.lang.String</method-param>
>
>        </method-params>
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getSalary</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getLastName</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>remove</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>getFirstName</method-name>
>
>        <method-params />
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>    <container-transaction>
>
>      <method>
>
>        <ejb-name>EmployeeEJB</ejb-name>
>
>        <method-intf>Remote</method-intf>
>
>        <method-name>changeSalary</method-name>
>
>        <method-params>
>
>          <method-param>java.math.BigDecimal</method-param>
>
>        </method-params>
>
>      </method>
>
>      <trans-attribute>Required</trans-attribute>
>
>    </container-transaction>
>
>  </assembly-descriptor>
>
></ejb-jar>
>
>
>EJB:
>
>import java.sql.*;
>import javax.sql.*;
>import java.util.*;
>import java.math.*;
>import javax.ejb.*;
>import javax.naming.*;
>
>public class EmployeeBean implements EntityBean {
>
>        private String id;
>        private String firstName;
>        private String lastName;
>        private String position;
>        private BigDecimal salary;
>        private String isDirector;
>        private EntityContext context;
>        private Connection con;
>        private String dbName = "java:comp/env/jdbc/EmployeeDB";
>
>        public void changeSalary(BigDecimal newSalary) {
>                salary = newSalary;
>        }
>
>        public void changeDirectorStatus(String newDirectorStatus) {
>                isDirector = newDirectorStatus;
>        }
>
>        public void changePosition(String newPosition) {
>                position = newPosition;
>        }
>
>        public String getFirstName() {
>                return firstName;
>        }
>
>        public String getLastName() {
>                return lastName;
>        }
>
>        public String getPosition() {
>                return position;
>        }
>
>        public BigDecimal getSalary() {
>                return salary;
>        }
>
>        public String getDirectorStatus() {
>                return isDirector;
>        }
>
>        public String ejbCreate(String id, String firstName, String
>lastName,
>                String position, BigDecimal salary, String isDirector)
>                throws CreateException {
>
>                if (salary.signum() == -1) {
>                        throw new CreateException
>                                ("Can't make someone work and take their
>money too!");
>                }
>
>                try {
>                        insertRow(id, firstName, lastName, position,
>salary, isDirector);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbCreate:
>"+ex.getMessage());
>                }
>
>                this.id=id;
>                this.firstName=firstName;
>                this.lastName=lastName;
>                this.position=position;
>                this.salary=salary;
>                this.isDirector=isDirector;
>
>                return id;
>        }
>
>        public String ejbFindByPrimaryKey(String primaryKey)
>                throws FinderException {
>
>                boolean result;
>
>                try {
>                        result = selectByPrimaryKey(primaryKey);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbFindByPrimaryKey: " +
>                                ex.getMessage());
>                }
>
>                if (result) {
>                        return primaryKey;
>                } else {
>                        throw new ObjectNotFoundException
>                                ("Row for id " + primaryKey + " not
>found.");
>                }
>        }
>
>        public Collection ejbFindByLastName(String lastName)
>                throws FinderException {
>
>                Collection result;
>
>                try {
>                        result = selectByLastName(lastName);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbFindByLastName " +
>                                ex.getMessage());
>                }
>                return result;
>        }
>
>        public Collection ejbFindByFirstName(String firstName)
>                throws FinderException {
>
>                Collection result;
>
>                try {
>                        result = selectByFirstName(firstName);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbFindByFirstName " +
>                                ex.getMessage());
>                }
>                return result;
>        }
>
>        public Collection ejbFindSalaryInRange(BigDecimal low,
>BigDecimal high)
>                throws FinderException {
>
>                Collection result;
>
>                try {
>                        result = selectSalaryInRange(low, high);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbFindSalaryInRange: "
>+
>                        ex.getMessage());
>                }
>                return result;
>        }
>
>        public void ejbRemove() {
>                try {
>                        deleteRow(id);
>                } catch (Exception ex) {
>                        throw new EJBException("ejbRemove: " +
>ex.getMessage());
>                }
>        }
>
>        public void setEntityContext(EntityContext context) {
>                this.context = context;
>                try {
>                        makeConnection();
>                } catch (Exception ex) {
>                        throw new EJBException("setEntityContext: " +
>ex.getMessage());
>                }
>        }
>
>        public void unsetEntityContext() {
>                try {
>                        con.close();
>                } catch (Exception ex) {
>                        throw new EJBException("unsetEntityContext: " +
>                                ex.getMessage());
>                }
>        }
>
>        public void ejbActivate() {
>                id = (String)context.getPrimaryKey();
>        }
>
>        public void ejbPassivate() {
>                id = null;
>        }
>
>        public void ejbLoad() {
>                try {
>                        loadRow();
>                } catch (Exception ex) {
>                        throw new EJBException("ejbLoad: " +
>ex.getMessage());
>                }
>        }
>
>        public void ejbStore() {
>                try {
>                        storeRow();
>                } catch (Exception ex) {
>                        throw new EJBException("ejbStore: " +
>ex.getMessage());
>                }
>        }
>
>        public void ejbPostCreate(String id, String firstName, String
>lastName,
>                String position, BigDecimal salary, String isDirector) {
>        }
>
>/*********************** Database Routines *************************/
>        private void makeConnection() throws NamingException,
>SQLException {
>
>                InitialContext ic = new InitialContext();
>                DataSource ds = (DataSource) ic.lookup(dbName);
>                con = ds.getConnection();
>        }
>
>        private void insertRow (String id, String firstName, String
>lastName,
>                String position, BigDecimal salary, String isDirector)
>
>                throws SQLException {
>
>                String insertStatement = "insert into employee values (
>? , ? , ? , ? , ? , ? )";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(insertStatement);
>
>                prepStmt.setString(1, id);
>                prepStmt.setString(2, firstName);
>                prepStmt.setString(3, lastName);
>                prepStmt.setString(4, position);
>                prepStmt.setBigDecimal(5, salary);
>                prepStmt.setString(6, isDirector);
>
>                prepStmt.executeUpdate();
>                prepStmt.close();
>        }
>
>        private void deleteRow(String id) throws SQLException {
>                String deleteStatement = "delete from employee where id
>= ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(deleteStatement);
>
>                prepStmt.setString(1,id);
>                prepStmt.executeUpdate();
>                prepStmt.close();
>        }
>
>        private boolean selectByPrimaryKey(String primaryKey)
>                throws SQLException {
>
>                String selectStatement = "select id from employee where
>id = ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(selectStatement);
>
>                prepStmt.setString(1,primaryKey);
>
>                ResultSet rs = prepStmt.executeQuery();
>                boolean result = rs.next();
>                prepStmt.close();
>                return result;
>        }
>
>        private Collection selectByLastName(String lastName) throws
>SQLException {
>                String selectStatement = "select id from employee where
>lastname = ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(selectStatement);
>
>                prepStmt.setString(1,lastName);
>
>                ResultSet rs = prepStmt.executeQuery();
>                ArrayList a = new ArrayList();
>
>                while (rs.next()) {
>                        String id = rs.getString(1);
>                        a.add(id);
>                }
>
>                prepStmt.close();
>                return a;
>        }
>
>        private Collection selectByFirstName(String firstName) throws
>SQLException {
>                String selectStatement = "select id from employee where
>firstname = ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(selectStatement);
>
>                prepStmt.setString(1, firstName);
>
>                ResultSet rs = prepStmt.executeQuery();
>                ArrayList a = new ArrayList();
>
>                while (rs.next()) {
>                        String id = rs.getString(1);
>                        a.add(id);
>                }
>
>                prepStmt.close();
>                return a;
>        }
>
>
>        private Collection selectSalaryInRange(BigDecimal low,
>BigDecimal high)
>                throws SQLException {
>
>                String selectStatement =
>                        "select id from employee where balance between ?
>and ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(selectStatement);
>
>                prepStmt.setBigDecimal(1, low);
>                prepStmt.setBigDecimal(2, high);
>
>                ResultSet rs = prepStmt.executeQuery();
>                ArrayList a = new ArrayList();
>
>                while (rs.next()) {
>                        String id = rs.getString(1);
>                        a.add(id);
>                }
>
>                prepStmt.close();
>                return a;
>        }
>
>        private void loadRow() throws SQLException {
>                String selectStatement =
>                        "select firstname, lastname, position, salary,
>isDirector " +
>                        "from employee where id = ? ";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(selectStatement);
>
>                prepStmt.setString(1, this.id);
>
>                ResultSet rs = prepStmt.executeQuery();
>
>                if (rs.next()) {
>                        this.firstName = rs.getString(1);
>                        this.lastName = rs.getString(2);
>                        this.position = rs.getString(3);
>                        this.salary = rs.getBigDecimal(4);
>                        this.isDirector = rs.getString(5);
>                        prepStmt.close();
>                } else {
>                        prepStmt.close();
>                        throw new NoSuchEntityException("Row for id " +
>id +
>                                " not found in dataBase.");
>                }
>        }
>
>        private void storeRow() throws SQLException {
>                String updateStatement =
>                        "update savingsaccount set firstname = ?," +
>                        "lastname = ?," + "position = ?," + "salary =
>?," +
>                        "isDirector = ? where id = ?";
>
>                PreparedStatement prepStmt =
>con.prepareStatement(updateStatement);
>
>                prepStmt.setString(1, firstName);
>                prepStmt.setString(2, lastName);
>                prepStmt.setString(3, position);
>                prepStmt.setBigDecimal(4, salary);
>                prepStmt.setString(5, isDirector);
>                prepStmt.setString(6, id);
>
>                int rowCount = prepStmt.executeUpdate();
>                prepStmt.close();
>
>                if (rowCount == 0) {
>                        throw new EJBException("Storing row for id " +
>id + "failed.");
>                }
>        }
>} // EmployeeBean end
>
>
>
>HOME INTERFACE:
>
>import java.util.Collection;
>import java.math.BigDecimal;
>import java.rmi.RemoteException;
>import javax.ejb.*;
>
>public interface EmployeeHome extends EJBHome {
>
>        public Employee create(String id, String firstName, String
>lastName,
>                                        String position, BigDecimal
>salary, String isDirector)
>                throws RemoteException, CreateException;
>
>        public Employee findByPrimaryKey(String id)
>                throws FinderException, RemoteException;
>
>        public Collection findByFirstName(String firstName)
>                throws FinderException, RemoteException;
>
>        public Collection findByLastName(String lastName)
>                throws FinderException, RemoteException;
>
>        public Collection findSalaryInRange(BigDecimal low, BigDecimal
>high)
>                throws FinderException, RemoteException;
>}
>
>
>REMOTE INTERFACE:
>
>
>import javax.ejb.EJBObject;
>import java.rmi.RemoteException;
>import java.math.BigDecimal;
>
>public interface Employee extends EJBObject {
>
>        public String getFirstName()
>                throws RemoteException;
>
>        public String getLastName()
>                throws RemoteException;
>
>        public BigDecimal getSalary()
>                throws RemoteException;
>
>        public String getDirectorStatus()
>                throws RemoteException;
>
>        public String getPosition()
>                throws RemoteException;
>
>        public void changeSalary(BigDecimal newSalary)
>                throws RemoteException;
>
>        public void changeDirectorStatus(String newDirectorStatus)
>                throws RemoteException;
>
>        public void changePosition(String newPosition)
>                throws RemoteException;
>}
>
>CLIENT:
>
>import java.util.*;
>import java.math.*;
>import javax.naming.Context;
>import javax.naming.InitialContext;
>import javax.rmi.PortableRemoteObject;
>
>public class EmployeeClient {
>
>        public static void main(String[] args) {
>
>                try {
>
>                        System.out.println("A");
>
>
>                        Context initial = new InitialContext();
>
>                        System.out.println("B");
>
>                        Object objref =
>initial.lookup("java:comp/env/ejb/SimpleEmployee");
>
>                        System.out.println("C");
>
>
>                        EmployeeHome home =
>(EmployeeHome)PortableRemoteObject.narrow(objref,
>
>EmployeeHome.class);
>
>                        System.out.println("D");
>
>
>
>                        BigDecimal K38K = new BigDecimal("38000.00");
>
>                        //Employee matt = home.create("002", "Matt",
>"King", "Engineer", K38K, "1");
>
>                        //System.out.println("Matt King inserted to
>dB");
>
>
>                        System.out.println("E");
>
>
>                        Employee dan = home.findByPrimaryKey("001");
>
>                        System.out.println("F");
>
>
>                        System.out.println("Got dan : position = " +
>dan.getPosition());
>
>
>                        System.out.println("G");
>
>
>                        System.exit(0);
>
>                } catch (Exception ex) {
>                        System.err.println("Caught an exception.");
>                        ex.printStackTrace();
>                }
>        }
>}
>
>
>===========================================================================
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff EJB-INTEREST".  For general help, send email to
>[EMAIL PROTECTED] and include in the body of the message "help".
>
>
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to