ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性

ejb 2.0 3.0

在应用程序开发领域发生的一件事是数据的可用性。 有来自各种资源的各种数据。 一方面,这使应用程序比以往更加丰富。 另一方面,所有这些数据实在是一团糟。 如果您需要持久存储数据而不是仅仅读取数据,它将变得更加复杂。

在Java环境中,EJB已成为一种可靠的持久性方式,同时保持了良好的可维护性和适当的角色分离。 EJB V3.0继续了这一发展,带来了更多的工具和选项。 使用EJB并不困难。 借助Eclipse和一些基本概念,您可以在应用程序中利用它们的强大功能。

EJB V3.0

EJB V3.0使用基于注释的API简化了EJB的开发,在该API中,虽然可以使用远程/本地接口,本地/本地本地接口和部署描述符,但它们不是必需的。 开发实体EJB需要Java IDE,应用程序服务器和关系数据库。 WebSphere V6.x需要WebSphere Application Server V6.1功能部件包来创建EJB V3.0实体bean。 WebSphere V7具有对EJB V3.0的内置支持。 Eclipse IDE是最常用的开源Java IDE。 在本文中,我们将使用Eclipse-IBM WebSphere 7-IBM DB2 9.5组合开发EJB V3.0实体bean。

WebSphere中的EJB V3.0规范以Java Persistence API(JPA)为后盾。 JPA进一步基于其他持久性技术,例如Hibernate,JDO和TopLink。 JPA是用于对象关系映射的POJO持久性API,它利用元数据注释来定义Java对象与关系数据库之间的映射。 JPA支持用于静态和动态查询的类SQL语言。 JPA已集成到JSR 220:Enterprise JavaBeans V3.0规范中。

使用了WebSphere Application Server和DB2数据库的试用版,但是讨论的技术可以转移到WebSphere Application Server和DB2的社区版。 还提供了对WebSphere Application Server社区版的支持 。

初步设置

  1. 下载并安装WebSphere Application Server V7(请参阅参考资料 )。
  2. 下载并安装面向Java EE开发人员的Eclipse IDE(请参阅参考资料 )。
  3. 下载并安装DB2 V9.5(见相关主题 )。
  4. 在DB2中创建数据库实例SAMPLE。

使用DB2配置WebSphere

启动WebSphere Application Server。 在“第一步”控制台中,选择“ 启动服务器” 。 WebSphere服务器已启动,如图1所示。

图1.启动WebSphere V7应用服务器
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第1张图片

接下来,通过选择管理控制台链接来启动管理控制台/集成解决方案控制台。 在Integrated Solution Console窗口中,在JDBC provider表中选择Resources> JDBC> JDBC > New ,如图2所示。

图2.创建一个新的JDBC提供程序
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第2张图片

在“ Create a new JDBC Provider窗口中,选择“ 数据库” >“ DB2” ,“ 提供程序” >“ DB2通用JDBC驱动程序提供程序 ”和“ 实现” >“ 连接池”数据源 ,然后单击“ 下一步” ,如图3所示。

图3.设置配置值
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第3张图片

Summary页面列出了JDBC提供程序配置的摘要。 选择完成 。 新的JDBC提供程序将添加到JDBC providers表中。 选择新的JDBC提供程序,然后单击Save将JDBC提供程序存储到主配置中,如图4所示。

图4.新的JDBC提供程序
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第4张图片

在配置数据源之前,需要一个J2EE连接器认证数据条目。 JDBC数据源使用J2EE连接器身份验证数据条目登录数据库。 在集成解决方案控制台中选择“ 安全性”>“全局安全性”节点。 接下来,在Authentication子标题中选择Java Authentication and Authorization Service> J2C身份验证数据链接,如图5所示。

图5.创建J2C认证数据
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第5张图片

在用户标识和密码表中,单击“ 新建” 。 在新标题中,在Alias字段中指定一个用户别名,一个User Id ,这是DB2数据库的登录ID,以及用于登录DB2数据库的密码,如图6所示。

图6.指定J2C认证数据属性
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第6张图片

单击保存将J2C认证数据条目存储到主配置中。 DB2数据库登录别名已添加到J2C认证数据表中,如图7所示。

图7.新的J2C认证数据
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第7张图片

要配置JDBC数据源,请选择先前配置的JDBC提供程序。 在“ DB2 Universal JDBC Provider标头中,单击“ 数据源”链接,如图8所示。

图8.数据源
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第8张图片

在“数据源”表中单击“ 新建 ”以创建新的数据源。 指定一个JNDI名称,然后单击Next ,如图9所示。JNDI名称将在EJB V3.0实体bean的persistence.xml文件中使用,稍后将创建它。

图9.创建数据源
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第9张图片

为数据源指定特定于数据源的属性。 选择驱动程序类型 > 4数据库名称 > 样本服务器名称 > 本地主机端口号 > 50000 。 单击Next ,如图10所示。

图10.指定数据源属性
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第10张图片

要为数据源选择J2C认证数据,请选择先前创建的认证别名。 单击Next ,如图11所示。

图11.设置安全别名
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第11张图片

在数据源的“ Summary页面中,选择“ 完成” 。 新的数据源将添加到表中。 单击保存将数据源存储到主配置。 在表中选择数据源 > 测试连接 。 数据源连接测试将指示测试是否成功,如图12所示。

图12.测试数据源连接
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第12张图片

创建一个DB2数据库表

从命令行工具(例如,命令编辑器或命令行处理器)访问DB2数据库。 要在默认的示例数据库SAMPLE中创建数据库表,请运行以下SQL脚本。 这将为EJB V3.0实体bean创建一个Catalog表。

CREATE TABLE Catalog (id INT PRIMARY KEY NOT NULL, 
journal VARCHAR(100), publisher VARCHAR(100), date VARCHAR(100), 
title VARCHAR(100), author VARCHAR(100));

在Eclipse中创建EJB V3.0项目

  1. 在Eclipse IDE中,选择File> New> Project
  2. 在“ New Project窗口中,选择“ EJB”>“ EJB Project” >“ 下一步”
  3. 在“ New EJB Project窗口中,指定项目名称(例如EJB3EntityBean )。 选择EJB模块版本 > 3.0 > 下一步
  4. 在“ EJB模块”窗口中,选择默认的“ 源文件夹” >“ ejbModule” >“ 完成”
  5. 接下来,将实体bean Java类添加到EJB V3.0项目。 选择File> New> Other,然后在New窗口中,选择Java> Class > Next
  6. 在“ New Java Class窗口中,默认情况下,“源”文件夹为EJB3EntityBean/ejbModule 。 指定包名称(例如com.ejb3.websphere )和类名称( Catalog ),然后单击Finish
  7. 实体bean Java类已添加到EJB V3.0项目。 WebSphere V7需要JDK V6。 如果尚未安装,请安装JDK V6(请参阅参考资料 )。 右键单击EJB 3.0 > 属性,然后选择Java构建路径节点。 添加JRE系统库[jre6]以及WebSphere V7中包含的J2EE V5 JAR。 创建一个库EJB3并将j2ee.jar添加到该库中,如图13所示。
图13. Java构建路径中的库
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第13张图片

将源文件夹ejbModule添加到Java Build Path,如图14所示。

图14. Java构建路径中的Source文件夹
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第14张图片

与添加Catalog.java bean类相似,添加Java类CatalogTestBean.java (会话bean), CatalogTestLocal.java (本地业务接口)和CatalogTestRemote.java (远程业务接口)。 要求EJB V3.0实体bean在META-INF目录中具有persistence.xml配置文件。

  1. 在项目资源管理器中,选择META-INF > 文件>新建>其他
  2. 在“ New窗口中,选择XML> XML > 下一步
  3. 在“ New XML File窗口中,选择ejbModule> META-INF文件夹。 指定文件名 > persistence.xml > 完成 。 将persistence.xml文件添加到META-INF文件夹。
  4. 使用文件>新建>其他> XML> XML在EJB V3.0项目中创建build.xml脚本。 在项目文件夹中创建一个META-INF文件夹,并将application.xml添加到该文件夹​​中。
  5. 在项目文件夹中创建一个webModule文件夹,以创建实体EJB的JSP客户端,然后将EJB3Client.jsp添加到该文件夹​​中。
  6. WEB-INF文件夹添加到webModule文件夹,并将web.xml文件添加到WEB-INF文件夹。 EJB V3.0项目的目录结构如图15所示。
图15. EJB V3.0项目的目录结构
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第15张图片

创建一个EJB V3.0实体bean

与EJB V2.0不同,在EJB V3.0中,实体Bean是普通旧Java对象(PO​​JO)。 实体Bean映射是使用注释定义的,注释是在JDK V5中引入的,并且位于javax.persistence包中。 带有@Entity注释的POJO类是一个实体bean。 使用@Table批注在类级别设置实体bean映射的模式和表。 如果未指定@Table批注,则默认表名是实体bean类名。 我们将创建一个映射到Catalog表的实体bean Catalog

@Entity
@Table(name="Catalog")
public class Catalog implements Serializable {
...
}

如果已将启用了缓存的实体Bean通过实体管理器保留到数据库中,则该实体Bean将通过缓存进行序列化。 因此,建议使用实体bean来实现java.io.Serializable接口。 在实体bean类中,指定POJO属性。 还要指定serialVersionUID ,序列化运行时将其用于将版本号与可序列化的类相关联。 为实体bean属性添加getter和setter方法。 用@Id注释指定标识符属性。 还有其他EJB V3.0批注,可以在实体bean中指定它们(请参阅参考资料 )。 清单1中显示了Catalog实体bean。

清单1.实体bean类Catalog.java
import java.io.Serializable;
import javax.persistence.*;


@Entity
@Table(name="Catalog")
public class Catalog implements Serializable {
	private static final long serialVersionUID = 7422574264557894633L;
	private long id;
	private String journal;
            private String publisher;
            private String date;
	private String title;
            private String author;

    public Catalog(){ super();}

    public Catalog(Integer id, String journal, String publisher, String date, 
               String title, String author){
    super();
    this.id=id;
    this.journal=journal;
    this.publisher=publisher;
    this.date=date;
    this.title=title;
    this.author=author;
    }

	@Id
		public long getId() {
		return id;
	}

	
	public void setId(long id) {
		this.id = id;
	}

        public String getJournal() {
		return journal;
	}

	
	public void setJournal(String journal) {
		this.journal = journal;
	}

         public String getPublisher() {
		return publisher;
	}

	
	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}


           public String getDate() {
            return date;
           }
 
           public void setDate(String date) {
            this.date = date;
           }

	
	public String getTitle() {
		return title;
	}

	
	public void setTitle(String title) {
		this.title = title;
	}


        public String getAuthor() {
		return author;
	}

	
	public void setAuthor(String author) {
		this.author = author;
	}

}

创建一个持久性配置文件

persistence.xml文件中的根元素是持久性。 需要命名persistence-unit 。 先前已在WebSphere V7应用程序服务器中配置了具有JNDI jdbc / DB2DS的JDBC数据源。 在persistence.xmljta-data-source元素中指定JNDI名称。 WebSphere Application Server V7中的默认JPA持久性提供程序是Apache OpenJPA提供程序的版本。 将清单2复制到Eclipse中的persistence.xml文件。

清单2.配置文件persistence.xml


        
           jdbc/DB2DS
        
        

WebSphere V7的限制是,如果在persistence元素中使用以下属性指定了persistence.xml文件的模式位置,则会生成错误。

xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

创建一个会话bean

为了获得更好的性能,开发EJB的最佳实践之一(请参阅参考资料 )是从会话Bean访问实体Bean。 使用消耗比有状态会话Bean少的资源的无状态会话Bean来调用实体Bean方法。 无状态会话Bean类使用@Stateless注释进行注释。 无状态会话Bean类CatalogTestBean实现了CatalogTestLocalCatalogTestRemote接口。 使用EntityManager API创建,查找,查询和删除实体实例。 使用@PersistenceContext批注注入EntityManager

@PersistenceContext
            EntityManager em;

使用JNDI绑定Session_Bean_Class_Name部署到WebSphere服务器的会话bean具有本地业务接口的默认JNDI名称绑定,即ejblocal:Session_Bean_Class_Name 。 为了方便从JSP客户端访问JNDI名称, public static final变量分配给本地JNDI名称。

public static final String LocalJNDIName = "ejblocal:"
            + CatalogTestBean.class.getSimpleName();

接下来,创建一个test()方法,该方法返回从测试客户端调用的String 。 使用test()方法创建和持久化实体实例,查询实体实例并删除实体实例,所有这些都使用EntityManager对象(该对象已在会话Bean类中注入)。 注入EntityManager暗示的实例EntityManager是可用的会话bean。 创建实体bean类的实例。

Catalog catalog = new Catalog(new Integer(1), "IBM developerWorks", "IBM", 
            "July 2006", "The Java XPath API", "Elliotte Rusty Harold");

使用persist()方法将实体实例persist()到数据库中。

em.persist(catalog);

同样,保留两个以上的实体实例。 接下来,使用EntityManager对象的createQuery方法创建查询。 该字符串被指定为EJB-QL查询。 使用getResultList()方法执行并以List返回结果。 例如,选择与作者Elliotte Rusty Harold相对应的目录条目。

List catalogEntry = em.createQuery("SELECT c from Catalog c where c.author=:name").
            setParameter("name", "Elliotte Rusty Harold").getResultList();

为测试方法的返回值创建一个字符串变量。

String retValue = "A catalog entry: ";

遍历结果列表以输出实体实例的属性。

for (Iterator iter = catalogEntry.iterator(); iter.hasNext();) {
Catalog element = (Catalog) iter.next();
retValue = retValue + "
" + element.getJournal() + "
"+ element.getPublisher() + "
" + element.getDate() + "
"+ element.getTitle() + "
" + element.getAuthor()+"
"; }

创建并运行EJB-QL查询以返回Catalog数据库中的所有标题。

List allTitles = em.createQuery("SELECT c from Catalog c").getResultList();

可以使用remove()方法remove()实体实例。

em.remove(catalog2);

相应的数据库行将从Catalog表中删除。 随后,创建并运行查询以列出映射到数据库的所有其余实体实例。 清单3中显示了会话bean类CatalogTestBean

清单3.会话bean CatalogTestBean.java
package com.ejb3.websphere;

import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class CatalogTestBean implements CatalogTestRemote, CatalogTestLocal {
	@PersistenceContext
	EntityManager em;

	public static final String LocalJNDIName = "ejblocal:"
			+ CatalogTestBean.class.getSimpleName();

	public String test() {
		Catalog catalog = new Catalog(new Integer(1), "IBM developerWorks",
				"IBM", "July 2006", "The Java XPath API",
				"Elliotte Rusty Harold");
		em.persist(catalog);
		Catalog catalog2 = new Catalog(new Integer(2), "IBM developerWorks",
		   	"IBM", "March 2009", "Use XQuery for the presentation layer",
				"Brian M. Carey");
		em.persist(catalog2);
		Catalog catalog3 = new Catalog(new Integer(3), "IBM developerWorks",
			"IBM", "April 2008", "Use XQuery from a Java environment",
				"Brett McLaughlin");
		em.persist(catalog3);

		String retValue = "A catalog entry: ";
		List catalogEntry = em.createQuery(
			"SELECT c from Catalog c where c.author=:name").setParameter(
				"name", "Elliotte Rusty Harold").getResultList();
		for (Iterator iter = catalogEntry.iterator(); iter.hasNext();) {
		        Catalog element = (Catalog) iter.next();
		        retValue = retValue + "
" + element.getJournal() + "
" + element.getPublisher() + "
" + element.getDate() + "
" + element.getTitle() + "
" + element.getAuthor() + "
"; } retValue = retValue + "All Titles: "; List allTitles = em.createQuery("SELECT c from Catalog c") .getResultList(); for (Iterator iter = allTitles.iterator(); iter.hasNext();) { Catalog element = (Catalog) iter.next(); retValue = retValue + "
" + element.getTitle() + "
"; } em.remove(catalog2); retValue = retValue + "All Entries after removing an entry: "; List allCatalogEntries = em.createQuery("SELECT c from Catalog c") .getResultList(); for (Iterator iter = allCatalogEntries.iterator(); iter.hasNext();) { Catalog element = (Catalog) iter.next(); retValue = retValue + "
" + element + "
"; } return retValue; } }

为会话bean添加一个远程接口和一个本地接口(请参见清单4)。

清单4.会话bean的远程和本地接口
package com.ejb3.websphere;

import javax.ejb.Remote;

@Remote
public interface CatalogTestRemote {
	public String test();
}

package com.ejb3.websphere;

import javax.ejb.Local;

@Local
public interface CatalogTestLocal {
	public String test();
	}

创建一个测试客户端

到目前为止,已经创建了包含业务逻辑的实体Bean和作为该实体Bean的包装器的会话Bean。 接下来,创建一个测试客户端JSP EJB3Client.jsp,在其中运行会话bean的test() 。 要创建的实例CatalogTestLocal使用JNDI查找,首先创建一个IntialContext对象。 使用会话Bean中的JNDI查找获得CatalogTestLocal实例。

InitialContext context = new InitialContext();
CatalogTestLocal beanLocal = (CatalogTestLocal) 
context.lookup(CatalogTestBean.LocalJNDIName);

调用会话bean的test()方法并输出返回值。

String catalog=beanLocal.test();
<%=catalog  %>

清单5中显示了测试客户端JSP EJB3Client.jsp

清单5. EJB3Client.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="com.ejb3.websphere.*, javax.naming.*" %> 




EJB3 Client


<% InitialContext context = new InitialContext();
CatalogTestLocal beanLocal = (CatalogTestLocal) 
context.lookup(CatalogTestBean.LocalJNDIName);
String catalog=beanLocal.test();
%>
<%=catalog  %>

WEB-INF/web.xml文件指定Web部署描述符。 由于未指定Web配置,因此将以下清单复制到web.xml



  
  

为EJB和Web模块创建一个application.xml部署描述符。 将清单6复制到application.xml。

清单6. application.xml


  
  
  
   ejb3.jar
  
  
    
      websphere.war        
     websphere
    
  
  

将实体bean部署到WebSphere

所有的类和配置文件都已完成,可以创建EJB V3.0实体bean。 接下来,编译这些类以创建EJB JAR文件,WAR文件和EAR文件,然后将EAR文件部署到WebSphere服务器。 使用build.xml脚本来编译EJB类,创建EJB EAR文件,并将EJB EAR文件部署到WebSphere。 有关Apache Ant的介绍,请参阅Apache Ant用户手册(请参阅参考资料 )。 在构建脚本中,为脚本中使用的各种目录路径指定属性,例如WebSphere服务器目录,构建目录和WebSphere部署目录。 指定编译EJB类所需的各种JAR文件的类路径。 指定表1中讨论的目标。

表1. build.xml中的目标
目标 描述
准备 创建构建目录和已编译类的目录
编译 编译EJB类
创建一个EJB JAR文件
战争 创建一个WAR文件
组装应用 创建一个EAR文件
部署 将EAR文件部署到WebSphere服务器。 WebSphere部署目录为C:\ Program Files \ IBM \ WebSphere \ AppServer \ installableApps
清洁 删除JAR,WAR和EAR文件

清单7显示了build.xml脚本。

清单7. build.xml




	
	
	
	
	
	
	
	
	
		
			
		
		
			
		
		
	
	
	
		
		
	
	
		
			
		
	
	
		
			
				
			
			
				
			
		
	
	
		
			
				
			
			
				
			
		
	
	
		
			
				
			
			
		
	
	
		
	
	
		
		
		
	
	

在Eclipse中运行构建脚本。 在Package Explorer中,右键单击build.xml > Run As> Ant Build ,如图16所示。

图16.运行build.xml
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第16张图片

构建脚本中的默认构建目标是deploy ,每个目标都依赖于前一个目标。 运行preparecompilejarwarassemble-appdeploy目标,并将EAR文件ejb3.ear部署到WebSphere服务器,如图17所示。

图17.运行build.xml
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第17张图片

在WebSphere Application Server中安装EJB V3.0

在管理控制台中,单击应用程序>新建应用程序 。 在“新建应用程序”标题中,单击“ 新建企业应用程序” 。 指定ejb3.ear文件的路径,然后单击Next ,如图18所示。

图18.指定要安装的EAR文件
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第18张图片

对于条目“如何安装应用程序”,选择“ 详细信息” >“ 下一步” 。 对于条目“选择安装选项标题”,单击复选框“ 预编译JavaServer Pages文件”和“ 部署企业bean” 。 指定要安装应用程序的目录为“ C:\ Program Files \ IBM \ WebSphere \ AppServer \ profiles \ AppSrv01 \ installedApps \ dvohra09-PCNode01Cell”(对于Windows),然后单击Next ,如图19所示。安装的scope目录路径可能与示例不同。

图19.指定安装选项
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第19张图片

在“群集和服务器”标题中选择默认设置,然后单击“ 下一步” 。 在“提供用于编译JSP的选项”中选择默认设置,然后单击“ 下一步” 。 在“提供用于执行EJB部署的选项”标头中,选择“ 数据库” >“ 9.5” ,“ JDK编译级别” >“ 6.0 ”以及“ 数据库访问” >“ JDBC” >“ 下一步” ,如图20所示。

图20.指定EJB部署选项
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第20张图片

在“为Web模块提供JSP重新加载选项”标题中,选择默认设置,然后单击“ 下一步” 。 在“映射共享库”标题中,选择默认设置,然后单击“ 下一步” 。 在“映射共享库关系”标题中,选择默认设置,然后单击“ 下一步” 。 在“提供bean的JNDI名称”标题中, 为所有接口选择JNDI名称,并指定目标资源JNDI名称 ,如图21所示,然后单击Next

图21.指定会话Bean JNDI名称
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第21张图片

在“绑定EJB业务”标题中,选择默认设置,然后单击“ 下一步” 。 在“映射Web模块的虚拟主机”标题中,选择websphere.war WAR文件,选择“ default_host”虚拟主机,然后单击“应用”。 单击下一步 。 在“ Map context roots for Web modulesMap context roots for Web modules目录”标头中,将websphere.war Web上下文的根目录指定为“ websphere”。单击“ 下一步” 。在“模块的元数据”标头中,选择默认设置,然后单击“ 下一步” 。 在“摘要”页面中,单击完成 。 如图22所示,将安装ejb3.ear EAR文件并部署ejb3.jar EJB JAR文件。单击Save保存主配置更改。

图22.安装的EAR文件
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第22张图片

单击Start初始化EJB3应用程序,该应用程序已安装并启动,如图23所示。

图23. EAR应用程序启动
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第23张图片

要为EJB V3.0实体Bean运行JSP客户端,请使用URL http:// localhost:9080 / websphere / Catalog.jsp调用JSP。 会话bean的test()方法被调用。 创建了三个实体bean实例并将其持久化到DB2。 如图24的客户机JSP输出所示,列出了与作者Elliotte Rusty Harold对应的实体实例的entity-bean属性值。 列出所有实体实例的标题。 如后续查询所示,实体实例将被删除以获取所有实体实例,该实体实例仅列出两个实体实例。

图24.运行EJB V3实体bean客户端
ejb 2.0 3.0_Eclipse的EJB V3.0数据库持久性_第24张图片

结论

EJB V3.0支持是WebSphere V7中的一项新功能。 Eclipse-WebSphere7-DB2 9.5的组合非常适合开发EJB V3.0实体bean。


翻译自: https://www.ibm.com/developerworks/opensource/library/os-eclipse-ejb3/index.html

ejb 2.0 3.0

你可能感兴趣的:(数据库,java,eclipse,tomcat,大数据)