无法使用context.xml文件和Microsoft JDBC驱动程序为SQL Server 2012创建连接池

时间:2013-02-09 13:10:18

标签: java tomcat jdbc connection-pooling sql-server-2012

这是我第一次使用SQL Server,之前我正在研究MySQL,我正在tomcat中成功创建数据库连接池。我试图使用相同的代码为sql server创建连接池。请指导我出错的地方。

我正在尝试登录Windows身份验证,我已经在tomcat bin目录中复制了sqljdbc_auth.dll。

以下是我在META-INF下的context.xml文件中编写的代码:

Context antiJARLocking="true" path="">
    <Resource 
    auth="Container" 
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    logAbandoned="true"
    maxActive="100"
    maxIdle="30" 
    maxWait="1000" 
    name="jdbc/mydb" 
    removeAbandoned="true"
    removeAbandonedTimeout="60"
    type="javax.sql.DataSource" 
    url="jdbc:sqlserver://localhost;integratedSecurity=true;" />
</Context>

以下是提供连接的java类:

public class ConnectionPool {
private static ConnectionPool pool=null;
private static DataSource dataSource = null;

public synchronized static ConnectionPool getInstance(){
    if (pool == null){
        pool = new ConnectionPool();
    }
    return pool;
}

private ConnectionPool(){
    try{
        InitialContext ic = new InitialContext();
        dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/mydb");
    }
    catch(Exception e){
        System.out.println(e);
    }
}


public Connection getConnection(){
    try{
        return dataSource.getConnection();
    }
    catch (SQLException sqle){
        System.err.println(sqle);
        return null;
    }
}

public void freeConnection(Connection c){
    try{
        c.close();
    }
    catch (SQLException sqle){
        System.err.println(sqle);
    }
}
}

当我尝试调用getConnection()时,我遇到以下异常: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial Exception in thread "main" java.lang.NullPointerException at ConnectionPool.getConnection(ConnectionPool.java:39)

0 个答案:

没有答案