如何使用 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。连接池等的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSDocument 时如何将情节提要视图绑定到 Core Data 实体?