-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: No more data in socket, SQL Error 17410
PostPosted: Thu Apr 28, 2005 9:54 am 
Newbie

Joined: Thu Apr 28, 2005 9:33 am
Posts: 3
Hi,

I have a Hibernate application that crashes after it has not been accessed for a long time. I get the error "No more data in socket" (not sure about the exact syntax, as this is translated from a french log : "Il n'y a plus de données à lire dans le socket"). I'm also getting "SQL Error: 17410, SQLState: null" in the log.

The application is running against an Oracle database, and Tomcat is on a Linux server.

I searched for "socket", "data socket", and "17410" in the forum posts, but couldn't come up with an answer... I did find references to c3p0, but I'm not using that (or at least I think I'm not, it's not in my libraries).

I imagine that I'm not the only one that's encountered this problem before though.

I am running Hibernate 3.

Thanks for any insight. Here are more details :


In the application, whenever I want to access the database data, I use the following code :

Session session = HibernateUtil.currentSession();
// ... data access code, such as session.createQuery(...)
HibernateUtil.closeSession();


Here's my HibernateUtil class :

package [my package];

import org.hibernate.*;
import org.hibernate.cfg.*;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static final ThreadLocal session = new ThreadLocal();

public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
session.set(null);
if (s != null)
s.close();
}
}


Here's a log of the exception :

java.sql.SQLException: Il n'y a plus de données à lire dans le socket

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)

at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160)

at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java:963)

at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java:893)

at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:105)

at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)

at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)

at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)

at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119)

at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92)

at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950)

at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802)

at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:379)

at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:320)

at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:86)

at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1089)

at org.hibernate.loader.Loader.doQuery(Loader.java:365)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:206)

at org.hibernate.loader.Loader.doList(Loader.java:1515)

at org.hibernate.loader.Loader.list(Loader.java:1498)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369)

at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:266)

at org.hibernate.impl.SessionImpl.list(SessionImpl.java:788)

at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)

at com.bnq.sqla.process.CotesJournalieresPanier.<init>(Unknown Source)

at com.bnq.sqla.web.PanierJournalierAction.execute(Unknown Source)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)

at java.lang.Thread.run(Thread.java:534)

65763506 2005-04-27 08:05:02,566 [http-8080-Processor23] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 17410, SQLState: null

65763506 2005-04-27 08:05:02,566 [http-8080-Processor23] ERROR org.hibernate.util.JDBCExceptionReporter - Il n'y a plus de données à lire dans le socket


Top
 Profile  
 
 Post subject:
PostPosted: Mon May 02, 2005 6:51 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
Use a connection pool like c3p0. It will handle the reset connection recovery for you.

_________________
Emmanuel


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.