如何使用 context.bind 绑定 DataSource。连接池等

Posted

技术标签:

【中文标题】如何使用 context.bind 绑定 DataSource。连接池等【英文标题】:How to bind DataSource using context.bind. Connection pooling etc 【发布时间】:2011-08-13 14:32:18 【问题描述】:

我在 NetBean 7.0 中创建了一个简单的 java 项目,并添加了 jar 文件 sqljdbc4.jar 以支持 MS SQl。

我创建了一个类,其中我为 MQ SQL 创建了一个数据源(代码如下)。 它使用数据源连接数据库并成功获取记录数(504)。 (我有一个包含 504 条记录的 Product 表)

但是在尝试绑定到 Context 时会抛出错误。有人可以帮我建议我应该输入什么来填写“???”在下面的代码中?

package datasourcetest; 

import javax.naming.InitialContext;

import javax.naming.Context;

import javax.naming.NamingException;

import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

import java.sql.*; 

import java.util.Hashtable; 

/** 
* 
* @author admin 
*/ 



public class dataSource  

public static void main(String [] args) 
 

SQLServerDataSource ds = new SQLServerDataSource(); 

ds.setServerName("admin-PC\\SQLEXPRESS"); 

ds.setPortNumber(1433); 

ds.setUser("sa"); 

ds.setPassword("admin"); 

try 

System.out.println("PART 1"); 

Connection con = ds.getConnection(); 

if(con !=null) 

 

System.out.println("Connection Success"); 

 

Statement stmt = con.createStatement(); 

ResultSet rs = stmt.executeQuery("select count(*) from AdventureWorks.Production.Product") ; 

while(rs.next())  

int count = rs.getInt(1); 

System.out.println("Total Record: "+ count); 

 

/* Bind the DataSource to JNDI so that we can look for the datasource by the name given**/ 

System.out.println("PART 2"); 

Hashtable env = new Hashtable(); 

env.put(Context.INITIAL_CONTEXT_FACTORY," ??? "); 

env.put(Context.PROVIDER_URL, " ??? "); 

Context ctx = new InitialContext(env); 

ctx.bind("jdbc/myDatasource",ds); 

SQLServerDataSource myDs = (SQLServerDataSource)ctx.lookup("jdbc/myDatasource"); 

 

catch(SQLException se)  

System.out.println("Failed PART 1"); 

 

catch(NamingException ne)  

System.out.println("Failed PART 2"); 

ne.printStackTrace(); 

 

 

 

【问题讨论】:

【参考方案1】:

查看“连接到数据源”:

http://download.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/datasource.html

【讨论】:

谢谢 - 该链接提供信息,但没有说明 INITIAL_CONTEXT_FACTORY 和 PROVIDER_URL 的值。它抛出错误:javax.naming.NoInitialContextException:无法实例化类:???? [根异常是 java.lang.ClassNotFoundException: ???? ] 这个问题有什么解决办法吗?

以上是关于如何使用 context.bind 绑定 DataSource。连接池等的主要内容,如果未能解决你的问题,请参考以下文章

如何在广播中调用service中的方法

使用 NSDocument 时如何将情节提要视图绑定到 Core Data 实体?

如何使用 vue 绑定引导模式数据

如何在运行时将 Kendo Grid 与 System.Data.DataTable 绑定

如何在 Dialog 中使用数据绑定?

Kendo UI:如何使用 MVVM 绑定设置工具提示的值