|
如果我们想改变与程序通信的数据库甚至JDBC DataSource厂商,只要把新的 DataSource重新绑定到原来的名称就可以了,如示例13-6所示。 【程序源代码】
1 // ==================== Program Description ==========================
2 // 程序名称:示例13-6 : RebindDataSource.java
3 // 程序目的:数据源的重新绑定
4 // ==============================================================
5 import com.inet.tds.TdsDataSource;
6 import java.util.Hashtable;
7 import javax.naming.*;
8 import javax.naming.directory.*;
9 import java.sql.* ;
10 import javax.sql.* ;
11
12 public class RebindDataSource
13 {
14 // 定义数据源的相关参数
15 private String serverName = "persistentjava.com";
16 private int portNumber = 1434; // 新端口号
17 private String login = "sun"; // 新用户名和密码
18 private String password = "java";
19 private String databaseName = "ds"; // 新数据库名称
20
21 private String filePath = "jdbc/datasource";
22
23 public RebindDataSource ()
24 {
25 Hashtable env = new Hashtable();
26 env.put(Context.INITIAL_CONTEXT_FACTORY,
27 "com.sun.jndi.fscontext.RefFSContextFactory");
28 try {
29 Context ctx = new InitialContext(env);
30 TdsDataSource ds = new TdsDataSource();
31
32 ds.setServerName(serverName);
33 ds.setPortNumber(portNumber);
34 ds.setDatabaseName(databaseName);
35 ds.setUser(login);
36 ds.setPassword(password);
37 ds.setDescription("JDBC DataSource Connection ");
38
39 // 调用rebind()方法
40 ctx.rebind(filePath, ds);
41 ctx.close();
42 }
43 catch (Exception ex) {
44 System.err.println(ex.getMessage());
45 }
46 }
47
48 public static void main(String args[]) {
49 new RebindDataSource();
50 }
51 }
|
【程序注解】 第15~19行定义了新数据源的相关参数。与数据源绑定的名称不变(第21行)。然后我们像示例13-4中一样,创建命名服务上下文、设置数据源参数。这些工作完成之后,就可以调用rebind()方法了。它将我们新创建和设置的数据源绑定到指定的名称"jdbc/datasource",供以后查询并使用。(T111)
本文选自飞思图书《精通Java核心技术》
|