使用websphere连接池出现一个问题,请大家帮忙.

请大家帮忙看下,服务器上的配置应该没有问题,我怀疑是操作池出现了问题,大家帮忙看下,或者给我一个比较好的使用websphere jndi连接池 的示例.

1.错误如下
[08-6-24 20:59:45:000 CST] 00000055 MCWrapper     E   J2CA0081E: 尝试在资源 jdbc/searchOil 的 ManagedConnection WSRdbManagedConnectionImpl@158e71a2 上执行方法 cleanup 时方法 cleanup 失败。捕获到异常:java.lang.NullPointerException
        at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.closeChildWrappers(WSJdbcObject.java:162)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.dissociate(WSJdbcConnection.java:1204)
        at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.dissociateConnections(WSRdbManagedConnectionImpl.java:845)
        at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1336)
        at com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:447)
        at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:1508)
        at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1945)
        at com.ibm.ejs.j2c.LocalTransactionWrapper.afterCompletion(LocalTransactionWrapper.java:1130)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.informSynchronizations(LocalTranCoordImpl.java:1472)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java:1180)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.end(LocalTranCoordImpl.java:1285)
        at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java:254)
        at com.ibm.ws.webcontainer.webapp.WebApp.transactionPostInvoke(WebApp.java:3092)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:874)
        at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1802)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:469)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:408)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
        at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1686)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1455)

[08-6-24 20:59:45:063 CST] 00000055 MCWrapper     E   J2CA0081E: 尝试在资源 No longer available 的 ManagedConnection WSRdbManagedConnectionImpl@158e71a2 上执行方法 destroy 时方法 destroy 失败。捕获到异常:java.lang.NullPointerException
        at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.closeChildWrappers(WSJdbcObject.java:162)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:125)
        at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.closeHandles(WSRdbManagedConnectionImpl.java:3405)
        at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:2746)
        at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:1544)
        at com.ibm.ejs.j2c.poolmanager.FreePool.returnToFreePool(FreePool.java:460)
        at com.ibm.ejs.j2c.poolmanager.PoolManager.release(PoolManager.java:1508)
        at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:1945)
        at com.ibm.ejs.j2c.LocalTransactionWrapper.afterCompletion(LocalTransactionWrapper.java:1130)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.informSynchronizations(LocalTranCoordImpl.java:1472)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java:1180)
        at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.end(LocalTranCoordImpl.java:1285)
        at com.ibm.ws.webcontainer.webapp.WebAppTransactionCollaborator.postInvoke(WebAppTransactionCollaborator.java:254)
        at com.ibm.ws.webcontainer.webapp.WebApp.transactionPostInvoke(WebApp.java:3092)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:874)
        at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1802)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:469)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:408)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
        at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1686)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1455)
2.配置的JNDI连接池,测试过连接正常,但是连接次数过过就会提示如上错误,或者直接提示connction未关闭.
我把我写的辅助类,和配置文件,以及调用类发出来,大家帮我看下.

配置文件:
dataSourceName=jdbc/searchOil
factory=com.ibm.websphere.naming.WsnInitialContextFactory
url=iiop://localhost:2809/
DataProvider=OracleDB
CoreDataProvider=OracleDB   

辅助类:
public class DBConnection
{

    private java.sql.Connection FConnection = null;
        private static DBConnection FInstance = new DBConnection();        
        private Context FContext = null;
        /**
        * 初始化
        */
        private void InitContext()
        {
            try
                {
                    Hashtable env = new Hashtable();
                        env.put( Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
                        FContext = new InitialContext(env);        
                        System.out.print("-----" + FContext);
                        //FContext = new InitialContext();

                } catch(Exception e)
                {
                System.out.println("不能初始化连接工厂环境,"+e.toString() );
                }
        }
        /**
         * 获取给定JNDI名的数据源
        */
    public DataSource getDataSource(String JNDIName)
        {
            javax.sql.DataSource ds = null;
            try
            {
                ds = ( javax.sql.DataSource)FContext.lookup(JNDIName) ;
                } catch( Exception e1)
                   {
                       System.out.println( "查找数据源异常," + e1.toString() );
            }
            return ds;
    }
        private String getJNDIName()
    {
            String result = "";
            try
            {
                      java.net.URL url =DBConnection.class.getResource("/db_config.properties");
                    
                    System.out.println("url"+url);
                        InputStream is = (InputStream) url.getContent();
                        Properties props = new Properties();
                        props.load(is);
                        result = props.getProperty( "dataSourceName");
                                //System.out.println( result);
            } catch (Exception e)
            {
                        e.printStackTrace();
                }
                  return result;
        }
                  /**
                   * 构造函数,完成Context初始化并获取数据连接
                   */
        private DBConnection()
        {                  
            InitContext();
            String jndi = getJNDIName();
            DataSource ds = getDataSource( jndi);
            if( ds == null)
                  {
                      System.out.println( "无法获得指定名称的jndi!");
                  }        
                  try
                  {
                          FConnection = ds.getConnection();
                  } catch( Exception e)
                  {
                      System.out.println( "获取连接错误," + e.toString());
                  }
    }
        synchronized public static DBConnection getInstance()
        {
            return FInstance;
        }
        public Connection getConnection()
        {
                return FConnection;
        }
        public Statement newStatement()
        {
                if( FConnection == null)
                        return null;
            Statement st = null;        
                try
                {
                        st = FConnection.createStatement();                        
                } catch( Exception e)
                {
                        e.printStackTrace();
                        System.out.println( "Error Trace in NewStatement() : " + e.getMessage());
                }
                        
                return st;
        }
        public static void main(String[] args)
        {
                DBConnection db = DBConnection.getInstance();
                db.getConnection();
                        
                System.out.println( "hello,world!");
        }
                        
}
调用方法
try {
                        java.sql.ResultSet rs = null;
                        Statement stmt = null;
                        DBConnection db = DBConnection.getInstance();
                        stmt = db.newStatement();
                        String sql = "select jd_id from km_a04  where sjjd_id = '"+id+"'";
                        rs = stmt.executeQuery(sql);
                        while(rs.next()) {
                                jdId.add(rs.getString(1));
                                getMorejdId(jdId,rs.getString(1));
                        }
                        rs.close();
                        stmt.close();
                } catch (Exception e) {
                        e.printStackTrace();
                }
参与15

15同行回答

davidtsangdavidtsang开发工程师广东昱辉
感谢分享显示全部
感谢分享收起
电信设备制造商 · 2012-05-14
浏览1387
月光无寒月光无寒系统工程师新疆电信
我看还是粘一段使用websphere数据源的代码贴切点。谁有给贴出来吧,我现在用的也有问题,勉强对付呢,jndi会报错。6.1的数据源用起来很别扭啊好像显示全部
我看还是粘一段使用websphere数据源的代码贴切点。谁有给贴出来吧,我现在用的也有问题,勉强对付呢,jndi会报错。
6.1的数据源用起来很别扭啊好像收起
电信运营商 · 2008-07-01
浏览1416
tao2552tao2552程序员宏有软件
谁有完整的项目,或者简单的小项目也行.我想看看具体如何应用websphere连接池.显示全部
谁有完整的项目,或者简单的小项目也行.
我想看看具体如何应用websphere连接池.收起
2008-06-27
浏览1374
有什么方法能够解决不释放的问题了?显示全部
有什么方法能够解决不释放的问题了?收起
2008-06-26
浏览1362
wangmowzwangmowzIT经理无忧人实业有限公司
这个问题是经常有的连接不释放显示全部
这个问题是经常有的
连接不释放收起
2008-06-26
浏览1377
tao2552tao2552程序员宏有软件
大多数情况下会出现两种错误1.空指针,然后查询程序是的时候全部是指向  rs 为空2.[08-6-26 12:51:27:315 CST] 00000044 MCWrapper     E   J2CA0058E: ConnectionManager 无法把连接 com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@271d09d...显示全部
大多数情况下会出现两种错误
1.空指针,然后查询程序是的时候全部是指向  rs 为空
2.[08-6-26 12:51:27:315 CST] 00000044 MCWrapper     E   J2CA0058E: ConnectionManager 无法把连接 com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@271d09df 与资源 jdbc/searchOil 的 ManagedConnection WSRdbManagedConnectionImpl@67ec49ea 相关联。接收到异常:com.ibm.ws.exception.WsException: DSRA9420E: Connection cannot be reassociated because child objects are still open.收起
2008-06-26
浏览1460
tao2552tao2552程序员宏有软件
感谢前辈门的分析,我已经检查了我的程序 ResultSet,Statement,PreparedStatement,Connection ,中我已经将 ResultSet,Statement全部关闭.但是Connection  我是通过辅助类获得的,所以没有关闭,因为辅助类没有关闭的方法....显示全部
感谢前辈门的分析,我已经检查了我的程序 ResultSet,Statement,PreparedStatement,Connection ,中我已经将 ResultSet,Statement全部关闭.
但是Connection  我是通过辅助类获得的,所以没有关闭,因为辅助类没有关闭的方法.收起
2008-06-26
浏览1476
tao2552tao2552程序员宏有软件
我把错误的更详细的信息给大家看下.[08-6-26 12:39:41:829 CST] 0000003d MCWrapper     E   J2CA0058E: ConnectionManager 无法把连接 com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@271d09df 与资源 jdbc/searchOil 的 ManagedConnection...显示全部
我把错误的更详细的信息给大家看下.
[08-6-26 12:39:41:829 CST] 0000003d MCWrapper     E   J2CA0058E: ConnectionManager 无法把连接 com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@271d09df 与资源 jdbc/searchOil 的 ManagedConnection WSRdbManagedConnectionImpl@57b449ea 相关联。接收到异常:com.ibm.ws.exception.WsException: DSRA9420E: Connection cannot be reassociated because child objects are still open.
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.(DataStoreAdapterException.java:226)
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.(DataStoreAdapterException.java:177)
        at com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:232)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.reassociate(WSJdbcConnection.java:2052)
        at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.associateConnection(WSRdbManagedConnectionImpl.java:3598)
        at com.ibm.ejs.j2c.MCWrapper.associateConnection(MCWrapper.java:1896)
        at com.ibm.ejs.j2c.ConnectionManager.reassociateConnectionHandle(ConnectionManager.java:1883)
        at com.ibm.ejs.j2c.ConnectionManager.associateConnection(ConnectionManager.java:1865)
        at com.ibm.ejs.j2c.ConnectionManager.associateConnection(ConnectionManager.java:1836)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.reactivate(WSJdbcConnection.java:1935)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:1069)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:1050)
        at com.xjyt.searchApp.dbConn.DBConnection.newStatement(DBConnection.java:103)
        at com.xjyt.searchApp.provide.IndexManager.getManagerList(IndexManager.java:28)
        at com.xjyt.searchApp.actions.GetIndexServlet.doPost(GetIndexServlet.java:45)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1282)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:673)
        at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1802)
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:84)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:469)
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:408)
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101)
        at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1686)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
        at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1455)

[08-6-26 12:39:41:844 CST] 0000003d WSJdbcConnect W   DSRA9400E: Connection 重新关联期间发生致命错误:com.ibm.ws.exception.WsException: DSRA9420E: Connection cannot be reassociated because child objects are still open.
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.(DataStoreAdapterException.java:226)
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.收起
2008-06-26
浏览1579
xuebinemailxuebinemail项目经理北京某股份有限公司
原帖由 tao2552 于 2008-6-26 10:21 发表 WebSphere中流行数据库连接池的配置  我基本没有问题.我的错误可能是由于没有释放连接,或者其他影响的.经常项目运行一段时间就会出现空指针错误,希望经常应用WebSphere连接池的朋友,能具体给我事例.怎么管理和运用WebSphe ....显示全部
原帖由 tao2552 于 2008-6-26 10:21 发表


WebSphere中流行数据库连接池的配置  我基本没有问题.我的错误可能是由于没有释放连接,或者其他影响的.
经常项目运行一段时间就会出现空指针错误,希望经常应用WebSphere连接池的朋友,能具体给我事例.怎么管理和运用WebSphe ...

根据以上各位的分析,我同意问题提出者的自我分析即引用的原文,不是WEBSPHERE配置问题,
请提出者检查项目中每个地方用到 ResultSet,Statement,PreparedStatement,Connection ,
在使用完毕以上四种任何的一种,及时关闭,应该就可以解决问题了。收起
系统集成 · 2008-06-26
浏览1525
tao2552tao2552程序员宏有软件
ORACLE_JDBC_DRIVER_PATH  E:\JDBC驱动(ORACLE10g)    我的这个目录下,两个都有的,ojdbc14.jar和classes12.jar 。都有。斑竹和各位前辈能否看下我前面的操作连接池的程序对不对,或者有时间的加我qq:745144,具体帮我下,感谢斑竹的关注。...显示全部
ORACLE_JDBC_DRIVER_PATH  E:\JDBC驱动(ORACLE10g)   
我的这个目录下,两个都有的,ojdbc14.jar和classes12.jar 。都有。

斑竹和各位前辈能否看下我前面的操作连接池的程序对不对,或者有时间的加我qq:745144,具体帮我下,感谢斑竹的关注。收起
2008-06-26
浏览1791

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2008-06-24
  • 关注会员:0 人
  • 问题浏览:19932
  • 最近回答:2012-05-14
  • X社区推广