Java Weblogic连接池Exhaused

Java Weblogic连接池Exhaused,java,hibernate,jdbc,weblogic-10.x,Java,Hibernate,Jdbc,Weblogic 10.x,我们在应用程序中使用weblogic连接池。我们正在使用hibernate访问数据库。现在,当我们尝试从weblogic数据源获取连接时,它会引发安全异常。因此,我们需要在hibernate.properties中放置weblogic凭据,如下所示 hibernate.connection.username=weblogic hibernate.connection.password=weblogic1 现在这一切都很好,但当我把加密密码放在hibernate.properties中,然后我

我们在应用程序中使用weblogic连接池。我们正在使用hibernate访问数据库。现在,当我们尝试从weblogic数据源获取连接时,它会引发安全异常。因此,我们需要在hibernate.properties中放置weblogic凭据,如下所示

hibernate.connection.username=weblogic
hibernate.connection.password=weblogic1 
现在这一切都很好,但当我把加密密码放在hibernate.properties中,然后我们在开始时解密密码,设置为hibernate配置,如下所示

String password = config.getProperty("hibernate.connection.password"); 
if (password != null) { 
     password = Cryptography.decryptIfNeeded(password); 
     config.setProperty("hibernate.connection.password",password); 
}
一切正常,但一到两个小时后,我们开始关注weblogic连接池耗尽的问题。现在,当我删除上面的密码解密代码并将纯文本密码放入hibernate道具中时,一切正常,没有连接池耗尽,即使我们让env运行了几天也会出现问题

我无法找出问题的原因。 在我们的应用程序中,我们有一个轮询器,它在10秒后继续轮询db表,该轮询器开始获取连接池exahsuted error

PFB堆栈跟踪

 -  2014-01-21 00:00:01,104 [Thread-318:WorkProcessor$WorkRunner(WorkProcessor$WorkRunner:D:JobSchedulerDaemon:MAIN)] ERROR (support.context.SessionExecutable) Caught exception from SessionExecutable.execute()
 -  2014-01-21 00:00:01,104 [Thread-318:WorkProcessor$WorkRunner(WorkProcessor$WorkRunner:D:JobSchedulerDaemon:MAIN)] ERROR (batch.scheduler.JobSchedulerDaemon) Exception encountered polling for batch jobs to run
com.splwg.shared.common.LoggedException: 
The following stacked messages were reported as the LoggedException was rethrown: 
com.splwg.base.support.context.ApplicationContext.createThreadBoundSession(ApplicationContext.java:523): Caught exception from SessionExecutable.execute()

The root LoggedException was: Error creating hibernate session
    at com.splwg.shared.common.LoggedException.wrap(LoggedException.java:198)
    at com.splwg.shared.common.LoggedException.wrap(LoggedException.java:85)
    at com.splwg.base.support.context.ApplicationContext.newHibernateSession(ApplicationContext.java:497)
    at com.splwg.base.support.context.FrameworkSession.initialize(FrameworkSession.java:228)
    at com.splwg.base.support.context.FrameworkSession.<init>(FrameworkSession.java:212)
    at com.splwg.base.support.context.ApplicationContext.createSession(ApplicationContext.java:459)
    at com.splwg.base.support.context.ApplicationContext.createThreadBoundSession(ApplicationContext.java:523)
    at com.splwg.base.support.context.SessionExecutable.doInReadOnlySession(SessionExecutable.java:101)
    at com.splwg.base.support.context.SessionExecutable.doAsReadOnlyInCurrentSessionIfAvailable(SessionExecutable.java:65)
    at com.splwg.base.support.context.SessionExecutable.doAsReadOnlyInCurrentSessionIfAvailable(SessionExecutable.java:57)
    at com.splwg.base.support.batch.scheduler.PendingBatchJob.areThereBatchJobsToRun(PendingBatchJob.java:82)
    at com.splwg.base.support.batch.scheduler.PendingBatchJob.nextPendingJob(PendingBatchJob.java:38)
    at com.splwg.base.support.batch.scheduler.JobSchedulingPollIteration.execute(JobSchedulingPollIteration.java:34)
    at com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.performPollingWork(JobSchedulerDaemon.java:80)
    at com.splwg.base.support.grid.space.PollingDaemon.doExecuteWork(PollingDaemon.java:55)
    at com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.doExecuteWork(JobSchedulerDaemon.java:67)
    at com.splwg.base.support.grid.AbstractGridWork.executeWork(AbstractGridWork.java:69)
    at com.splwg.base.support.grid.node.WorkProcessor$WorkRunner.runOutsideTransaction(WorkProcessor.java:257)
    at com.splwg.base.support.grid.space.AbstractTask.run(AbstractTask.java:57)
    at com.splwg.base.support.grid.space.ThreadPool$TaskRunner.run(ThreadPool.java:166)
    at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    at org.hibernate.jdbc.BorrowedConnectionProxy.invoke(BorrowedConnectionProxy.java:74)
    at $Proxy187.prepareStatement(Unknown Source)
    at com.splwg.base.support.context.ApplicationContext.setNLSDateFormat(ApplicationContext.java:503)
    at com.splwg.base.support.context.ApplicationContext.newHibernateSession(ApplicationContext.java:490)
    ... 19 more
Caused by: java.sql.SQLException: Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool FCBDataSource to allocate to applications, please increase the size of the pool and retry..
    at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal(ResourcePoolImpl.java:577)
    at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:343)
    at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:324)
    at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:94)
    at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java:1677)
    at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446)
    at weblogic.jdbc.jta.DataSource.connect(DataSource.java:403)
    at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364)
    at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    at org.hibernate.jdbc.BorrowedConnectionProxy.invoke(BorrowedConnectionProxy.java:74)
    at $Proxy187.prepareStatement(Unknown Source)
    at com.splwg.base.support.context.ApplicationContext.newHibernateSession(ApplicationContext.java:490)
    at com.splwg.base.support.context.FrameworkSession.initialize(FrameworkSession.java:228)
    at com.splwg.base.support.context.ApplicationContext.createSession(ApplicationContext.java:463)
    at com.splwg.base.support.context.ApplicationContext.createThreadBoundSession(ApplicationContext.java:523)
    at com.splwg.base.support.context.SessionExecutable.doInReadOnlySession(SessionExecutable.java:101)
    at com.splwg.base.support.context.SessionExecutable.doAsReadOnlyInCurrentSessionIfAvailable(SessionExecutable.java:65)
    at com.splwg.base.support.context.SessionExecutable.doAsReadOnlyInCurrentSessionIfAvailable(SessionExecutable.java:57)
    at com.splwg.base.support.batch.scheduler.PendingBatchJob.areThereBatchJobsToRun(PendingBatchJob.java:82)
    at com.splwg.base.support.batch.scheduler.PendingBatchJob.nextPendingJob(PendingBatchJob.java:38)
    at com.splwg.base.support.batch.scheduler.JobSchedulingPollIteration.execute(JobSchedulingPollIteration.java:34)
    at com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.performPollingWork(JobSchedulerDaemon.java:80)
    at com.splwg.base.support.grid.space.PollingDaemon.doExecuteWork(PollingDaemon.java:59)
    at com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.doExecuteWork(JobSchedulerDaemon.java:67)
    at com.splwg.base.support.grid.AbstractGridWork.executeWork(AbstractGridWork.java:69)
    at com.splwg.base.support.grid.node.WorkProcessor$WorkRunner.runOutsideTransaction(WorkProcessor.java:257)
    at com.splwg.base.support.grid.space.AbstractTask.run(AbstractTask.java:57)
    at com.splwg.base.support.grid.space.ThreadPool$TaskRunner.run(ThreadPool.java:167)
    at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:662)

    at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1484)
    at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446)
    at weblogic.jdbc.jta.DataSource.connect(DataSource.java:403)
    at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364)
    at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    ... 24 more
-2014-01-21 00:00:01104[Thread-318:WorkProcessor$WorkRunner(WorkProcessor$WorkRunner:D:JobSchedulerDaemon:MAIN)]错误(support.context.SessionExecutable)捕获到SessionExecutable.execute()的异常
-2014-01-21 00:00:01104[Thread-318:WorkProcessor$WorkRunner(WorkProcessor$WorkRunner:D:JobSchedulerDaemon:MAIN)]错误(batch.scheduler.JobSchedulerDaemon)轮询要运行的批处理作业时遇到异常
com.splwg.shared.common.LoggedException:
在LoggedException重新启动时报告了以下堆叠消息:
com.splwg.base.support.context.ApplicationContext.createThreadBoundSession(ApplicationContext.java:523):从SessionExecutable.execute()捕获异常
根LoggedException为:创建hibernate会话时出错
位于com.splwg.shared.common.LoggedException.wrap(LoggedException.java:198)
位于com.splwg.shared.common.LoggedException.wrap(LoggedException.java:85)
位于com.splwg.base.support.context.ApplicationContext.newHibernateSession(ApplicationContext.java:497)
在com.splwg.base.support.context.FrameworkSession.initialize(FrameworkSession.java:228)上
位于com.splwg.base.support.context.FrameworkSession.(FrameworkSession.java:212)
位于com.splwg.base.support.context.ApplicationContext.createSession(ApplicationContext.java:459)
位于com.splwg.base.support.context.ApplicationContext.CreateThreadBunderSession(ApplicationContext.java:523)
位于com.splwg.base.support.context.SessionExecutable.doInReadOnlySession(SessionExecutable.java:101)
位于com.splwg.base.support.context.SessionExecutable.doasradonlyincurrentsessionfavailable(SessionExecutable.java:65)
位于com.splwg.base.support.context.SessionExecutable.doasradonlyincurrentsessionfavailable(SessionExecutable.java:57)
位于com.splwg.base.support.batch.scheduler.PendingBatchJob.areThereBatchJobsToRun(PendingBatchJob.java:82)
位于com.splwg.base.support.batch.scheduler.PendingBatchJob.nextPendingJob(PendingBatchJob.java:38)
位于com.splwg.base.support.batch.scheduler.JobSchedulingPollIteration.execute(JobSchedulingPollIteration.java:34)
在com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.performplingwork(JobSchedulerDaemon.java:80)上
位于com.splwg.base.support.grid.space.PollingDaemon.doExecuteWork(PollingDaemon.java:55)
在com.splwg.base.support.batch.scheduler.JobSchedulerDaemon.doExecuteWork(JobSchedulerDaemon.java:67)上
位于com.splwg.base.support.grid.AbstractGridWork.executeWork(AbstractGridWork.java:69)
位于com.splwg.base.support.grid.node.WorkProcessor$WorkRunner.runOutsideTransaction(WorkProcessor.java:257)
位于com.splwg.base.support.grid.space.AbstractTask.run(AbstractTask.java:57)
位于com.splwg.base.support.grid.space.ThreadPool$TaskRunner.run(ThreadPool.java:166)
位于EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(未知源)
运行(Thread.java:662)
原因:org.hibernate.exception.genericjdbception:无法打开连接
位于org.hibernate.exception.sqlstatecoverter.handlednonspecificeexception(sqlstatecoverter.java:140)
位于org.hibernate.exception.sqlstatecoverter.convert(sqlstatecoverter.java:128)
位于org.hibernate.exception.jdbceptionhelper.convert(jdbceptionhelper.java:66)
位于org.hibernate.exception.jdbceptionhelper.convert(jdbceptionhelper.java:52)
位于org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
位于org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
在org.hibernate.jdbc.借入ConnectionProxy.invoke(借入ConnectionProxy.java:74)
价格为$Proxy187.prepareStatement(来源不明)
位于com.splwg.base.support.context.ApplicationContext.setNLSDateFormat(ApplicationContext.java:503)
位于com.splwg.base.support.context.ApplicationContext.newHibernateSession(ApplicationContext.java:490)
... 还有19个
原因:java.sql.SQLException:内部错误:无法获取XAConnection weblogic.common.resourcepool.ResourceLimitException:池FCBDataSource中当前没有可分配给应用程序的资源,请增加池的大小并重试。。
在weblogic.common.resourcepool.ResourcePoolImpl.ReserverResourceInternal(ResourcePoolImpl.java:577)
在weblogic.common.resourcepool.ResourcePoolImpl.ReserverSource(ResourcePoolImpl.java:343)
位于weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:324)
位于weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:94)
位于weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java:1677)
位于weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:446)
位于weblogic.jdbc.jta.DataSource.connect(DataSource.java:403)
位于weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:364)
位于org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
在org.hibernate.jdbc