ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Rational和WebSphere构建 Java EE 应用程序

Rational和WebSphere构建 Java EE 应用程序

原创 Linux操作系统 作者:CloudSpace 时间:2009-01-13 09:25:33 0 删除 编辑
IBM® Rational® Application Developer for WebSphere Software V7.5 包含了利用 JPA 和 EJB 技术 3.0 版本创建 Java™ EE 应用程序的工具。Rational Application Developer V7.5 引入了新的向导、编辑器,和透视图来很容易地创建强大的应用程序。本文面向中级用户,带您了解各种新的特性,并且向您展示如何创建端到端的 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 数据库。以下的图描述了应用程序各个组件之间的交互序列。




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
















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

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


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


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


Open Associated Perspective 对话框

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

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

持久化单元名称设置为 EmployeeJPA。

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


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


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


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


指定 Type 和 Name 的对话框
  1. 单击向导的 Finish,您将看到为字段创建了 getter 和 setter 方法的类,标注 _cnnew1@Entity,和用于主键字段的标注 @Id,如清单 1 所示。


				

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 所示。


菜单命令
  1. 分析 Employee 表,如图 9 所示。


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


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


左边是树型视图,右边是详细内容
  1. 同样地,将 First_NameLast_Name 映射到适当的列。
  1. 现在,Java 文件将如清单 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 所示。


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


JTA Data Source 是 jdbc/Sample






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

  1. 选择 File > New > EJB Project


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


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


左边是树型视图,右边是详细内容

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


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


指定类文件目的地的对话框
  1. 单击 Finish。创建了 EmployeeSession 类和 EmployeeSessionLocal 业务接口。

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


				
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 所示。


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


顶部罗列出 Java 元素,下面列出 Annotations
  1. 将持久性单元命名为 EmployeeJPA,如图 21 所示。


左边是树型视图,右边是属性细节

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

  1. 最终的类如清单4 所示。


				
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 所示。


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


目标的业务接口和 bean 类的方法

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







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

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


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


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


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


右边是 Java Modules 和 Web Libraries 选项卡

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


菜单命令
  1. 对于 servlet 指定 Java 包(com.ibm.servlets)和 Class 名(EmployeeSearch),如图 29 所示。


指定类文件目的地的对话框
  1. 修改 doGet 方法,如清单 5 所示。该方法从请求对象中获取 employee id,并将其传递给 session bean 来找到 employee 信息。


				
@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 所示。


				














在此部分中,您将设置数据源并运行 Web 页面。

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


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


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


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


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


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


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


在 Value 框中输入的路径

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


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


WebSphere 7.0 下的 EmployeeEAR
  1. 输入 EmployeeID 并按下 Submit,如图 39 所示。


EmployeeID 是 000010
  1. 结果显示在屏幕上


雇员名称是 CHRISTINE HAAS







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









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


学习

获得产品和技术

讨论



Neeraj 在北卡罗来纳州 Durham 的 IBM Research Triangle Park Lab 的 IBM Rational 致力于 Java EE 工具的研究。他在印度的 H.B.T.I 取得计算机科学与工程学士学位,并且在康涅狄格的 Bridgeport 大学获得计算机科学硕士学位。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-536568/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-08

  • 博文量
    355
  • 访问量
    879550