首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

J2EE连接Oracle的一个有关问题

2012-03-29 
J2EE连接Oracle的一个问题因为公司程序经常出一个连接池不够用的情况,我现在做了一个测试:我在Weblogic 中

J2EE连接Oracle的一个问题
因为公司程序经常出一个连接池不够用的情况,我现在做了一个测试:
我在Weblogic 中设置了最大连接数为:1
然后我登录系统没有问题,
但是我刷新一下只有就出现这个问题了。程序首页有一个 每几秒刷新的公告功能,这个公告数据是查询出来的
下面是我刷新出的问题:

15:46:23,546 ERROR JDBCExceptionReporter:46 - weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool jwjd to allocate to applications, please increase the size of the pool and retry..
15:46:23,546 ERROR JDBCExceptionReporter:46 - weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool jwjd to allocate to applications, please increase the size of the pool and retry..
15:46:23,546 ERROR JDBCExceptionReporter:46 - Cannot obtain connection: driverURL = jdbc:weblogic:pool:jwjd, props = {enableTwoPhaseCommit=false, connectionPoolID=jwjd, jdbcTxDataSource=true, dataSourceName=jwjd}
15:46:23,546 ERROR JDBCExceptionReporter:46 - Cannot obtain connection: driverURL = jdbc:weblogic:pool:jwjd, props = {enableTwoPhaseCommit=false, connectionPoolID=jwjd, jdbcTxDataSource=true, dataSourceName=jwjd}
15:46:23,546 ERROR JDBCExceptionReporter:37 - Cannot open connection
weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException: No resources currently available in pool jwjd to allocate to applications, please increase the size of the pool and retry..
at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:205)
at weblogic.jdbc.pool.Driver.connect(Driver.java:161)
at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:546)
at weblogic.jdbc.jts.Driver.connect(Driver.java:140)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:344)
at net.sf.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:61)
at net.sf.hibernate.impl.SessionFactoryImpl.openConnection(SessionFactoryImpl.java:396)
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:2914)
at net.sf.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:39)
at net.sf.hibernate.transaction.JDBCTransactionFactory.beginTransaction(JDBCTransactionFactory.java:22)
at net.sf.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1981)
at com.hzjc.zfba.transaction.HibernateTxManager.beginTransaction(HibernateTxManager.java:94)
at com.hzjc.zfba.model.impl.dao.BusinessDAO.beginTransaction(BusinessDAO.java:128)
at com.hzjc.zfba.action.jwjd.service.impl.TxglServiceImpl.checkUpState(TxglServiceImpl.java:76)
at com.hzjc.zfba.security.impl.AuthorizationImpl.getTxList(AuthorizationImpl.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(PropertyUtils.java:1185)
at org.apache.commons.beanutils.PropertyUtils.getNestedProperty(PropertyUtils.java:772)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:801)
at org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:952)
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:277)
at jsp_servlet._jwjd.__jwgg._jspService(__jwgg.java:416)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7051)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)


at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)


出了这个问题以后,我退出系统再登录,无法登录 提示的错误是:


5:49:23,406 ERROR JDBCExceptionReporter:37 - Could not execute query
java.sql.SQLException: Connection has been administratively destroyed. Reconnect.
at weblogic.jdbc.common.internal.ConnectionEnv.checkIfEnabled(ConnectionEnv.java:858)
at weblogic.jdbc.wrapper.PoolConnection.checkConnection(PoolConnection.java:82)
at weblogic.jdbc.wrapper.Connection.prepareStatement(Connection.java:388)
at net.sf.hibernate.impl.SessionFactoryImpl.getPreparedStatement(SessionFactoryImpl.java:537)
at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:56)
at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:482)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:136)
at net.sf.hibernate.loader.Loader.find(Loader.java:620)
at net.sf.hibernate.hql.QueryTranslator.find(QueryTranslator.java:928)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1343)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1322)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1314)
at com.hzjc.zfba.model.impl.dao.hibernate.HibernateDao.find(HibernateDao.java:547)
at com.hzjc.zfba.model.impl.dao.BusinessDAO.getAllList(BusinessDAO.java:291)
at com.hzjc.zfba.security.impl.AuthFactoryImpl.checkAuthAndPassByNo(AuthFactoryImpl.java:193)
at com.hzjc.zfba.action.system.LoginAction.performLogin(LoginAction.java:143)
at com.hzjc.zfba.action.system.LoginAction.doExecute(LoginAction.java:63)
at com.hzjc.zfba.action.BaseAction.execute(BaseAction.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at com.hzjc.zfba.action.SSLFilter.doFilter(SSLFilter.java:78)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at com.hzjc.zfba.action.GBKFilter.doFilter(GBKFilter.java:56)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7053)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3902)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
forward:ForwardConfig[name=failure,path=/login.jsp,redirect=false,contextRelative=false]




[解决办法]
也就是说你每隔几秒就会去数据库查询一次,个人感觉这个频率也太高了吧,会占用很多connection 资源,没必要吧,是否该想想其他处理方式,1.隔的时间段长点然后查询;

热点排行