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在JBuilder5内置的EJB容器里面。
步骤:
1、 首先,运行VisiBroker Smart Agent。("Tools"-"VisiBroker Smart Agent")
2、 设置一个配置来运行EJB容器。"Run"-"Configuration…",编辑"default"配置,在EJB标签中,如图16-1配置。
图16-1
3、 点击工具条上的
,运行容器。等待容器初始化。4、 用鼠标右键点击项目窗口的Client.java,选择"run"。
在JBuilder5窗口底部的消息窗格中,你将看到如下的消息:
"D:\JBuilder5\jdk1.3\bin\javaw -class……………
Using Teller No:1"
这时,你的测试客户程序已经成功的调用了远程接口。
四、Entity Beans
1. 建立数据库
我们已经成功的开发了一个Session Bean。不要觉得它简单,至少它是在JBuilder5中开发EJB的基本步骤。在这一章里,我们将要开发EJB的另外一种形态--Entity Beans。
一个Entity Bean是一个稳定的数据的对象表现,在我们的例子里,稳定的数据是一个关系数据库
首先,我们将在InterBase上建立一个数据库。
步骤:
1、 启动InterBase Server。
2、 启动InterClient中的InterServer。
3、 运行InterBase中的IBConsole。
4、 在IBConsole中,选择左边窗口的InterBase Servers - Local Server双击。用户名和口令用"SYSDBA"、"masterkey"。
5、 右击Databases,选择Create databaseUploadFiles/20071231/200815223834918778016..
6、 在Create database窗口中的Alias中输入accounts,在File(s)中Filename(s)中输入d:\project\quickstart\accounts.gdb,然后点OK完成。
7、 选择IBConsole的菜单Tools - Interactive SQLUploadFiles/20071231/200815223834918778016..,在Interactive SQL-accounts窗口上部的文本框中,输入下面的建立数据库表的SQL语句:
CREATE TABLE account
( name VARCHAR(20) NOT NULL,
balance INTEGER NOT NULL,
PRIMARY KEY (name)
)
8、 选择Query - Excute。
注:SQL语句最好自己写上去,copy上去的,可能在excute的时候会出错,因为有非法的字符。你只要把空格去掉就可以了。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
我们将利用JBuilder5所提供的向导来生成我们将要开发的Entity bean的代码,并且将它加入到前面的项目中。
首先,我们需要为刚才建立的数据库,指定JDBC驱动程序。退出JBuilder5。从InterClient的安装目录下(这里是:D:\InterBase Corp\InterClient)复制interclient.jar文件到JBuilder5安装目录下的lib子目录里面。用任意的文本编辑器打开JBuilder5安装目录下的bin子目录里面的dbpilot.config文件。在此文件的尾部加上:
# Add other database drivers here addpath UploadFiles/20071231/200815223834918778016./lib/interclient.jar
保存此文件,重新打开JBuilder5。
检查以下我们前面所做的工作:
1、 在JBuilder5中,选择"Tools"-"DataBase pilot"。
2、 在DataBase pilot窗口中,选择"File"-"New…"。
3、 选择"Driver"为:interbase.interclient.Driver;"URL"通过旁边的浏览按钮定位在我们刚才建立数据库的地方(D:\project\quickstart\accounts.gdb)。如图19。
图19
4、"OK"之后,在JDBC EXPlorer中展开我们刚刚建立数据库URL。用户名:SYSDBA;密码:masterkey。登录之后,展开树,就可以看到我们所建立的表和表中的列了。如图20。
图20
现在,我们就可以开始建立我们的Entity bean了。
步骤:
1、 在JBuilder5中,选择"File"-"New…"-"Enterprise"标签--"EJB Entity Bean Modeler",点击"OK"按钮之后,在向导的步骤1里,将此Bean加入已经建立的EJB Group(quickstart.ejbgrp)。
2、 选取Schemas and table types中的Schemas。利用前面建立的数据库URL(Driver;interbase.interclient.Driver;URL:jdbc:interbase://localhost/D:\project\quickstart\ACCOUNTS.GDB),用户名:SYSDBA;口令:masterkey;登录到数据库中,点击"Next"。如图21。
图21
3、 根据提示,选择ACCOUNT表,"Next",选择表中所有的列,"Next"到"Finish"。
4、 保存所有的文件,然后编译工程。
这样,我们实际上就已经完成了这个Entity Bean的开发工作。JBuilder5的向导已经在配置描述符中增加了一个入口和一个数据源的入口。
一个Entity Bean只不过是生成的代码。下面我们将建立一个客户程序来访问这个Entity Bean。这个客户程序将建立四个Entity Bean的实例,在数据库的Account表中建立四行数据。
使用JBuilder5的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. 配置
我们仍然在JBuilder5中运行EJB容器。客户程序将依靠运行在EJB容器中的Entity Bean在数据库的Account表中建立四行数据。
首先,建立一个库,这样当我们运行EJB容器的时候,InterClient JDBC驱动程序能够被添加到classpath。
步骤:
1、 在JBuilder5中选择"Project"-"Project Properties…"。
2、 在"Required Libraries"标签中,点击"Add…"。
3、 在弹出的窗口中,点击"New…"。
4、 将JBuilder5安装目录下的lib子目录里的interclient.jar文件添加到"Library Paths"中。
5、 "Name"值设为:InterClient。
完成之后,就可以运行你建立的应用了。
确认VisiBroker Smart Agent、InterBase Server和InterClient的InterServer仍然在运行。
点击工具条上的 ,运行容器。等待容器初始化。
用鼠标右键点击项目窗口的AccountTestClient1.java,选择"run"。
完成之后,运行JDBC Explorer。
展开"interbase://localhost/D:\project\quickstart\ACCOUNTS.GDB",点击"Tables"下的ACCOUNT表。在右边窗格选择Data标签。你将看到程序所创建的新的四行数据。
如图22。