was7 java_RAD 7.5和WAS 7.0构建Java EE应用程序

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

序列图

1822310.gif

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

创建 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 项目

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

1822311.jpg

2、指定 Project 名称,如图 2 所示。

图 2. 新建 JPA 项目

1822312.jpg

3、提示您切换到 JPA 透视图,选择 No.JPA 透视图拥有例如 JPA Structure 和 JPA Details 的视图,由于 Java EE 透视图中的 Annotations 视图允许类似的功能,所以切换到 JPA 透视图不是必需的。

图 3. 切换透视图

1822313.jpg

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

persistence.xml

orm.xml

manifest.MF.

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

创建 JPA 实体

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

图 4. 新建实体

1822314.jpg

5、指定包名和类名,如图 5 所示,然后单击 Next.

图 5. JPA Entity 详情

1822315.jpg

6、单击 以下页面中的 Add 按钮,创建实体字段,如图 6 所示。

图 6. JPA Entity 属性

1822316.jpg

7、在结果的 Entity Fields 对话框中,从下拉列表中选择 java.lang.String 作为 Type,如图 7 所示。

图 7. Entity Fields

1822317.jpg

8、单击向导的 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 中指定的)。本实例使用了标注机制进行映射。

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

图 8. 数据库连接

1822318.jpg

10、分析 Employee 表,如图 9 所示。

图 9. 数据库方案

1822319.jpg

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

12、在 Annotation 视图中,单击实体 Employee 的 Table 节点,并指定以下内容,如图 10 所示。

Table Name:EMPLOYEE

Schema:SAMP

图 10. Annotations 视图

18223110.jpg

13、单击 EMP_ID 下的列节点,并将其映射到 EMPNO 列,如图 11 所示。

图 11. ID 字段映射

18223111.jpg

14、同样地,将 First_Name 和 Last_Name 映射到适当的列。

15、现在,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;

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

图 12. Persistence.xml

18223112.jpg

17、接下来,指定数据源,如图 13 所示(需要创建实际的数据源:步骤如最后一个部分中所示)。

图 13. 持久性编辑器

18223113.jpg

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

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

创建 EJB 项目

1、选择 File > New > EJB Project.

图 14. 打开新的 EJB 项目

18223114.jpg

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

图 15. 新建 EJB 项目

18223115.jpg

3、右键单击 EJB 项目,并选择 Java EE Module Dependencies,然后选择 EmployeeJPA.jar,如图 16 所示。这在 EJB 项目中创建了清单实体,并且还让 JPA 实体类在开发过程中可见。

图 16. EJB 模块依赖

18223116.jpg

创建 session bean

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

图 17. 创建新的 session bean

18223117.jpg

5、指定 Java 包和类名,如图 18 所示。在此实例中,选择了 Local 业务接口。

图 18. 新建 EJB 3.0 session Bean

18223118.jpg

5、指定 Java 包和类名,如图 18 所示。在此实例中,选择了 Local 业务接口。

图 18. 新建 EJB 3.0 session Bean

18223118.jpg

6、单击 Finish.创建了 EmployeeSession 类和 EmployeeSessionLocal 业务接口。

调用 JPA 实体

7、向 seesion bean 类中添加名为 findEmployee 的方法。

清单 3. 添加方法

EntityManager em;

public Employee findEmployee(String empNo){

Employee emp = (Employee) em.find(Employee.class, empNo);

return emp;

}

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

9、选择 bean,如图 19 所示。

图 19. 标注视图中的 Session bean

18223120.jpg

10、选择标注,如图 20 所示。

图 20. 向 session bean 中添加标注

18223121.jpg

11、将持久性单元命名为 EmployeeJPA,如图 21 所示。

图 21. 命名持久性单元

20090113120423501.jpg

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

12、最终的类如清单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;

}

}

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

图 22. session bean outline 视图

18223123.jpg

14、这将打开 Promote Methods 对话框。选择 findEmployee(string) 方法,如图 23 所示。

图 23. Promote Methods

18223124.jpg

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

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

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

创建 Web 项目

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

图 24. 打开动态的 Web 项目

18223125.jpg

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

图 25. 新建动态 Web 项目

18223126.jpg

3、当提示打开透视图时,选择 No,如图 26 所示,Web 透视图中拥有在此实例中我们不需要的高级 web 编辑工具。

图 26. 将透视图切换到 Web 项目

18223127.jpg

4、右键单击 Web 项目,并在左边的列表中选择 Java EE Module Dependencies,然后选择 EmployeeEJBClient.jar 和 EmployeeJPA.jar,如图 27 所示。

图 27. 对于 Web 项目的 Java EE 模块依赖性

18223128.jpg

创建 servlet

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

图 28. 在 Web 项目中新建 servlet

18223129.jpg

6、对于 servlet 指定 Java 包(com.ibm.servlets)和 Class 名(EmployeeSearch),如图 29 所示。

图 29. 创建 servlet

18223130.jpg

7、修改 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");

}

}

8、在 Web 项目中创建 HTML 页面,该页面包含 employee id 的输入框,和提交按钮,如清单 6 所示。

清单 6. HTML 源代码

Type Employee ID and press Submit

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

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

设置数据源

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

图 30. WebSphere Deployment 页面

18223131.jpg

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

图 31. Create JDBC Provider 对话框

20090113121952976.jpg

3、命名提供者(DerbyDB)并选择启动程序和 Class path(IBM"SDP75"runtimes"base_v7"derby"lib"derby.jar),如图 32 所示。

图 32. 提供 JDBC 细节

18223133.jpg

4、现在单击 Add 创建数据源,如图 33 所示。

图 33. Data source 部分

18223134.jpg

5、选择 Derby JDBC Provider 和 V5.0 数据源,并单击 Next 按钮,如图 34 所示。

图 34. Create Data Source 对话框

18223135.jpg

6、指定数据源名称和 JNDI 名称,如图 35 所示。记住使用您在 persistence.xml JPA 中同样的 JNDI 名。

图 35. Create Data Source 对话框

18223136.jpg

7、在工作区中定位示例 Derby 数据库,并且在数据库名称属性中输入路径(workspace"EmployeeSample"metadata"plugins "com.ibm.datatools.db2.cloudscape.driver"SAMPLE),如图 36 所示。

图 36. 数据源属性

18223137.jpg

8、运行 Web 页面

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

图 37. 在服务器上运行

18223138.jpg

9、EAR 添加到服务器中,如图 38 所示。

图 38. 添加到服务器上的 EAR.

18223139.jpg

10、输入 EmployeeID 并按下 Submit,如图 39 所示。

图 39. Web 页面运行

18223140.jpg

11、结果显示在屏幕上

图 40. Web 页面结果

18223141.jpg

您学到的东西

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

描述

名字

大小

本文中使用的示例项目

EmployeeSample.zip

35KB

参考资料

您可以参阅本文在 developerWorks 全球网站上的 英文原文。

本文引用地址:http://www.javapeixun.com.cn/j2ee/ejb20090113226.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值