|
当需要在命名服务上下文中查询一个对象时,需要调用javax.naming.Context.lookup()方法,并把查询到的对象显式转化为数据源对象,然后通过该数据源对象进行数据库操作。下面就来看如何使用 DataSource 对象绑定的名称查询该对象,见示例13-5。 【程序源代码】
1 // ==================== Program Description ==========================
2 // 程序名称:示例13-5 : GetDataSource.java
3 // 程序目的:从命名服务中查询DataSource对象
4 // ==============================================================
5 import java.util.Hashtable ;
6 import javax.naming.* ;
7 import java.sql.* ;
8 import javax.sql.* ;
9
10 public class GetDataSource
11 {
12 public GetDataSource()
13 {
14 try {
15 // 建立JNDI上下文
16 Hashtable env = new Hashtable() ;
17 env.put(Context.INITIAL_CONTEXT_FACTORY,
18 "com.sun.jndi.fscontext.RefFSContextFactory") ;
19
20 Context ctx = new InitialContext(env) ;
21
22 // 查找对象
23 DataSource ds = (DataSource)ctx.lookup("jdbc/ datasource ") ;
24 // 获取数据库连接
25 Connection con = ds.getConnection() ;
26 con.close();
27 }
28 catch(Exception e ) {
29 e.printStackTrace();
30 }
31 }
32
33 public static void main (String args[]){
34 new GetDataSource() ;
35 }
36 }
|
【程序注解】 从程序中可以看出,查询数据源的操作非常简单。只要创建一个初始上下文,再调用lookup()方法就可以了(lookup()方法的参数就是示例13-4中DataSource 对象绑定的名称)。这和我们在第10章中介绍的一般的JNDI操作没有任何区别。然后我们就可以从数据源中获取一个数据库连接。(T111)
本文选自飞思图书《精通Java核心技术》
|