请问高手帮小第看看我写的一个连接连接池的连接(connect).所以可以用但是。发现一个严重问题。代码如下:这个是我连接连接池的连接类返回一个连接
package shenbao;
import javax.sql.*;
import java.sql.*;
import javax.naming.*;
public class Connect {
private javax.sql.DataSource ds=null;
private java.sql.Connection conn=null;
public Connection getConnection(){
      try
      {
          javax.naming.Context ctx= new InitialContext();
          ds = (DataSource) ctx.lookup("oracleserver");//oracleserver这个是在weblogic里面配置的JNDI Name:名称。
          conn=ds.getConnection();
          ctx.close();
      }
      catch(Exception e)
      {
        e.printStackTrace();
      }
      finally
      {
          ds=null;
      }
      return conn;
}
}
下面是我的调用:
    java.sql.Connection conn=null;
    java.sql.Statement stm=null;
    java.sql.PreparedStatement pstmt=null;
    java.sql.ResultSet rst= null;     con = new Connect();
     conn=con.getConnection();
     stm=conn.createStatement();
   try
    {}
    catch(Exception e)
    {}
   finally
   {
       rst.close();
       con=null;
       conn.close();
   }
这样我程序会出现一个奇怪的问题,
  当我查询几次后,再点击查询就会出现:
java.lang.NullPointerException
我确定不是我程序那里真出现空指针问题。应该是连接数据库问题。因为我再次启动weblogic后就能打开了。而出现空指针后必须要重新启动weblogic。不然打开那个页面多少java.lang.NullPointerException
.....
我想问问到底是我写的连接类(Connet)有问题。还是我创建一个con = new Connect();后没有释放连接呢。请高手们指点。如果是我的连接类写错了。请贴一个给我好吗。谢谢
给你80分。急急急

解决方案 »

  1.   

    不会JNDI啊,正在搞,配置XML太麻烦了,我快哭了
    帮楼主顶。
      

  2.   

    呵呵我是在weblogin下面的配置。特别简单。tomcat我也不会
      

  3.   

    驱动错误没有。我能连接数据库能查询。在window下还可以查询满都次的,但是在linx系统下就好象不能过10次了。吗的 但是不能连接超过十几次罢了
      

  4.   

    首先,你的stm没有关闭掉,其次,你的这段 con = new Connect();
         conn=con.getConnection();
         stm=conn.createStatement();应该是放在try{}里面的,而你没有。所以出了错也不会捕获,更不流到finally那里关闭,
      

  5.   

    这个就是因为服务器没有配置好
    tomcat直接使用服务器来配置好像会有问题,修改server.xml就好了
    weblogic不太清楚
      

  6.   

    就算上面的兄弟说的没有错。但是我正常操作啊。也能查询出来说明没有异常产生。也就是说我在操作没有异常的情况下。产生的      
    rst.close();
           con=null;
           conn.close();
    上面不是已经关闭了了解吗。stm我也关了。正常情况下。
    他是正常情况下运行10次就出现了。
      

  7.   

    ctx.close();
    把这句去掉试试吧
      

  8.   

    你这样不在try{}catch()里面得倒数据库连接池对象是可以正常访问,不过你看看你的weblogic控制台有没有出现如下的异常:
    <JDBC> <BEA-001074> <A JDBC pool connection leak was detected. A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed
    by the garbage collector and returned to the connection pool. The following stack trace at create shows where the leaked connection was created.  [Null exception passed, creating stack trace for offending caller]
      

  9.   

    不是的10次只是感觉的。具体我没有算过。而且那里有设置连接次数的啊。只有设置最大连接数嘛。
    weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool MyJDBC Connection Pool to allocate to applications, please increase the size of the pool and retry..
    at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(Ljava/lang/Exception;Ljava/lang/String;)V(JDBCUtil.java:205)
    at weblogic.jdbc.pool.Driver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;(Driver.java:161)
    at weblogic.jdbc.jts.Driver.getNonTxConnection(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;(Driver.java:540)
    at weblogic.jdbc.jts.Driver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;(Driver.java:139)
    at weblogic.jdbc.common.internal.RmiDataSource.getConnection()Ljava/sql/Connection;(RmiDataSource.java:329)
    at shenbao.Connect.getConnection()Ljava/sql/Connection;(Connect.java:13)