tomcat连接池得到的连接在jsp中测试成功,在java main方法中测试conn为null 10C

直接上代码

//测试类
 public class Draft {
    public static void main(String args[]){
        Connection conn=Fconn.getPoolConn();
        System.out.println(conn.toString());
    }
}
 //jsp测试页
 <%
    Connection conn=Fconn.getPoolConn();
    out.println(conn.toString());
  %>

图片说明

//从池中获取连接功能类,测试程序中我用下面的工厂获得连接
 public class GetConnectionFromPool {
    private Connection conn=null;
    public Connection getMySQLConnection(){
        try{
            String datasourcename="java:comp/env/jdbc/HanLinMysql";
            Context cont=new InitialContext();
            DataSource datasource=(DataSource)cont.lookup(datasourcename);
            this.conn=datasource.getConnection();
        }catch(Exception e){
            //this.conn=null;
        }


        return this.conn;
    }
    public Connection getSQLServerConnection(){
        try{
            String datasourcename="java:comp/env/jdbc/HanLinSQLServer/hanlinsale";
            Context cont=new InitialContext();
            DataSource datasource=(DataSource)cont.lookup(datasourcename);
            this.conn=datasource.getConnection();
        }catch(Exception e){
            //this.conn=null;
        }

        return this.conn;
    }

}
 //连接工厂
 public class Fconn {
    public static Connection getPoolConn(){
        Connection conn=null;
        GetConnectionFromPool pool=new GetConnectionFromPool();
        conn=pool.getSQLServerConnection();
        return conn;
    }
}

6个回答

环境问题?你再试试从新配置环境变量

qq_35528975
HanLin-Chong 不是吧,jsp中是成功的
2 年多之前 回复

图片说明

图片说明
环境变量没问题,

知道了,tomcat数据源是基于tomcat容器的,,,,单独的class没有通过容器,把这个class写在servlet就可以了,tomcat把jsp处理为servlet了图片说明

//这句加载数据源的代码只有容器才认识
 String datasourcename="java:comp/env/jdbc/HanLinSQLServer/hanlinsale";

图片说明
这是测试的servlet,成功了

你直接使用main 执行,你的web 容器都没有启动呢?怎么可能拿的到,就好像你spring 还没有加载,你就要去拿spring 的been 一样,当然是拿不到的啊!、
上楼正解,你换成servlet 就可以了,通过页面请求过来,web 容器已经初始化完成了,不懂web容器什么时候启动,自行百度

你直接使用main 执行,你的web 容器都没有启动呢?怎么可能拿的到,就好像你spring 还没有加载,你就要去拿spring 的been 一样,当然是拿不到的啊!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问