程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Rational >> 使用IBM Rational Application Developer V7.5和WAS V7.0構建Java EE應用程序

使用IBM Rational Application Developer V7.5和WAS V7.0構建Java EE應用程序

編輯:Rational

使用IBM Rational Application Developer V7.5和WebSphere Application Server V7.0構建Java EE應用程序

引言

本文向您介紹 IBM® Rational® Application Developer for WebSphere Software V7.5,並帶您構建 JPA 實體、session bean,並將它 們部署到 IBM® WebSphere® V7.0 上。

Java™ Platform, Enterprise Edition V5.0(Java™ EE)在創建企業應用程序方面進行了重 大變更,它支持 Java™ Persistence API(JPA),和 Enterprise Java™Beans technology(EJB)V3.0 程序設計模型、標注,和依賴注入。

必備條件

本文假設您至少安裝了 Rational Application Developer V7.5 和 WebSphere V7.0 測試服務器。

示例應用程序

您將要創建的示例應用程序有一個 JPA 實體、調用該 JPA 實體的 Session bean 、調用 Session bean 的 Servlet,以及調用 servlet 的 web 頁面。該應用程 序中使用的數據庫是 RAD 7.5 中帶有的內嵌 Derby 數據庫。以下的圖描述了應 用程序各個組件之間的交互序列。

序列圖

遵照以下這些步驟開發應用程序:

創建 JPA 項目和實體,並指 定映射

創建 EJB V3.0 項目,和使用 JPA 實體的 session bean

創建 Web V2.5 項目和調用 session bean 的 servlet

設置數據源,並在 WebSphere V7.0 上運行 Web 頁面

創建 JPA 項目和實體,並指定映射

在此實例中,您在單獨的歸檔(.jar)中創建 JPA 實體。注意到 Java EE 規范允許您在 Web 或 EJB 項目中打包 JPA 實體。在 Rational Application Developer 中,您可以向 Web 或 EJB 項目添加 JPA 的部分來讓它們支持 JPA 實體。

創建 JPA 項目

在 Java EE 透視圖中,選擇 File > New > Other > JPA Project ,如圖 1 所示。

圖 1. 新建項目

指定 Project 名稱,如圖 2 所示。

圖 2. 新建 JPA 項目

提示您切換到 JPA 透視圖,選擇 No。JPA 透視圖擁有例如 JPA Structure 和 JPA Details 的視圖,由於 Java EE 透視圖中的 Annotations 視圖允許類似 的功能,所以切換到 JPA 透視圖不是必需的。

圖 3. 切換透視圖

注意到 Rational Application Developer 創建了帶有以下這些文件的項目:

persistence.xml

orm.xml

manifest.MF。

持久化單元名稱設置為 EmployeeJPA。

創建 JPA 實體

右鍵單擊項目並選擇 New > Entity,如圖 4 所示。

圖 4. 新建實體

指定包名和類名,如圖 5 所示,然後單擊 Next。

圖 5. JPA Entity 詳情

單擊 以下頁面中的 Add 按鈕,創建實體字段,如圖 6 所示。

圖 6. JPA Entity 屬性

在結果的 Entity Fields 對話框中,從下拉列表中選擇 java.lang.String 作為 Type,如圖 7 所示。

圖 7. Entity Fields

單擊向導的 Finish,您將看到為字段創建了 getter 和 setter 方法的類, 標注 _cnnew1@Entity,和用於主鍵字段的標注 @Id,如清單 1 所示。

清單 1.JPA 實體源代碼

import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;
/**
* Entity implementation class for Entity: Employee
*
*/
@Entity
public class Employee implements Serializable {

   @Id
   private String EMP_ID;
   private String First_Name;
   private String Last_Name;
   private static final long serialVersionUID = 1L;
   public Employee() {
     super();
   } 
   public String getEMP_ID() {
     return this.EMP_ID;
   }
   public void setEMP_ID(String EMP_ID) {
     this.EMP_ID = EMP_ID;
   } 
   public String getFirst_Name() {
     return this.First_Name;
   }
   public void setFirst_Name(String First_Name) {
     this.First_Name = First_Name;
   } 
   public String getLast_Name() {
     return this.Last_Name;
   }
   public void setLast_Name(String Last_Name) {
     this.Last_Name = Last_Name;
   }

}

映射數據庫

要確保實體類可以適當地和數據庫表通信,就需要二者之間的映射。JPA 提供 兩種映射機制。一個是根據標注,另一個是根據 XML(orm.xml 中指定的)。本 實例使用了標注機制進行映射。

在 Java EE 透視圖中的 Data Source Explorer 視圖中,選擇 Derby Sample Connection > Connect,如圖 8 所示。

圖 8. 數據庫連接

分析 Employee 表,如圖 9 所示。

圖 9. 數據庫方案

由於方案不匹配,所以您需要修改映射。

在 Annotation 視圖中,單擊實體 Employee 的 Table 節點,並指定以下內 容,如圖 10 所示。

Table Name:EMPLOYEE

Schema:SAMP

圖 10. Annotations 視圖

單擊 EMP_ID 下的列節點,並將其映射到 EMPNO 列,如圖 11 所示。

圖 11. ID 字段映射

同樣地,將 First_Name 和 Last_Name 映射到適當的列。

現在,Java 文件將如清單 2 所示。

清單 2. 映射的實體源代碼

@Entity
@Table(schema="SAMP", name = "EMPLOYEE")
public class Employee implements Serializable {

   @Id
   @Column(name="EMPNO")
   private String EMP_ID;
   @Column(name="FIRSTNME")
   private String First_Name;
   @Column(name="LASTNAME")
   private String Last_Name;

需要設置 persistence.xml 中的 Java Database Connectivity(JDBC)API 數據源。打開 Enterprise 浏覽器中的文件,如圖 12 所示。

圖 12. Persistence.xml

接下來,指定數據源,如圖 13 所示(需要創建實際的數據源:步驟如最後一 個部分中所示)。

圖 13. 持久性編輯器

創建 EJB V3.0 項目,和使用 JPA 實體的 session bean

在本部分中,您將創建 EJB 項目和 session bean。

創建 EJB 項目

選擇 File > New > EJB Project。

圖 14. 打開新的 EJB 項目

指定 Project name,設置 EJB Module version 為 3.0,並選擇 EAR Project Name,如圖 15 所示。對於本實例,選擇您創建 JPA 項目時創建的 EAR 項目。

圖 15. 新建 EJB 項目

右鍵單擊 EJB 項目,並選擇 Java EE Module Dependencies,然後選擇 EmployeeJPA.jar,如圖 16 所示。這在 EJB 項目中創建了清單實體,並且還讓 JPA 實體類在開發過程中可見。

圖 16. EJB 模塊依賴

創建 session bean

在 Enterprise Explorer 中右鍵單擊 Session Beans 節點,並選擇 New > Session Bean,如圖 17 所示。

圖 17. 創建新的 session bean

指定 Java 包和類名,如圖 18 所示。在此實例中,選擇了 Local 業務接口 。

圖 18. 新建 EJB 3.0 session Bean

單擊 Finish。創建了 EmployeeSession 類和 EmployeeSessionLocal 業務接 口。

調用 JPA 實體

向 seesion bean 類中添加名為 findEmployee 的方法。

清單 3. 添加方法

EntityManager em;

   public Employee findEmployee(String empNo){
     Employee emp = (Employee) em.find(Employee.class, empNo);
     return emp;
   }

您需要將持久性單元定義為實體管理器變量。記住,當創建 JPA 項目時,在 persistence.xml 中設置了持久化單元 EmployeeJPA。您可以直接將其標注為: @PersistenceContext(name="EmployeeJPA") ,並且引入 javax.persistence.PersistenceContext,或者您可以在 Annotation 視圖中選 擇 Add annotation。

選擇 bean,如圖 19 所示。

圖 19. 標注視圖中的 Session bean

選擇標注,如圖 20 所示。

圖 20. 向 session bean 中添加標注

將持久性單元命名為 EmployeeJPA,如圖 21 所示。

圖 21. 命名持久性單元

該動作不僅添加標注,還正確地設置導入。

最終的類如清單4 所示。

清單 4. Session bean 源代碼

package com.ibm.ejb;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import com.ibm.entities.Employee;
import javax.persistence.PersistenceContext;
/**
* Session Bean implementation class EmployeeSession
*/
@Stateless
public class EmployeeSession implements EmployeeSessionLocal {
   /**
   * Default constructor.
   */
   public EmployeeSession() {
     // TODO Auto-generated constructor stub
   }

   @PersistenceContext(unitName="EmployeeJPA")
   EntityManager em;

   public Employee findEmployee(String empNo){
     Employee emp = (Employee) em.find(Employee.class, empNo);
     return emp;
   }  
}

session bean 的業務接口需要有您剛添加的方法的簽名。您可以快速地完成 :選擇 outline 視圖中的方法,並且選擇 Java EE > Promote Methods,如 圖 22 所示。

圖 22. session bean outline 視圖

這將打開 Promote Methods 對話框。選擇 findEmployee(string) 方法,如 圖 23 所示。

圖 23. Promote Methods

現在准備好讓客戶端消費 session bean。

創建 Web V2.5 項目和調用 session bean 的 servlet

在此部分中,您將創建 Web 項目和 servlet。

創建 Web 項目

選擇 File > New > Dynamic Web Project,如圖 24 所示。

圖 24. 打開動態的 Web 項目

指定 Web Project name,選擇 Dynamic Web Module version 為 2.5,並選 擇用於 JPA 和 EJB 項目一樣的 EAR Project Name,如圖 25 所示。

圖 25. 新建動態 Web 項目

當提示打開透視圖時,選擇 No,如圖 26 所示,Web 透視圖中擁有在此實例 中我們不需要的高級 web 編輯工具。

圖 26. 將透視圖切換到 Web 項目

右鍵單擊 Web 項目,並在左邊的列表中選擇 Java EE Module Dependencies ,然後選擇 EmployeeEJBClient.jar 和 EmployeeJPA.jar,如圖 27 所示。

圖 27. 對於 Web 項目的 Java EE 模塊依賴性

創建 servlet

在 Enterprise explorer 中,在 Servlets 節點中選擇 New > Servlet, 如圖 28 所示。

圖 28. 在 Web 項目中新建 servlet

對於 servlet 指定 Java 包(com.ibm.servlets)和 Class 名 (EmployeeSearch),如圖 29 所示。

圖 29. 創建 servlet

修改 doGet 方法,如清單 5 所示。該方法從請求對象中獲取 employee id, 並將其傳遞給 session bean 來找到 employee 信息。

清單 5.Servlet 源代碼

@EJB(name="Employee")
private EmployeeSessionLocal employeeSession;

protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws
       ServletException, IOException {
  String empNo = request.getParameter("empid");
  Employee emp = employeeSession.findEmployee(empNo);
  if(emp != null ){
   response.getWriter().println(emp.getFirst_Name() +
   " " + emp.getLast_Name());
  }else{
   response.getWriter().println("Employee with id =" +
    empNo + "couldn't be found");
  }
}

在 Web 項目中創建 HTML 頁面,該頁面包含 employee id 的輸入框,和提交 按鈕,如清單 6 所示。

清單 6. HTML 源代碼

<body>
  <form action="/EmployeeWeb/EmployeeSearch" method = "get">
     <p>
      <label>
       Type Employee ID and press Submit <br/>
       <input type = "text" name = "empid"/>
       <input type = "submit" name = "Submit"/>
      </label>
     </p>
  </form>
</body>

設置數據源,並在 WebSphere V7.0 上運行 Web 頁面

在此部分中,您將設置數據源並運行 Web 頁面。

設置數據源

右鍵單擊 EAR 項目,EmployeeEAR,並選擇 JavaEE > Open WebSphere Application Server Deployment,如圖 30 所示。

圖 30. WebSphere Deployment 頁面

在 JDBC 提供者部分中,單擊 Add 並選擇 Database type(Derby)和 JDBC provider type(Derby JDBC Provider),如圖 31 所示。

圖 31. Create JDBC Provider 對話框

命名提供者(DerbyDB)並選擇啟動程序和 Class path(IBM\SDP75 \runtimes\base_v7\derby\lib\derby.jar),如圖 32 所示。

圖 32. 提供 JDBC 細節

現在單擊 Add 創建數據源,如圖 33 所示。

圖 33. Data source 部分

選擇 Derby JDBC Provider 和 V5.0 數據源,並單擊 Next 按鈕,如圖 34 所示。

圖 34. Create Data Source 對話框

指定數據源名稱和 JNDI 名稱,如圖 35 所示。記住使用您在 persistence.xml JPA 中同樣的 JNDI 名。

圖 35. Create Data Source 對話框

在工作區中定位示例 Derby 數據庫,並且在數據庫名稱屬性中輸入路徑 (workspace\EmployeeSample\metadata\plugins\com.ibm.datatools.db2.cloud scape.driver\SAMPLE),如圖 36 所示。

圖 36. 數據源屬性

運行 Web 頁面

右鍵單擊 EmployeeSerach.html 並選擇 Run As > Run on Server,如圖 37 所示。

圖 37. 在服務器上運行

EAR 添加到服務器中,如圖 38 所示。

圖 38. 添加到服務器上的 EAR。

輸入 EmployeeID 並按下 Submit,如圖 39 所示。

圖 39. Web 頁面運行

結果顯示在屏幕上

圖 40. Web 頁面結果

您學到的東西

Java EE V5.0 簡化了企業應用程序的開發。本文向您介紹了如何使用 Java Persistence API、EJB V3.0,和 Rational Application Developer V7.5 中提 供的工具來構建這些企業工件。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved