当前位置: 技术问答>java相关
急需EJB连接数据库成功的完整、详细配置步骤。
来源: 互联网 发布时间:2015-02-27
本文导语: 先谢谢了!!! | 一步一步用JBuilder4开发EJB 一、 简介 Enterprise Java Beans(EJB) 1.1规范正式定义了一个Java服务器端的组件模型...
先谢谢了!!!
|
一步一步用JBuilder4开发EJB
一、 简介
Enterprise Java Beans(EJB) 1.1规范正式定义了一个Java服务器端的组件模型,以及应用服务器的编程接口。开发人员建立的这类型组件称为enterprise beans,包含了企业的商业逻辑。Enterprise beans运行在EJB服务器上,该服务器为beans提供如事务、安全性方面的服务。开发人员并不需要编程来实现这些低层的、复杂的服务,仅仅需要知道当他们开发的beans需要这些服务的时候,这些服务是可用的。这样,他们就可以将精力集中在处理beans内部的商业逻辑上。
分布式多层应用系统一般来说由一个运行在本地机器上的客户层、一个运行在应用服务器上包含商业逻辑的中间层、一个后台的企业信息系统(典型的如数据库)。而在这里我们关心的焦点是怎样开发EJB,即中间层的东西。
本文提供一个步骤,通过简单的例子介绍怎样在JBuilder4的集成开发环境下开发EJB。这些步骤都很简单,对于了解EJB体系结构和一般的编程规则的人很容易理解。目的是为了能够让大家掌握在JBuilder4下开发分布式的多层应用系统的简单、快速的方法,达到举一反三的效果。
二、环境配置
1、 介绍
Borland JBuilder 是 基于Java 2 企业平台、创建跨平台环境、纯Java 的端对端解决方案的最佳 Java 开发工具。 JBuilder4是开发EJB和基于Java的应用程序的强有力的快速开发工具(RAD)。它提供了一个集成开发环境和大量的向导引导我们一步一步开发我们的应用。
本文将引导读者利用JBuilder4提供的向导和特性一步一步的开发和配置两类EJB(session beans 和entity beans)。
2、安装与配置
■ 安装:
本文所有的例子都是在Windows NT平台上完成的。因为Java本身具有的跨平台特性,所以在其它平台上基本的步骤都是一样的。为了完成我们这篇文章的所有例子,所需软件有:JDK1.2.2、Borland JBuilder4、Inprise Application Server 4.1、InterBase 5.5以及InterClient1.6。你可以使用另外的数据库系统来代替InterBase和InterClient,只要你的数据库系统拥有JDBC驱动程序。所有前面列出的软件,在SUN公司和Borland/Inprise公司的网站上都有评估版可以下载,以满足学习的需要。如下表:
安装JBuilder4:首先安装JBuilder4 Foundation,然后安装JBuilder 4 Enterprise,你还可以将JBuilder4附带的文档和例子安装进去(本文中,JBuilder4安装在D:JBuilder4)。安装完成之后,启动JBuilder4,选择"File"-"New",将弹出一个对话框,让你选择要建立什么样的应用。点击"Enterprise"页,你将会发现,里面所有项目都是灰色、不可选择的。不要着急,等我们安装配置好Inprise Application Server
之后,就会有了。
安装JDK1.1.2:按照提示进行安装(本文中JDK安装在D:jdk1.2.2)。
安装Inprise Application Server 4.1:在安装IAS41时配置osagent端口为14000(缺省)本文中IAS4.1安装在D:IAS41目录下。
安装InterBase和InterClient:因为在后面的Entity Beans例子中,我们将要访问数据库,在这里,我们安装InterBase5.5和针对InterBase5.5的第三类的JDBC驱动程序InterClient1.5。按照安装提示进行下去就可以了(本文中,InterBase安装在D:InterBase CorpInterBase目录下;InterClient安装在D:InterBase CorpInterClient目录下)。
■ 配置:
我们需要配置JBuilder4,让它知道IAS41的存在。启动JBuilder4,在菜单栏选择"Tools"-"Enterprise Setup"。在"Enterprise Setup"窗口中,如图1。在"CORBA"页中的"select configuration"中选择"VisiBroker",然后点击旁边的"Edit"按钮,在"Edit Configuration"窗口中配置"Path of ORB tools"为Inprise Application Server安装目录下的"bin"子目录,在本文中是"D:/IAS41/bin"(注意:这里的路径符号为"/"),如图2。
图1
图2
在"Application Server"页中,如图3,配置IAS安装目录为"D:/IAS41"(注意:这里的路径符号为"/")。
图3
这两项配置完成之后,点击"OK",然后重新启动JBuilder4。
另外,我们需要建立一个由Inprise Application Server的JAR文件组成的库,这样,JBuilder4才能够依靠库中的类来编译项目。
在JBuilder4中,选择菜单中的"Project"-"Default Project Properties…",在打开的窗口中选择"Paths"页面中的"Required Librares"页,如图4,然后点击"Add…"按钮。在"Select One or More Libraries"窗口中,点击"New…"按钮。在"New Library Wizard"窗口中,点击"Add"按钮。将IAS41lib目录下的所有的JAR文件添加进去。如图5。完成之后如图6。设置New Library Name为:ias。
图4
图5
图6
三、Session Beans
1. 开发Session Beans
准备工作完成之后,就可以开始我们的JBuilder4--EJB之旅了。首先,我们将建立一个JBuilder的项目(Project)。在这个项目里,我们将写一个无状态的(Stateless)的Session Beans,命名为TellerBean。在这个Session Bean中,有一个方法用来返回一个假定的号码,这个号码代表一个银行出纳员的编号。完成之后,我们还要建立一个测试用的"客户"来访问这个Bean。
打开你的JBuilder4,如果JBuilder4有默认打开的项目,先关闭它。然后,建立一个新的项目。
步骤:
1、 选择"File"-"New Project…"
2、 设置Project Name、Project directory name为"quickstart";设置Root path为D:/project。(注意路径),如图7。
3、 点击"Finish"。
图7
然后,我们将建立一个EJB Group,这样,我们无论什么时候编译项目时,JBuilder4都将自动的建立一个包含我们的EJBs的、可配置的jar文件。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"Empty EJB Group"-"OK"。
2、 在"Empty EJB Group Wizard"窗口中设置Name为"quickstart"。
3、 点击"OK"。如图8。
图8
下一步,我们就开始建立Bean。JBuilder4提供了建立EJB的向导,这里,我们当然是用向导了。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"Enterprise JavaBean"。
2、 点击"OK"之后,向导提示我们选择EJB Group,当然是用我们刚才建立的EJB Group。
3、 点击"Next",设置Class name为TellerBean。其它保持不变。如图9。
图9
4、 点击"Next",设置"Bean home name"为TellerHome。其它保持不变,如图10。
图10
5、 点击"Finish"。
这样,你在JBuilder4的左边窗口中将可以看到三个类,其中:TellerHome和Teller是为EJB容器实现的接口;TellerBean是我们自己的Bean。我们将增加一个方法到这个Bean中。
选择"TellerBean"类,然后在这个类中增加下面的方法:
public int getTellerNo(){
return 1;
}
保存所有的文件。然后编译这个项目。(单击工具栏的 和 图标)。
现在,我们需要在远程接口中增加我们的放法签名,这样EJB容器才能够将我们的方法暴露给远程调用的客户。
步骤:
1、 双击项目窗格中的:TellerBean.java。在内容窗格中可以看到TellerBean.java的源文件。
2、 在TellerBean标签的下面,点击Bean标签,再选择Methods标签。
3、 选择int getTellerNo()。如图11。
图11
现在,我们已经完成了EJB的代码编写工作。下面将要做的工作是关于配置描述符。
配置描述符是EJB重要的组成部分之一。它将编写EJB代码与EJB的配置设置分割开。这样,在不影响源代码的情况下,可以对应用程序进行分割和调整。
实际上,在我们的项目中已经有了配置描述符。在我们利用EJB Group向导的时候,就生成了。当我们使用向导时,它生成了TellerBean的Java代码,增加了一个相应的配置描述符入口,现在我们只需要调整一下就可以了。
步骤:
1、 在项目窗格双击quickstart.ejbgrp,在下面的结构窗格,展开TellerBean,单击Container Transactions。如图12。
图12
2、在右边的内容窗格中,单击下部的"Add"按钮,为我们的方法增加一个"Required"的事务属性。如图13。这个"Required"的事务属性将对这个Bean的所有方法和接口起作用。
图13
3、为了验证配置描述符设置正确,我们可以点击内容窗格上部的小工具条上的 图标来验证配置描述符的设置。如图14,我们看到,验证得到的信息是:0 errors,0 warnings。
图14
4、保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
现在,所有服务器端的工作我们已经完成。下面我们将建立一个Java客户来测试我们所写的EJB。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"EJB Test Client"。
2、 点击"OK"之后,在EJB Test Client Wizard窗口中,设置class为Client
仅仅选择Generate main function。然后点击"OK",如图15。
图15
3、在建立的类的构造方法中,你可以看到一个"try…catch"语句块。在此语句块中,包含Context的实例、一个TellerHome的JNDI lookup、一个参考TellerHome类型的返回对象narrow。
4、在这些代码行之后,仍然在"try…catch"语句块中,增加下面的代码:
Teller teller=tellerHome.create();
int t=teller.getTellerNo();
System.out.println("Using Teller No is:"+t);
这几行代码建立Bean实例,调用远程方法,然后输出结果。
最后,为了能够调用远程接口,客户程序需要建立RMI/IIOP stubs。
步骤:
1、 在项目窗格中,用右键点击"TellerHome.java",选择"Properties"。
2、 在弹出窗口中,选择"Build"标签,再选择"VisiBroker",然后仅仅选择"Generate IIOP"。如图16。
图16
3、保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
现在,我们已经完成了这个无状态的Session Bean和测试用客户的开发工作。
2. 配置Session Beans
我们将执行这个Bean在JBuilder4内置的EJB容器里面。
步骤:
1、 首先,运行VisiBroker Smart Agent。("Tools"-"VisiBroker Smart Agent")
2、 设置一个配置来运行EJB容器。"Run"-"Configuration…",编辑"default"配置,在EJB标签中,如图16-1配置。
图16-1
3、 点击工具条上的 ,运行容器。等待容器初始化。
4、 用鼠标右键点击项目窗口的Client.java,选择"run"。
在JBuilder4窗口底部的消息窗格中,你将看到如下的消息:
"D:JBuilder4jdk1.3binjavaw -class……………
Using Teller No:1"
这时,你的测试客户程序已经成功的调用了远程接口。
四、Entity Beans
1. 建立数据库
我们已经成功的开发了一个Session Bean。不要觉得它简单,至少它是在JBuilder4中开发EJB的基本步骤。在这一章里,我们将要开发EJB的另外一种形态--Entity Beans。
一个Entity Bean是一个稳定的数据的对象表现,在我们的例子里,稳定的数据是一个关系数据库
首先,我们将在InterBase上建立一个数据库。
步骤:
1、 启动InterBase Server。
2、 启动InterClient中的InterServer。
3、 运行InterBase中的InterBase Winodws ISQL。
4、 在InterBase Winodws ISQL中,选择"File"-"Create Database…"。
5、 设置Database Name为"d:projectquickstartaccounts.gdb,用户名和口令用"SYSDBA"、"masterkey"。点击OK。如图17。
6、 在InterBase Winodws ISQL窗口上部的文本框中,输入下面的建立数据库表的SQL语句:
CREATE TABLE account
( name VARCHAR(20) NOT NULL,
balance INTEGER NOT NULL,
PRIMARY KEY (name)
)
图17
7、 执行建立的SQL语句。如图18。
图18
8、 退出,回答"Yes"提交工作。
2. 开发Entity Beans
我们将利用JBuilder4所提供的向导来生成我们将要开发的Entity bean的代码,并且将它加入到前面的项目中。
首先,我们需要为刚才建立的数据库,指定JDBC驱动程序。退出JBuilder4。从InterClient的安装目录下(这里是:D:InterBase CorpInterClient)复制interclient.jar文件到JBuilder4安装目录下的lib子目录里面。用任意的文本编辑器打开JBuilder4安装目录下的bin子目录里面的jdbce.config文件。在此文件的尾部加上:
# Add other database drivers here
addpath ../lib/interclient.jar
保存此文件,重新打开JBuilder4。
检查以下我们前面所做的工作:
1、 在JBuilder4中,选择"Tools"-"JDBC Explorer"。
2、 在JDBC Explorer窗口中,选择"File"-"New…"。
3、 选择"Driver"为:interbase.interclient.Driver;"URL"通过旁边的浏览按钮定位在我们刚才建立数据库的地方(D:projectquickstartaccounts.gdb)。如图19。
图19
4、"OK"之后,在JDBC Explorer中展开我们刚刚建立数据库URL。用户名:SYSDBA;密码:masterkey。登录之后,展开树,就可以看到我们所建立的表和表中的列了。如图20。
图20
现在,我们就可以开始建立我们的Entity bean了。
步骤:
1、 在JBuilder4中,选择"File"-"New…"-"Enterprise"标签--"EJB Entity Bean Modeler",点击"OK"按钮之后,在向导的步骤1里,将此Bean加入已经建立的EJB Group(quickstart.ejbgrp)。
2、 利用前面建立的数据库URL(Driver;interbase.interclient.Driver;URL: jdbc:interbase://localhost/D:projectquickstartACCOUNTS.GDB),用户名:SYSDBA;口令:masterkey;登录到数据库中,点击"Next"。如图21。
图21
3、 根据提示,选择ACCOUNT表,"Next",选择表中所有的列,"Next"到"Finish"。
4、 保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
这样,我们实际上就已经完成了这个Entity Bean的开发工作。JBuilder4的向导已经在配置描述符中增加了一个入口和一个数据源的入口。
一个Entity Bean只不过是生成的代码。下面我们将建立一个客户程序来访问这个Entity Bean。这个客户程序将建立四个Entity Bean的实例,在数据库的Account表中建立四行数据。
使用JBuilder4的EJB Test Client Wizard,在这一次我们建立的测试客户程序,将依靠Account EJB,根据提示,使用缺省的类名:AccountTestClient1就可以了。利用向导,生成main函数,然后在生成的main函数的try…catch语句块中,"accountHome = (AccountHome) PortableRemoteObject.narrow(ref, AccountHome.class);"的后面,加入下面的代码:
Account ac1=accountHome.create("John",150);
Account ac2=accountHome.create("Paul",150);
Account ac3=accountHome.create("George",150);
Account ac4=accountHome.create("Ringo",150);
用鼠标右键点击项目窗格的AccountHome.java文件,选择"Properties…"。在弹出窗口中的"Build"标签中的"VisiBroker"标签中,选择"Generate IIOP",点击"OK"。
保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
3. 配置
我们仍然在JBuilder4中运行EJB容器。客户程序将依靠运行在EJB容器中的Entity Bean在数据库的Account表中建立四行数据。
首先,建立一个库,这样当我们运行EJB容器的时候,InterClient JDBC驱动程序能够被添加到classpath。
步骤:
1、 在JBuilder4中选择"Project"-"Project Properties…"。
2、 在"Required Libraries"标签中,点击"Add…"。
3、 在弹出的窗口中,点击"New…"。
4、 将JBuilder4安装目录下的lib子目录里的interclient.jar文件添加到"Library Paths"中。
5、 "Name"值设为:InterClient。
完成之后,就可以运行你建立的应用了。
确认VisiBroker Smart Agent、InterBase Server和InterClient的InterServer仍然在运行。
点击工具条上的 ,运行容器。等待容器初始化。
用鼠标右键点击项目窗口的AccountTestClient1.java,选择"run"。
完成之后,运行JDBC Explorer。
展开"interbase://localhost/D:projectquickstartACCOUNTS.GDB",点击"Tables"下的ACCOUNT表。在右边窗格选择Data标签。你将看到程序所创建的新的四行数据。
如图22。
图22
一、 简介
Enterprise Java Beans(EJB) 1.1规范正式定义了一个Java服务器端的组件模型,以及应用服务器的编程接口。开发人员建立的这类型组件称为enterprise beans,包含了企业的商业逻辑。Enterprise beans运行在EJB服务器上,该服务器为beans提供如事务、安全性方面的服务。开发人员并不需要编程来实现这些低层的、复杂的服务,仅仅需要知道当他们开发的beans需要这些服务的时候,这些服务是可用的。这样,他们就可以将精力集中在处理beans内部的商业逻辑上。
分布式多层应用系统一般来说由一个运行在本地机器上的客户层、一个运行在应用服务器上包含商业逻辑的中间层、一个后台的企业信息系统(典型的如数据库)。而在这里我们关心的焦点是怎样开发EJB,即中间层的东西。
本文提供一个步骤,通过简单的例子介绍怎样在JBuilder4的集成开发环境下开发EJB。这些步骤都很简单,对于了解EJB体系结构和一般的编程规则的人很容易理解。目的是为了能够让大家掌握在JBuilder4下开发分布式的多层应用系统的简单、快速的方法,达到举一反三的效果。
二、环境配置
1、 介绍
Borland JBuilder 是 基于Java 2 企业平台、创建跨平台环境、纯Java 的端对端解决方案的最佳 Java 开发工具。 JBuilder4是开发EJB和基于Java的应用程序的强有力的快速开发工具(RAD)。它提供了一个集成开发环境和大量的向导引导我们一步一步开发我们的应用。
本文将引导读者利用JBuilder4提供的向导和特性一步一步的开发和配置两类EJB(session beans 和entity beans)。
2、安装与配置
■ 安装:
本文所有的例子都是在Windows NT平台上完成的。因为Java本身具有的跨平台特性,所以在其它平台上基本的步骤都是一样的。为了完成我们这篇文章的所有例子,所需软件有:JDK1.2.2、Borland JBuilder4、Inprise Application Server 4.1、InterBase 5.5以及InterClient1.6。你可以使用另外的数据库系统来代替InterBase和InterClient,只要你的数据库系统拥有JDBC驱动程序。所有前面列出的软件,在SUN公司和Borland/Inprise公司的网站上都有评估版可以下载,以满足学习的需要。如下表:
安装JBuilder4:首先安装JBuilder4 Foundation,然后安装JBuilder 4 Enterprise,你还可以将JBuilder4附带的文档和例子安装进去(本文中,JBuilder4安装在D:JBuilder4)。安装完成之后,启动JBuilder4,选择"File"-"New",将弹出一个对话框,让你选择要建立什么样的应用。点击"Enterprise"页,你将会发现,里面所有项目都是灰色、不可选择的。不要着急,等我们安装配置好Inprise Application Server
之后,就会有了。
安装JDK1.1.2:按照提示进行安装(本文中JDK安装在D:jdk1.2.2)。
安装Inprise Application Server 4.1:在安装IAS41时配置osagent端口为14000(缺省)本文中IAS4.1安装在D:IAS41目录下。
安装InterBase和InterClient:因为在后面的Entity Beans例子中,我们将要访问数据库,在这里,我们安装InterBase5.5和针对InterBase5.5的第三类的JDBC驱动程序InterClient1.5。按照安装提示进行下去就可以了(本文中,InterBase安装在D:InterBase CorpInterBase目录下;InterClient安装在D:InterBase CorpInterClient目录下)。
■ 配置:
我们需要配置JBuilder4,让它知道IAS41的存在。启动JBuilder4,在菜单栏选择"Tools"-"Enterprise Setup"。在"Enterprise Setup"窗口中,如图1。在"CORBA"页中的"select configuration"中选择"VisiBroker",然后点击旁边的"Edit"按钮,在"Edit Configuration"窗口中配置"Path of ORB tools"为Inprise Application Server安装目录下的"bin"子目录,在本文中是"D:/IAS41/bin"(注意:这里的路径符号为"/"),如图2。
图1
图2
在"Application Server"页中,如图3,配置IAS安装目录为"D:/IAS41"(注意:这里的路径符号为"/")。
图3
这两项配置完成之后,点击"OK",然后重新启动JBuilder4。
另外,我们需要建立一个由Inprise Application Server的JAR文件组成的库,这样,JBuilder4才能够依靠库中的类来编译项目。
在JBuilder4中,选择菜单中的"Project"-"Default Project Properties…",在打开的窗口中选择"Paths"页面中的"Required Librares"页,如图4,然后点击"Add…"按钮。在"Select One or More Libraries"窗口中,点击"New…"按钮。在"New Library Wizard"窗口中,点击"Add"按钮。将IAS41lib目录下的所有的JAR文件添加进去。如图5。完成之后如图6。设置New Library Name为:ias。
图4
图5
图6
三、Session Beans
1. 开发Session Beans
准备工作完成之后,就可以开始我们的JBuilder4--EJB之旅了。首先,我们将建立一个JBuilder的项目(Project)。在这个项目里,我们将写一个无状态的(Stateless)的Session Beans,命名为TellerBean。在这个Session Bean中,有一个方法用来返回一个假定的号码,这个号码代表一个银行出纳员的编号。完成之后,我们还要建立一个测试用的"客户"来访问这个Bean。
打开你的JBuilder4,如果JBuilder4有默认打开的项目,先关闭它。然后,建立一个新的项目。
步骤:
1、 选择"File"-"New Project…"
2、 设置Project Name、Project directory name为"quickstart";设置Root path为D:/project。(注意路径),如图7。
3、 点击"Finish"。
图7
然后,我们将建立一个EJB Group,这样,我们无论什么时候编译项目时,JBuilder4都将自动的建立一个包含我们的EJBs的、可配置的jar文件。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"Empty EJB Group"-"OK"。
2、 在"Empty EJB Group Wizard"窗口中设置Name为"quickstart"。
3、 点击"OK"。如图8。
图8
下一步,我们就开始建立Bean。JBuilder4提供了建立EJB的向导,这里,我们当然是用向导了。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"Enterprise JavaBean"。
2、 点击"OK"之后,向导提示我们选择EJB Group,当然是用我们刚才建立的EJB Group。
3、 点击"Next",设置Class name为TellerBean。其它保持不变。如图9。
图9
4、 点击"Next",设置"Bean home name"为TellerHome。其它保持不变,如图10。
图10
5、 点击"Finish"。
这样,你在JBuilder4的左边窗口中将可以看到三个类,其中:TellerHome和Teller是为EJB容器实现的接口;TellerBean是我们自己的Bean。我们将增加一个方法到这个Bean中。
选择"TellerBean"类,然后在这个类中增加下面的方法:
public int getTellerNo(){
return 1;
}
保存所有的文件。然后编译这个项目。(单击工具栏的 和 图标)。
现在,我们需要在远程接口中增加我们的放法签名,这样EJB容器才能够将我们的方法暴露给远程调用的客户。
步骤:
1、 双击项目窗格中的:TellerBean.java。在内容窗格中可以看到TellerBean.java的源文件。
2、 在TellerBean标签的下面,点击Bean标签,再选择Methods标签。
3、 选择int getTellerNo()。如图11。
图11
现在,我们已经完成了EJB的代码编写工作。下面将要做的工作是关于配置描述符。
配置描述符是EJB重要的组成部分之一。它将编写EJB代码与EJB的配置设置分割开。这样,在不影响源代码的情况下,可以对应用程序进行分割和调整。
实际上,在我们的项目中已经有了配置描述符。在我们利用EJB Group向导的时候,就生成了。当我们使用向导时,它生成了TellerBean的Java代码,增加了一个相应的配置描述符入口,现在我们只需要调整一下就可以了。
步骤:
1、 在项目窗格双击quickstart.ejbgrp,在下面的结构窗格,展开TellerBean,单击Container Transactions。如图12。
图12
2、在右边的内容窗格中,单击下部的"Add"按钮,为我们的方法增加一个"Required"的事务属性。如图13。这个"Required"的事务属性将对这个Bean的所有方法和接口起作用。
图13
3、为了验证配置描述符设置正确,我们可以点击内容窗格上部的小工具条上的 图标来验证配置描述符的设置。如图14,我们看到,验证得到的信息是:0 errors,0 warnings。
图14
4、保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
现在,所有服务器端的工作我们已经完成。下面我们将建立一个Java客户来测试我们所写的EJB。
步骤:
1、 选择"File"-"New…"-"Enterprise"标签-"EJB Test Client"。
2、 点击"OK"之后,在EJB Test Client Wizard窗口中,设置class为Client
仅仅选择Generate main function。然后点击"OK",如图15。
图15
3、在建立的类的构造方法中,你可以看到一个"try…catch"语句块。在此语句块中,包含Context的实例、一个TellerHome的JNDI lookup、一个参考TellerHome类型的返回对象narrow。
4、在这些代码行之后,仍然在"try…catch"语句块中,增加下面的代码:
Teller teller=tellerHome.create();
int t=teller.getTellerNo();
System.out.println("Using Teller No is:"+t);
这几行代码建立Bean实例,调用远程方法,然后输出结果。
最后,为了能够调用远程接口,客户程序需要建立RMI/IIOP stubs。
步骤:
1、 在项目窗格中,用右键点击"TellerHome.java",选择"Properties"。
2、 在弹出窗口中,选择"Build"标签,再选择"VisiBroker",然后仅仅选择"Generate IIOP"。如图16。
图16
3、保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
现在,我们已经完成了这个无状态的Session Bean和测试用客户的开发工作。
2. 配置Session Beans
我们将执行这个Bean在JBuilder4内置的EJB容器里面。
步骤:
1、 首先,运行VisiBroker Smart Agent。("Tools"-"VisiBroker Smart Agent")
2、 设置一个配置来运行EJB容器。"Run"-"Configuration…",编辑"default"配置,在EJB标签中,如图16-1配置。
图16-1
3、 点击工具条上的 ,运行容器。等待容器初始化。
4、 用鼠标右键点击项目窗口的Client.java,选择"run"。
在JBuilder4窗口底部的消息窗格中,你将看到如下的消息:
"D:JBuilder4jdk1.3binjavaw -class……………
Using Teller No:1"
这时,你的测试客户程序已经成功的调用了远程接口。
四、Entity Beans
1. 建立数据库
我们已经成功的开发了一个Session Bean。不要觉得它简单,至少它是在JBuilder4中开发EJB的基本步骤。在这一章里,我们将要开发EJB的另外一种形态--Entity Beans。
一个Entity Bean是一个稳定的数据的对象表现,在我们的例子里,稳定的数据是一个关系数据库
首先,我们将在InterBase上建立一个数据库。
步骤:
1、 启动InterBase Server。
2、 启动InterClient中的InterServer。
3、 运行InterBase中的InterBase Winodws ISQL。
4、 在InterBase Winodws ISQL中,选择"File"-"Create Database…"。
5、 设置Database Name为"d:projectquickstartaccounts.gdb,用户名和口令用"SYSDBA"、"masterkey"。点击OK。如图17。
6、 在InterBase Winodws ISQL窗口上部的文本框中,输入下面的建立数据库表的SQL语句:
CREATE TABLE account
( name VARCHAR(20) NOT NULL,
balance INTEGER NOT NULL,
PRIMARY KEY (name)
)
图17
7、 执行建立的SQL语句。如图18。
图18
8、 退出,回答"Yes"提交工作。
2. 开发Entity Beans
我们将利用JBuilder4所提供的向导来生成我们将要开发的Entity bean的代码,并且将它加入到前面的项目中。
首先,我们需要为刚才建立的数据库,指定JDBC驱动程序。退出JBuilder4。从InterClient的安装目录下(这里是:D:InterBase CorpInterClient)复制interclient.jar文件到JBuilder4安装目录下的lib子目录里面。用任意的文本编辑器打开JBuilder4安装目录下的bin子目录里面的jdbce.config文件。在此文件的尾部加上:
# Add other database drivers here
addpath ../lib/interclient.jar
保存此文件,重新打开JBuilder4。
检查以下我们前面所做的工作:
1、 在JBuilder4中,选择"Tools"-"JDBC Explorer"。
2、 在JDBC Explorer窗口中,选择"File"-"New…"。
3、 选择"Driver"为:interbase.interclient.Driver;"URL"通过旁边的浏览按钮定位在我们刚才建立数据库的地方(D:projectquickstartaccounts.gdb)。如图19。
图19
4、"OK"之后,在JDBC Explorer中展开我们刚刚建立数据库URL。用户名:SYSDBA;密码:masterkey。登录之后,展开树,就可以看到我们所建立的表和表中的列了。如图20。
图20
现在,我们就可以开始建立我们的Entity bean了。
步骤:
1、 在JBuilder4中,选择"File"-"New…"-"Enterprise"标签--"EJB Entity Bean Modeler",点击"OK"按钮之后,在向导的步骤1里,将此Bean加入已经建立的EJB Group(quickstart.ejbgrp)。
2、 利用前面建立的数据库URL(Driver;interbase.interclient.Driver;URL: jdbc:interbase://localhost/D:projectquickstartACCOUNTS.GDB),用户名:SYSDBA;口令:masterkey;登录到数据库中,点击"Next"。如图21。
图21
3、 根据提示,选择ACCOUNT表,"Next",选择表中所有的列,"Next"到"Finish"。
4、 保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
这样,我们实际上就已经完成了这个Entity Bean的开发工作。JBuilder4的向导已经在配置描述符中增加了一个入口和一个数据源的入口。
一个Entity Bean只不过是生成的代码。下面我们将建立一个客户程序来访问这个Entity Bean。这个客户程序将建立四个Entity Bean的实例,在数据库的Account表中建立四行数据。
使用JBuilder4的EJB Test Client Wizard,在这一次我们建立的测试客户程序,将依靠Account EJB,根据提示,使用缺省的类名:AccountTestClient1就可以了。利用向导,生成main函数,然后在生成的main函数的try…catch语句块中,"accountHome = (AccountHome) PortableRemoteObject.narrow(ref, AccountHome.class);"的后面,加入下面的代码:
Account ac1=accountHome.create("John",150);
Account ac2=accountHome.create("Paul",150);
Account ac3=accountHome.create("George",150);
Account ac4=accountHome.create("Ringo",150);
用鼠标右键点击项目窗格的AccountHome.java文件,选择"Properties…"。在弹出窗口中的"Build"标签中的"VisiBroker"标签中,选择"Generate IIOP",点击"OK"。
保存所有的文件,然后编译工程。(单击工具栏的 和 图标)。
3. 配置
我们仍然在JBuilder4中运行EJB容器。客户程序将依靠运行在EJB容器中的Entity Bean在数据库的Account表中建立四行数据。
首先,建立一个库,这样当我们运行EJB容器的时候,InterClient JDBC驱动程序能够被添加到classpath。
步骤:
1、 在JBuilder4中选择"Project"-"Project Properties…"。
2、 在"Required Libraries"标签中,点击"Add…"。
3、 在弹出的窗口中,点击"New…"。
4、 将JBuilder4安装目录下的lib子目录里的interclient.jar文件添加到"Library Paths"中。
5、 "Name"值设为:InterClient。
完成之后,就可以运行你建立的应用了。
确认VisiBroker Smart Agent、InterBase Server和InterClient的InterServer仍然在运行。
点击工具条上的 ,运行容器。等待容器初始化。
用鼠标右键点击项目窗口的AccountTestClient1.java,选择"run"。
完成之后,运行JDBC Explorer。
展开"interbase://localhost/D:projectquickstartACCOUNTS.GDB",点击"Tables"下的ACCOUNT表。在右边窗格选择Data标签。你将看到程序所创建的新的四行数据。
如图22。
图22