当前位置:编程学习 > JAVA >>

求高手。。could not open hibernate session..(偶尔出现)

现在在项目中遇到一个奇怪的问题,在业务的受理过程中经常出现和oracle断开连接,而且这个问题不是经常出现,而是偶尔出现,后台报的错是:HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.hibernate.exception.GenericJDBCException: Cannot open connection
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
org.hibernate.loader.Loader.doQuery(Loader.java:673)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.doList(Loader.java:2220)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
org.hibernate.loader.Loader.list(Loader.java:2099)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
dao.AuthorityDAOImpl.getAuthority(AuthorityDAOImpl.java:95)
service.AuthorityService.getAuthority(AuthorityService.java:98)
service.AuthorityService$$FastClassByCGLIB$$53a1382b.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
service.AuthorityService$$EnhancerByCGLIB$$203c1ac3.getAuthority(<generated>)
filter.PageReviewFilter.doFilter(PageReviewFilter.java:84)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
filter.characterEncodingFilter.doFilter(characterEncodingFilter.java:25)


root cause 

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
localhost:1521:ORCL

oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:260)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
java.sql.DriverManager.getConnection(DriverManager.java:582)
java.sql.DriverManager.getConnection(DriverManager.java:154)
org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39)
org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159)
org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.java:211)
org.logicalcobwebs.proxool.ProxoolDataSource.getConnection(ProxoolDataSource.java:97)
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
org.hibernate.loader.Loader.doQuery(Loader.java:673)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.doList(Loader.java:2220)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
org.hibernate.loader.Loader.list(Loader.java:2099)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
dao.AuthorityDAOImpl.getAuthority(AuthorityDAOImpl.java:95)
service.AuthorityService.getAuthority(AuthorityService.java:98)
service.AuthorityService$$FastClassByCGLIB$$53a1382b.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
service.AuthorityService$$EnhancerByCGLIB$$203c1ac3.getAuthority(<generated>)
filter.PageReviewFilter.doFilter(PageReviewFilter.java:84)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
filter.characterEncodingFilter.doFilter(characterEncodingFilter.java:25)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.29

前台:“Could not open  hibernate Session for transaction;nested exception is hibernate is org.hibernate.exception.GenericJDBCException:Connot open connection”;
这个问题很纠结啊,麻烦哪位高手解解啊,
备注:特别是在受理比较繁忙的时候,而且很奇怪的是,当这个问题出现后,服务器上的另一个Webservice也和服务器断开,后台报同样的异常 --------------------编程问答-------------------- java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
localhost:1521:ORCL

这个ORA-12519, TNS:no appropriate service handler found
可能是连接数超过最大值。 --------------------编程问答-------------------- 连接数满的可能性比较高,可以在数据库检查下:


当前连接数:
select count(*) from v$process;


最大连接数:
select value from v$parameter where name = 'processes' --------------------编程问答-------------------- 1、可能是数据库设置连接数太小2、hibernate配置文件最大连接数设置太小。改大点试试,3有些连接未关闭也会造成这种情况 --------------------编程问答-------------------- 你看看你的  事物和session是否都关闭了  然后看看最大连接数   接下来分析数据库  --------------------编程问答--------------------
引用 2 楼  的回复:
连接数满的可能性比较高,可以在数据库检查下:


当前连接数:
select count(*) from v$process;


最大连接数:
select value from v$parameter where name = 'processes'


运行时很正常,偶尔出现这样的问题,通过后台 为发现连接数超标,现在新做的项目中,在打开一个弹出窗口也报同样的错,但是关闭后重新打开就没问题了!! --------------------编程问答-------------------- 呵呵 是 未发现连接数超标
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,