首页 文章 Java基础 使用 IBM Rational Application Developer V7.5 和 WebSphere Application Server V7.0 构建 Java EE 应用程序

邮件订阅

使用 IBM Rational Application Developer V7.5 和 WebSphere Application Server V7.0 构建 Java EE 应用程序 E-mail
用户评价: / 0
好 
作者:Administrator   
2009-01-08 22:56

引言

本文向您介绍 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 数据库。以下的图描述了应用程序各个组件之间的交互序列。


序列图

遵照以下这些步骤开发应用程序:

  1. 创建 JPA 项目和实体,并指定映射

  2. 创建 EJB V3.0 项目,和使用 JPA 实体的 session bean

  3. 创建 Web V2.5 项目和调用 session bean 的 servlet

  4. 设置数据源,并在 WebSphere V7.0 上运行 Web 页面





回页首


创建 JPA 项目和实体,并指定映射

在此实例中,您在单独的归档(.jar)中创建 JPA 实体。注意到 Java EE 规范允许您在 Web 或 EJB 项目中打包 JPA 实体。在 Rational Application Developer 中,您可以向 Web 或 EJB 项目添加 JPA 的部分来让它们支持 JPA 实体。

创建 JPA 项目

  1. 在 Java EE 透视图中,选择 File > New > Other > JPA Project,如图 1 所示。

图 1. 新建项目
供选择的向导列表
  1. 指定 Project 名称,如图 2 所示。

图 2. 新建 JPA 项目
项目和 EAR 项目名称,目标运行时
  1. 提示您切换到 JPA 透视图,选择 No。JPA 透视图拥有例如 JPA Structure 和 JPA Details 的视图,由于 Java EE 透视图中的 Annotations 视图允许类似的功能,所以切换到 JPA 透视图不是必需的。

图 3. 切换透视图
Open Associated Perspective 对话框

注意到 Rational Application Developer 创建了带有以下这些文件的项目:

  • persistence.xml
  • orm.xml
  • manifest.MF。

持久化单元名称设置为 EmployeeJPA

创建 JPA 实体

  1. 右键单击项目并选择 New > Entity,如图 4 所示。

图 4. 新建实体
菜单命令
  1. 指定包名和类名,如图 5 所示,然后单击 Next

图 5. JPA Entity 详情
指定名称和继承属性的对话框
  1. 单击 以下页面中的 Add 按钮,创建实体字段,如图 6 所示。

图 6. JPA Entity 属性
带有名称和类型列的 Entity Fields 表格
  1. 在结果的 Entity Fields 对话框中,从下拉列表中选择 java.lang.String 作为 Type,如图 7 所示。

图 7. Entity Fields
指定 Type 和 Name 的对话框
  1. 单击向导的 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 中指定的)。本实例使用了标注机制进行映射。

  1. 在 Java EE 透视图中的 Data Source Explorer 视图中,选择 Derby Sample Connection > Connect,如图 8 所示。

图 8. 数据库连接
菜单命令
  1. 分析 Employee 表,如图 9 所示。

图 9. 数据库方案
Data Source Explorer 视图
  1. 由于方案不匹配,所以您需要修改映射。
  1. 在 Annotation 视图中,单击实体 Employee 的 Table 节点,并指定以下内容,如图 10 所示。
    • Table Name:EMPLOYEE
    • Schema:SAMP

图 10. Annotations 视图
左边是树型视图,右边是详细内容
  1. 单击 EMP_ID 下的列节点,并将其映射到 EMPNO 列,如图 11 所示。

图 11. ID 字段映射
左边是树型视图,右边是详细内容
  1. 同样地,将 First_NameLast_Name 映射到适当的列。
  1. 现在,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;

  1. 需要设置 persistence.xml 中的 Java Database Connectivity(JDBC)API 数据源。打开 Enterprise 浏览器中的文件,如图 12 所示。

图 12. Persistence.xml
EmployeeJPA > Diagrams > JPA Content 下的文件
  1. 接下来,指定数据源,如图 13 所示(需要创建实际的数据源:步骤如最后一个部分中所示)。

图 13. 持久性编辑器
JTA Data Source 是 jdbc/Sample




回页首


创建 EJB V3.0 项目,和使用 JPA 实体的 session bean

在本部分中,您将创建 EJB 项目和 session bean。

创建 EJB 项目

  1. 选择 File > New > EJB Project

图 14. 打开新的 EJB 项目
菜单命令
  1. 指定 Project name,设置 EJB Module version 为 3.0,并选择 EAR Project Name,如图 15 所示。对于本实例,选择您创建 JPA 项目时创建的 EAR 项目。

图 15. 新建 EJB 项目
带有内容、配置,等等的对话框
  1. 右键单击 EJB 项目,并选择 Java EE Module Dependencies,然后选择 EmployeeJPA.jar,如图 16 所示。这在 EJB 项目中创建了清单实体,并且还让 JPA 实体类在开发过程中可见。

图 16. EJB 模块依赖
左边是树型视图,右边是详细内容

创建 session bean

  1. 在 Enterprise Explorer 中右键单击 Session Beans 节点,并选择 New > Session Bean,如图 17 所示。

图 17. 创建新的 session bean
菜单命令
  1. 指定 Java 包和类名,如图 18 所示。在此实例中,选择了 Local 业务接口。

图 18. 新建 EJB 3.0 session Bean
指定类文件目的地的对话框
  1. 单击 Finish。创建了 EmployeeSession 类和 EmployeeSessionLocal 业务接口。

调用 JPA 实体

  1. 向 seesion bean 类中添加名为 findEmployee 的方法。

清单 3. 添加方法
				
EntityManager em;
    
    public Employee findEmployee(String empNo){
    	Employee emp = (Employee) em.find(Employee.class, empNo);
    	return emp;
    } 

  1. 您需要将持久性单元定义为实体管理器变量。记住,当创建 JPA 项目时,在 persistence.xml 中设置了持久化单元 EmployeeJPA。您可以直接将其标注为:@PersistenceContext(name="EmployeeJPA") ,并且引入 javax.persistence.PersistenceContext,或者您可以在 Annotation 视图中选择 Add annotation
  1. 选择 bean,如图 19 所示。

图 19. 标注视图中的 Session bean
左边是树型视图,右边是属性细节
  1. 选择标注,如图 20 所示。

图 20. 向 session bean 中添加标注
顶部罗列出 Java 元素,下面列出 Annotations
  1. 将持久性单元命名为 EmployeeJPA,如图 21 所示。

图 21. 命名持久性单元
左边是树型视图,右边是属性细节

该动作不仅添加标注,还正确地设置导入。

  1. 最终的类如清单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;
    }    

}


  1. session bean 的业务接口需要有您刚添加的方法的签名。您可以快速地完成:选择 outline 视图中的方法,并且选择 Java EE > Promote Methods,如图 22 所示。

图 22. session bean outline 视图
菜单命令
  1. 这将打开 Promote Methods 对话框。选择 findEmployee(string) 方法,如图 23 所示。

图 23. Promote Methods
目标的业务接口和 bean 类的方法

现在准备好让客户端消费 session bean。





回页首


创建 Web V2.5 项目和调用 session bean 的 servlet

在此部分中,您将创建 Web 项目和 servlet。

创建 Web 项目

  1. 选择 File > New > Dynamic Web Project,如图 24 所示。

图 24. 打开动态的 Web 项目
菜单命令
  1. 指定 Web Project name,选择 Dynamic Web Module version 为 2.5,并选择用于 JPA 和 EJB 项目一样的 EAR Project Name,如图 25 所示。

图 25. 新建动态 Web 项目
指定项目选项的对话框
  1. 当提示打开透视图时,选择 No,如图 26 所示,Web 透视图中拥有在此实例中我们不需要的高级 web 编辑工具。

图 26. 将透视图切换到 Web 项目
对话框中包含选项“Remember my decision”
  1. 右键单击 Web 项目,并在左边的列表中选择 Java EE Module Dependencies,然后选择 EmployeeEJBClient.jarEmployeeJPA.jar,如图 27 所示。

图 27. 对于 Web 项目的 Java EE 模块依赖性
右边是 Java Modules 和 Web Libraries 选项卡

创建 servlet

  1. 在 Enterprise explorer 中,在 Servlets 节点中选择 New > Servlet,如图 28 所示。

图 28. 在 Web 项目中新建 servlet
菜单命令
  1. 对于 servlet 指定 Java 包com.ibm.servlets)和 Class 名EmployeeSearch),如图 29 所示。

图 29. 创建 servlet
指定类文件目的地的对话框
  1. 修改 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");
  }
}

  1. 在 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 页面。

设置数据源

  1. 右键单击 EAR 项目,EmployeeEAR,并选择 JavaEE > Open WebSphere Application Server Deployment,如图 30 所示。

图 30. WebSphere Deployment 页面
菜单命令
  1. 在 JDBC 提供者部分中,单击 Add 并选择 Database type(Derby)和 JDBC provider type(Derby JDBC Provider),如图 31 所示。

图 31. Create JDBC Provider 对话框
带有两个列表的对话框
  1. 命名提供者(DerbyDB)并选择启动程序和 Class path(IBM\SDP75\runtimes\base_v7\derby\lib\derby.jar),如图 32 所示。

图 32. 提供 JDBC 细节
Create JDBC Provider 对话框
  1. 现在单击 Add 创建数据源,如图 33 所示。

图 33. Data source 部分
带有 Name、JNDI Name,和 Type 的表
  1. 选择 Derby JDBC ProviderV5.0 数据源,并单击 Next 按钮,如图 34 所示。

图 34. Create Data Source 对话框
选择 JDBC 提供者和数据源类型的对话框
  1. 指定数据源名称和 JNDI 名称,如图 35 所示。记住使用您在 persistence.xml JPA 中同样的 JNDI 名。

图 35. Create Data Source 对话框
选择 15 个数据源选项的对话框
  1. 在工作区中定位示例 Derby 数据库,并且在数据库名称属性中输入路径(workspace\EmployeeSample\metadata\plugins\com.ibm.datatools.db2.cloudscape.driver\SAMPLE),如图 36 所示。

图 36. 数据源属性
在 Value 框中输入的路径

运行 Web 页面

  1. 右键单击 EmployeeSerach.html 并选择 Run As > Run on Server,如图 37 所示。

图 37. 在服务器上运行
菜单命令
  1. EAR 添加到服务器中,如图 38 所示。

图 38. 添加到服务器上的 EAR。
WebSphere 7.0 下的 EmployeeEAR
  1. 输入 EmployeeID 并按下 Submit,如图 39 所示。

图 39. Web 页面运行
EmployeeID 是 000010
  1. 结果显示在屏幕上

图 40. Web 页面结果
雇员名称是 CHRISTINE HAAS




回页首


您学到的东西

Java EE V5.0 简化了企业应用程序的开发。本文向您介绍了如何使用 Java Persistence API、EJB V3.0,和 Rational Application Developer V7.5 中提供的工具来构建这些企业工件。






回页首


下载

描述名字大小下载方法
本文中使用的示例项目EmployeeSample.zip35KBHTTP
关于下载方法的信息


最后更新于: 2009-01-08 22:56
 

欢迎转载

本站文章欢迎转载,但请注明出处(http://www.javajia.com,Java家)

其他相关文章