#副標=Oracle9i 資料庫設計殿堂(七) #大標=開發、測試與部署 EJB #作者=文/何致億,美商甲骨文公司特約顧問 ================================= private EmpLocalHome getEmpLocalHome() throws NamingException { final InitialContext context = new InitialContext(); return (EmpLocalHome)context.lookup("java:comp/env/ejb/local/Emp"); } ======================================= ============================== public String queryEmp(Long empno) { return null; } ======================================== 筆者將queryEmp()方法改寫為: ====================================== public String queryEmp(Long empno) { StringBuffer info = new StringBuffer(); try { EmpLocal emp = getEmpLocalHome().findByPrimaryKey(empno); info.append("Empno : " + emp.getEmpno() + "\n"); info.append("Name : " + emp.getEname() + "\n"); info.append("Job : " + emp.getJob() + "\n"); info.append("Salary : " + emp.getSal() + "\n"); } catch (Exception e) { } return info.toString(); } =================================== =============================== import Exercise.EmpLocal; ================================== 以下是修改後完整的EmpSessionEJBBean.java檔案內容: ================================= package Exercise.impl; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import EJBDemo.EmpLocalHome; import EJBDemo.EmpLocal; import javax.naming.InitialContext; import javax.naming.NamingException; public class EmpSessionEJBBean implements SessionBean { public void ejbCreate() {} public void ejbActivate() {} public void ejbPassivate() {} public void ejbRemove() {} public void setSessionContext(SessionContext ctx){} private EmpLocalHome getEmpLocalHome() throws NamingException { final InitialContext context = new InitialContext(); return (EmpLocalHome)context.lookup("java:comp/env/ejb/local/Emp"); } public String queryEmp(Long empno) { StringBuffer info = new StringBuffer(); try { EmpLocal emp = getEmpLocalHome().findByPrimaryKey(empno); info.append("Empno : " + emp.getEmpno() + "\n"); info.append("Name : " + emp.getEname() + "\n"); info.append("Job : " + emp.getJob() + "\n"); info.append("Salary : " + emp.getSal() + "\n"); } catch (Exception e) { } return info.toString(); } } ========================== =================== System.out.println(empSessionEJB.queryEmp(new Long(7788))); ============================= ======================== System.out.println(empSessionEJB.queryEmp(new Long(7369))); ========================== 執行EmpSessionBeanClient1.java檔案後,queryEmp()方法將回傳下列資料: ============================ Empno : 7788 Name : SCOTT Job : ANALYST Salary : 3000 ==============================