1、Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 前言 本书是JavaEE课程的实验指导书,JavaEE 课程主要培养学生两个方面的能力:编 写各种 Java 企业级组件的能力以及使用各种企业级服务的能力。本书采用的开发环境是 MyEclipse7.5,应用服务器采用 WebLogic。本实验指导书把所有知识点以实验的形式组织起 来,方便学生参照学习。 实验 1 是关于运行环境和开发环境的安装和配置。 实验 2 到实验 5 是关于多个常用企业级服务的使用。 实验 6 是对 MVC 模式在 Web 应用中的应用。 实验 7 是关于 JSF
2、框架的开发。 实验 8 是关于 Web Service 的开发。 实验 9 到实验 12 是关于 EJB 的开发。 实验 13 和实验 14 是关于 JPA 的使用。 本书的主教材是Java EE 实用教程基于 WebLogic 和 Eclipse(第 2 版) ,改书由 电子工业出版社出版发行,出版时间是 2011.6,如果对书或者实验指导书有问题可以通过本 人的 Blog 反馈,http:/ 著作权和版权所有,如要传播,请注明: 本试验指导书(或者本实验)是Java EE 实用教程基于 WebLogic 和 Eclipse(第 2 版) 的配套实验指导书,作者李绪成。 Java EE实用教
3、程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 2 目录 实验 1:WebLogic和 MyEclipse 的安装和配置.3 实验 2:通过 JNDI 接口访问 JNDI 树 21 实验 3:使用 JDBC 连接到数据库31 实验 4:连接池的配置和应用35 实验 5:使用 JTA完成转账操作 .43 实验 6:使用 MVC 模式实现登录功能.47 实验 7:开发简单的 JSF.59 实验 8:开发基于 JAX-WS 的 Web Service 和客户端 .76 实验 9:使用无状态会话 Bean 完成个人所得税的计算87 实验 10:使用有状态会话 Be
4、an 实现购物车102 实验 11:消息驱动 Bean.112 实验 12:EJB 综合实验实现注册功能 126 实验 13:使用 JPA 完成图书信息增删改查145 实验 14:使用 JPA 完成订单管理 .155 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 3 实验 1: WebLogic 和 MyEclipse 的安装和配 置 实验目标 根据实验指导书完成应用服务器 WebLogic 和集成开发环境 MyEclipse 的安装和配置。 实验目的 (1) 学习一种应用服务器的安装和配置; (2) 学习一种流行的集成开发环境的安装
5、和配置。 实验内容 安装和配置内容如下: 安装 WebLogic; 配置 WebLogic; 安装 MyEclipse; 在 MyEclipse中配置 WebLogic服务器。 其中,WebLogic和 MyEclipse 的安装顺序可以调整。 实验过程 (1)安装 WebLogic 安装文件为:wls1032_win32.exe。安装文件可以从 Oracle 公司网站下载,或者在线安 装,安装过程如下: (a)点击安装程序进入准备界面。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 4 图 1.1 安装的启动界面 (b)准备工作完成
6、之后进入欢迎界面。 图 1.2 WebLogic的欢迎界面 (c)在欢迎界面中点击下一步,进入选择安装目录界面,选择一个合适的目录。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 5 图 1.3 选择中间件安装的路径 (d)点击进入下一步,进入注册安全更新的选择界面。 图 1.4 注册界面 (e)设置完点击下一步,进入安装类型选择界面。选择典型安装。也可以选择自定义 安装,通常选择典型安装即可。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 6 图 1.5 选择安装类型 (f
7、)点击下一步进入安装路径选择界面。选择 WebLogic 要安装的目录。 图 1.6 选择 WebLogic 服务器目录 (g) 点击下一步进入选择快捷方式位置界面,选择默认值即可。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 7 图 1.7 设置快捷方式位置 (h) 点击下一步进入安装概要界面, 可以查看前面的设置, 如果需要修改可以后退修改。 图 1.8 安装概要信息察看 (i) 点击下一步进入安装过程。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 8 图 1.9 安
8、装过程 (j) 安装完之后进入安装完成界面。不选择“运行 Quickstart” ,然后关闭即可。 图 1.10 安装完成 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 9 (2)配置 WebLogic 域 (a)从开始菜单启动配置界面:选择【开始】 【程序】 【Oracle WebLogic】 【Oracle WebLogic 11gR1】 【Tools】 【Configuration Wizard】进入配置界面。选择“创建新的 WebLogic 域” 。 图 1.11 进入配置向导 (b)点击下一步进入选择域源界面,使用默认值即可
9、。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 10 图 1.12 选择域源 (c)点击下一步进入域名和位置的设置界面,都使用默认值即可,设置之后会生成相 应的目录,开始菜单中也会生成相应的快捷方式。 图 1.13 配置域名和位置 (d)点击下一步进入用户名和口令设置界面,为了以后使用方便用户名使用 weblogic, 口令使用 11111111(8个 1) 。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 11 图 1.14 设置用户名和口令 (e)点击下一步进入启动模式
10、和 JDK 选择界面,采用默认值即可。 图 1.15 选择 JDK (f)点击下一步,进入可选配置的选择界面,这里什么都不选。 图 1.16 选择其它配置界面 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 12 (g)点击下一步完成设置,进入配置概要界面,如果有问题,可以后退修改。 图 1.17 配置概要界面 (h)点击创建进入创建过程。 图 1.18 配置过程 (i)配置完成之后进入完成界面。点击完成关闭窗口。这样就完成了域的配置。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011
11、.6 13 图 1.19 配置完成 (3)安装 MyEclipse 这里使用的是 MyEclipse 7.5。MyEclipse 是基于 Eclipse 的插件,已经包含了 Eclipse, 所以不需要单独安装 Eclipse。安装过程如下: (a)点击安装程序,开始安装。 图 1.20 MyEclipse 安装程序启动界面 (b)之后进入欢迎界面。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 14 图 1.21 MyEclipse 欢迎界面 (c)点击 Next 进入协议许可界面。 图 1.22 软件许可协议界面 (d)点击 Ne
12、xt 进入目录选择界界面。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 15 图 1.23 安装目录修改界面 (e)如果需要修改目录,点击 Configure。进入目录修改界面。 图 1.24 安装目录选择界面 (f)目录修改之后点击 Next 返回目录界面。点击 Install 进入安装界面。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 16 图 1.25 安装过程 (g)安装完之后进入启动界面,需要选择工作区。 图 1.26 工作区选择界面 能正常启动说明安装成功。
13、(h)启动之后输入注册码,在【MyEclipse】菜单中选择【Subscription Information】 , 然后输入注册码。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 17 图 1.27 MyEclipse 注册界面 (i)之后进入注册码输入界面,输入注册码即可。 图 1.28 输入注册码界面 (4)在 MyEclipse 中配置 WebLogic 在 MyEclipse 中配置 WebLogic 的目的是在 MyEclipse 启动和管理 WebLogic,配制过程 如下。 (a)选 择【 Window】 【Prefe
14、rence】 【MyEclipse Enterprise Workbench】 【Servers】 【WebLogic】 【WebLigic 10.x】 ,进入配置界面: Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 18 图 1.29 服务器配置界面 配置内容如下: BEA home directory:输入 WebLogic 的安装目录。然后确认一下 WebLogic installation directory、 Execution domain root、 Execution Server name和 Security pol
15、icy file 的信息是正确的。 Administration username:输入配置 WebLogic 域时候输入的用户名。 Administration password:输入配置 WebLogic 域时候输入的用户名对应的口令。 选中“Enable” 。 点击 OK 即可。 (5)测试 (a)启动 MyEclipse 之后,从 MyEclpse 中启动 WebLogic,启动方式如图所示: Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 19 图 1.30 选择启动服务器 (b)进入控制台 打开浏览器,输入“http:/lo
16、calhost:7001/console” 。进入 WebLogic的登录界面。 图 1.31 进入控制台登录界面 (c)输入用户名和口令,用户名为 weblogic,口令为 8 个 1,进入到控制台,可以看 看控制台中的内容。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 20 图 1.32 控制台初始界面 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 21 实验 2:通过 JNDI 接口访问 JNDI 树 实验目的 能够编写客户端程序连接到 JNDI 树,并对 JNDI
17、树上的资源进行增删改查操作,通过 WebLogic 的控制台查看 JNDI 树上绑定的资源。 实验内容 实验内容如下: 创建 Java 工程,并导入 wlClient.jar类库; 创建具有 main 方法的 Java 类,在 main 方法中连接到 JNDI 树,并在 JNDI树上绑 定字符串,然后再查找并输出字符串; 查看 JNDI 树上绑定的字符串; 修改 main 方法完成修改和删除功能。 实验过程 (1)创建 Java工程 启动 MyEclipse 之后创建工程并导入 wlClient.jar类库,具体过程如下: (a)创建 Java工程 通过【File】 【New】 【Java P
18、roject】 ,在新建工程界面中输入工程的名字,工程名 字为 JNDIProject。如图 2.1 所示。 点击【Finish】完成工程的创建,提示如图 2.2 所示信息。这个界面的作用是提示用户 是否切换到某个视图,选择是,为了以后不再选择可以选中复选框,然后点击按钮即可。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 22 图 2.1 创建工程 图 2.2 切换试图 (b)在工程中添加 wlclient.jar包 在工程名上点击【右键】 【build path】 【add external Archieves】添加 jar 包
19、选择【WebLogic】安装目录wlserver_10.3serverlib路径添加 wlclient.jar。选择过程如图 2.3 和图 2.4 所示。创建之后的工程如图 2.5 所示。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 23 图 2.3 选择添加类库 图 2.4 选择要添加的类库 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 24 图 2.5 创建好的工程 (2)创建客户端类 创建独立的客户端程序, 创建一个具有 main方法的 Java类, 在 main方法
20、中连接到 JNDI 树,并在 JNDI 树上绑定字符串,然后再查找并输出字符串。 (a)创建包,在 src 上点击右键选择【New】 【Package】 ,然后在创建包的向导界面 中输入包的名字,这里创建的包名为 jndi,如图 2.6 和 2.7 所示。点击【Finish】完成包 的创建。 图 2.6 选择创建包 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 25 图 2.7 创建包 (b)创建 Java类,在 test 点击右键,选择【New】 【Class】 ,如图 2.8 所示,在弹出 的创建类的界面中输入类名 JNDITes
21、t,然后选择下面的复选框“public static void main(String args)” ,如图 2.9 所示。 图 2.8 选择创建类 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 26 图 2.9 创建类向导界面 点击 Finish,生成的代码如下: package jndi; public class JNDITest /* * param args */ public static void main(String args) / TODO Auto-generated method stub 把“/ TODO A
22、uto-generated method stub”替换成访问 JNDI 树的主要代码,编写好的代 码如图 2.10所示。 在类中出现了大量的红色错误标记,可以使用鼠标点击其中的标记查看错误信息,如 图 2.11 所示。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 27 图 2.10 编写完的 JNDITest 类 图 2.11 查看错误信息 对于上面的错误,是因为没有导入相应的类库,选择点击“Import Context (javax.naming)” ,选择之后这个错误就没有了,系统帮我们在 package 声明下面增加了下面
23、的 import 语句: import javax.naming.Context; 注意:一定不能选择错了包。现在使用的 Context 属于 javax.naming 包。 对于这类错误,也可以直接使用快捷键导入,快捷键为“Ctrl+Shift+o” ,然后根据提示 选择即可。 (c) 启动服务器, 为了测试 JNDI 程序, 需要启动 We b L o g i c 服务器, JNDI 位于 WebLogicJava EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 28 服务器。启动方式参见试验 1 中的测试部分。 (d)启动服务器之后,在 J
24、NDITest.java 的编辑界面点击右键选择【Run As】 【Java Application】 。 图 2.12 运行程序 运行之后,会输出如下信息: JNDI Test example (3)查看 JNDI 树上绑定的字符串 (a)首先进入控制台,进入控制台的方式参见实验 1。 (b)选择服务器,选择控制台左边的【环境】 【服务器】 ,右边会显示服务器的名字 AdminServer,如图 2.13所示。 (c)选择查看 JNDI 树,在图 2.13 界面中点击 AdminServer,在出现的界面中选择“查 看 JNDI 树” ,进入如图 2.14 所示的界面,可以看到通过客户端程序
25、邦定到 JNDI 树的信息。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 29 图 2.13 选择服务器 图 2.14 查看服务器相关信息 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 30 图 2.15 查看 JNDI 树信息 (4)修改程序测试修改和删除功能 (a)测试异常,修改 main 的如下代码: String test = “JNDI Test example11“; 然后再次运行 JNDITest,会得到如下的错误信息: javax.naming.NameAl
26、readyBoundException: Exception in bind() Root exception is org.omg.CosNaming.NamingContextPackage.AlreadyBound: IDL:omg.org/CosNaming/NamingContext/AlreadyBound:1.0 思考:出现这种问题的原因是什么。 (b)测试 rebind,修改下面的代码: ctx.bind(“name“, test); 为: ctx.rebind(“name“, test); 再次运行程序,看出现什么结果。如果把 name 换成 name2 会出现什么结果? (
27、c)测试 unbind 方法,修改下面的代码: ctx.rebind(“name“, test); 为: ctx.unbind(“name“); 再次运行程序,分析运行结果。 注意:unbind 方法只有一个参数。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 31 实验 3:使用 JDBC连接到数据库 实验目的 能够使用 JDBC 连接到数据库上,并把某个表中的数据全部输出出来。 实验内容 实验的内容设计如下: 创建数据库和表,并添加测试数据; 创建 Java 工程,并导入类库; 创建客户端类,连接数据库执行查询。 注意:在完成本实
28、验之前,需要你的电脑上有数据库服务器,本试验使用 MySql 数据 库,如果采用其他数据库,只需要做简单的改动即可。另外,需要使用数据库的驱动程序压 缩包。 实验过程 (1)创建数据库和表 需要先创建表,然后插入测试数据。 (a)数据库使用 MySql自带的 test数据库,在数据库中创建表 student,创建数据库表 的语句如下: create table student(id varchar(10) PRIMARY key,name varchar(10),age int); (b)插入测试数据,创建表之后使用下面的 SQL 语句向数据库中插入两条记录: insert into stud
29、ent values(0611060101,张晓明,22); insert into student values(0611060102,王四海,23); (2)创建工程 本实验使用 Application 测试 JDBC 连接数据库的代码,需要创建 Java 工程,并导入驱 动程序相关的类库。 (a)创建 Java工程,工程名字为 JDBCProject,工程的创建过程可以参见试验 2。 (b)导入驱动程序类,为了访问数据库需要使用 JDBC 驱动程序,驱动程序导入过程 参见试验 2中的导入过程。 创建好的工程如图 3.1 所示。 Java EE实用教程基于 WebLogic和 Eclips
30、e(第 2版) 电子工业出版社 2011.6 32 图 3.1 创建好的 JDBCProject 工程 (3)创建客户端程序 客户端程序完成的功能是从数据库表 student 中查询信息并显示。编写过程如下: (a)创建包,包名为 jdbc,创建过程参见试验 2。 (b)创建带有 main 方法的类,类名为 JDBCTest,创建过程参见试验 2。 (c)编写 main 中访问数据库的代码,测试类的完整代码如下: package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Re
31、sultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCTest public static void main(String args) / 连接数据库的用户名 String user = “root“; / 连接数据库的口令 String pass = “123456“; / 连接数据库的 URL String url = “jdbc:mysql:/localhost:3306/test“; / 连接数据库需要的驱动程序 String driver = “com.mysql.jdb
32、c.Driver“; / 连接对象 Connection con = null; / 语句对象 Statement stmt = null; / 结果集对象 ResultSet rs = null; try / 加载驱动程序 Class.forName(driver); / 创建到数据库的连接 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 33 con = DriverManager.getConnection(url, user, pass); / 创建执行 SQL 语句的语句对象 stmt = con.createStatemen
33、t(); / 要执行的 SQL 语句 String sql = “select * from student“; / 执行 SQL 语句 rs = stmt.executeQuery(sql); / 遍历结果集并显示数据 while (rs.next() for (int i = 0; i 3; i+) System.out.print(rs.getString(i + 1); System.out.print(“t“); System.out.print(“n“); catch (ClassNotFoundException e1) System.out.println(“数据库驱动不存在!
34、“); System.out.println(e1.toString(); catch (SQLException e2) System.out.println(“数据库异常!“); System.out.println(e2.toString(); finally / 关闭对象 t r y rs.close(); catch(Exception e) t r y stmt.close(); catch(Exception e) t r y con.close(); catch(Exception e) (d)运行程序,运行方式参加试验 2,运行结果如图 3.2 所示。 图 3.2 运行结果
35、Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 34 可能的错误: http:/ 列出了 12 种可能的错误。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 35 实验 4:连接池的配置和应用 实验目的 掌握连接池的配置,以及通过连接池访问数据库。使用 WebLogic 提供的连接池服务, 通过控制台进行配置,在 MyEclipse中创建客户端程序访问在 WebLogic中配置的连接池。 实验内容 实验的内容设计如下: 在 WebLogic中配置连接池; 创建 Java 工程,
36、并导入类库; 创建客户端类,通过连接池连接数据库并执行查询。 注意:在完成本实验之前,需要你的电脑上有数据库服务器,本试验使用 MySql 数据 库,如果采用其他数据库,只需要做简单的改动即可。另外本次试验仍然使用上次试验中创 建的表。 实验过程 (1)配制连接池 连接池的配制包括如下过程: 新建数据源, 包括数据库类型以及驱动程序类型的选择, 数据源 JNDI 名字的选择; 配置数据源的事务类型; 配置数据源的基本信息,包括主机、端口、数据库以及用户名口令信息; 数据源的配置,客户端通过数据源访问连接池。 下面分别进行配置。 (a)启动服务器,通过 http:/localhost:7001/
37、console进入 weblogic控制台,进入控制台 的过程参考之前的实验。 (b)新建数据源,在控制台的左边点击【服务】 【JDBC】 【数据源】 ,出现如图 4.1 所示的界面。 (c)在图 4.1 所示的界面右侧点击【新建】按钮,创建 JDBC 数据源,进入如图 4.2 所示界面。 在该界面需要选择数据库类型、 驱动程序类型以及数据源的名字。 选择信息如下: 数据源名称:myDS; JNDI 名称:myDS; 数据库类型,选择 MySQL; 数据库驱动程序,选择第一个。 设置完之后点击【下一步】 。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出
38、版社 2011.6 36 图 4.1 进入数据源创建界面 图 4.2 新建数据源 (d)设置事务,在图 4.2 界面中点击【下一步】进入到图 4.3 所示的界面,选择默认的 事务类型。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 37 图 4.3 设置事务 图 4.4 设置数据基本属性 (e)设置数据库基本属性,在图 4.3 中点击【下一步】进入到图 4.4 所示界面,需要 设置数据库的基本信息,设置如下: 数据库名称:test 主机:localhost 端口:3306 数据库用户名:root Java EE实用教程基于 WebLo
39、gic和 Eclipse(第 2版) 电子工业出版社 2011.6 38 口令及确认口令:root 注意:这些基本信息需要根据自己的数据库进行设置。 (f)配置信息概览,在图 4.4 中点击【下一步】进入到图 4.5 所示的配置信息概览界 面。 图 4.5 配置信息概览 (g)选择目标服务器,如果配置信息没有错误,在图 4.5 中点击【下一步】进入到图 4.6 所示界面。选中 AdminServer 前面的复选框,如果不选择服务器,配置的连接池将不会 起作用。点击完成,进入图 4.7 所示的界面,完成了数据源的配置。 图 4.6 选择服务器 Java EE实用教程基于 WebLogic和 Ec
40、lipse(第 2版) 电子工业出版社 2011.6 39 图 4.7 连接池配置成功 (h)通过 JNDI 树可以查看配置好的连接池,如图 4.8 所示。进入 JNDI 树的过程参见 之前的实验。 图 4.8 通过 JNDI 树查看配置好的连接池 注意:一定要查看 JNDI 树,确保连接池配置成功。 (2)创建 Java工程,并导入类库 本过程包括工程创建以及 JNDI 相关类库的引入。 (a)创建工程,工程的创建过程参见之前的实验,工程的名字为 JDBCPoolProject。 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 40
41、(b)引入类库,需要引入 weblogic.jar和 wlcient.jar类库,引入过程参见之前的实验。 (3)创建客户端类,通过连接池连接数据库并执行查询。 创建客户端的过程,先创建包,然后创建类。 (a)创建包,包名为 jdbcpool,创建过程参见之前的实验。 (b)创建类,类名为 JDBCPoolTest,创建过程参考之前的试验。代码如下: package jdbcpool; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Stat
42、ement; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class JDBCPoolTest public static void main(String args) / 连接对象 Connection con = null; / 语句对象 Statement stmt = null; / 结果集对象 Res
43、ultSet rs = null; / JNDI 上下文环境 Context ctx = null; / 用于封装 JNDI 连接需要的属性 Hashtable ht = new Hashtable(); / 初始化连接工厂,相当于驱动程序 ht.put(Context.INITIAL_CONTEXT_FACTORY, “weblogic.jndi.WLInitialContextFactory“); / JNDI 树的位置 ht.put(Context.PROVIDER_URL, “t3:/localhost:7001“); t r y / / 创建一个初始上下文环境 ctx = new I
44、nitialContext(ht); / / 从 WebLogic服务器上的 JNDI 树查找数据源,参数是 JNDI 的名字 DataSource ds = (DataSource) ctx.lookup(“myDS“); / / 利用 DataSource 调用 getConnection()方法获取连接对象 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 41 con = ds.getConnection(); / / 创建 statement 对象 stmt = con.createStatement(); / / 书写 SQL
45、 语句 String sql = “select * from student“; / / 执行 SQL 语句,返回查询结果 rs = stmt.executeQuery(sql); / / 遍历结果集并输出 while (rs.next() System.out.print(rs.getString(“id“); System.out.print(“t“); System.out.print(rs.getString(“name“); System.out.print(“t“); S y s t e m . o u t . p r i nt(rs.getInt(“age“); System.
46、out.print(“t“); System.out.print(“n“); / * 异常处理 */ catch (NamingException e1) System.out.println(e1.toString(); System.out.println(“数据源没有找到,请确认数据源是否存在,可以查看 JNDI 树。“); catch (SQLException e2) System.out.println(e2.toString(); System.out.println(“数据库异常!“); / * 关闭相关对象 */ f i n a l l y t r y if (rs != n
47、ull) r s . c l o s e ( ) ; catch (Exception e) t r y if (stmt != null) s t m t . c l o s e ( ) ; catch (Exception e) t r y i f ( c o n ! = n u l l ) c o n . c l o s e ( ) ; Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6 42 catch (Exception e) (c)测试。运行该程序运行结果与上一个试验相同。运行过程参见之前的试验。 注意:如果出现以下错误 Ex
48、ception in thread “main“ java.lang.ClassCastException: mon.internal.ConnectionEnv cannot be cast to java.io.Serializable 调整类库的顺序, 调整过程如下: 在工程上面点击右键, 选择 【属性】 , 选择左边的 【Java Build Path】 ,然后选择右边的【Order and Export】 ,要确保 weblogic.jar 在 wlclient.jar 在上面。如果不是使用右边的【Up】或者【Down】调整。如图 4.9 所示。 图4.9 异常处理 Java EE实用教程基于 WebLogic和 Eclipse(第 2版) 电子工业出版社 2011.6