-->
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.  [ 8 posts ] 
Author Message
 Post subject: Exception d'E/S: End of TNS data channel
PostPosted: Mon Oct 17, 2005 6:05 am 
Newbie

Joined: Mon Oct 17, 2005 5:40 am
Posts: 2
Bonjour,
est ce quelqu'un à rencontrer ce problème avec hibernate : Exception d'E/S: End of TNS data channel. Mon programme tourne en permanent et après un temps important d'exécution normale et sans problème cette exception se déclenche.

Je serai reconnaissant pour vos réponses.

MERCI.

Hibernate version: Hibernate 3

Code between sessionFactory.openSession() and session.close():
j'utilise la classe utilitaire pour la récupération de la session et sa fermeture :

public class HibernateUtil {
private static final SessionFactory sessionFactory;
//
public static Log log =
LogFactory.getLog(
ma.meditel.consul.fidelisation.hibernate.util.HibernateUtil.class);

//garde la Session du thread courant dans une variable de type ThreadLocal
public static final ThreadLocal session = new ThreadLocal();

public static boolean CLOSE_SESSION = true;

static {
try {
//mode de fermeture de session
CLOSE_SESSION = true;
// Crée la SessionFactory
sessionFactory =
new Configuration()
.configure("/ma/meditel/consul/fidelisation/ressources/hibernate.cfg.xml")
.buildSessionFactory();
} catch (HibernateException ex) {
log.error("builduing SessionFactory échoué.", ex);
throw ex;
}
}

public static Session currentSession() throws HibernateException {
Session s = (Session) session.get();
// Ouvre une nouvelle Session, si ce Thread n'en a aucune
if (s == null) {
s = sessionFactory.openSession();
session.set(s);
}
return s;
}

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

Full stack trace of any exception that occurs:

09:09:05,105 WARN JDBCExceptionReporter:71 - SQL Error: 17002, SQLState: null
09:09:05,107 ERROR JDBCExceptionReporter:72 - Exception d'E/S: End of TNS data channel
09:09:05,109 WARN JDBCExceptionReporter:71 - SQL Error: 17002, SQLState: null
09:09:05,111 ERROR JDBCExceptionReporter:72 - Exception d'E/S: End of TNS data channel
09:09:05,113 ERROR AccessService:94 - Erreur lors du chargement de l'accès par msisdn=060414511
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:1596)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at ma.meditel.consul.fidelisation.hibernate.services.AccessService.findByMsisdn(AccessService.java:90)
at ma.meditel.consul.fidelisation.web.servlets.AuthentificationServlet.faireLogin(AuthentificationServlet.java:75)
at java.lang.reflect.Method.invoke(Native Method)
at frigo.servlet.ServletPere.service(ServletPere.java:477)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.iplanet.server.http.servlet.NSServletRunner.invokeServletService(NSServletRunner.java:937)
at com.iplanet.server.http.servlet.WebApplication.service(WebApplication.java:1071)
at com.iplanet.server.http.servlet.NSServletRunner.ServiceWebApp(NSServletRunner.java:999)
Caused by:
java.sql.SQLException: Exception d'E/S: End of TNS data channel
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:417)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:432)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:182)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:165)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:604)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:485)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:396)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:334)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162)
at org.hibernate.loader.Loader.doQuery(Loader.java:390)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
... 13 more
09:09:05,120 ERROR AuthentificationServlet:231 - Erreur lors de l'authentification : org.hibernate.exception.GenericJDBCException: could not execute query


Name and version of the database you are using: Oracle 8i


Top
 Profile  
 
 Post subject:
PostPosted: Tue Oct 18, 2005 5:09 am 
Newbie

Joined: Wed Sep 21, 2005 7:57 am
Posts: 7
Location: Lausanne, Switzerland
A mon avis c'est un problème Oracle, pas hibernate.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Oct 18, 2005 9:03 am 
Senior
Senior

Joined: Tue May 10, 2005 9:00 am
Posts: 125
Bonjour,

se pourrait-il, par hasard, que ton programme reste 'inactif' pendant un certain temps. Il est possible que la connection aie été coupée après une période d'inactivité.

deuxième possibilité, se pourrait-il que tu manipule des LOB? Il y a quelques références à cette erreur lors de l'envoi de blob trop gros vers la db par rapport a sa configuration.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 24, 2005 4:40 am 
Newbie

Joined: Mon Oct 17, 2005 5:40 am
Posts: 2
Mon programme peut rester inactif car c'est une application web; donc si la connexion se ferme comment faire pour résoudre ce problème? est ce qu'il y'a une méthode pour permettre de recherger la connexion d'hibernate avec la base ?

merci de votre réponse.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 24, 2005 4:53 am 
Senior
Senior

Joined: Tue May 10, 2005 9:00 am
Posts: 125
Tout dépend de ta configuration.
Si l'erreur se déclenche a cause d'une coupure de connexion,
c'est que la coupure a eu lieu entre le openSession() et le session.close();
Normalement, cela ne devrait pas, dans le cadre d'une webapp, durer
plus de quelques secondes: ouverture de la session au début de la requête http et fermeture quand le résultat est prêt.
Je déconseille fortement l'utilisation d'une session globale qui serait ouverte en permanence au démarrage de la webapp.

Coté technique, la déconnexion est déclenchée par le serveur Oracle au bout d'un temps défini par l'administrateur. Ici nous avons constater un problème de connexion oracle sur une webapp qui restait 'inactive' pendant 48 heures (en gros personne ne consultait les pages intranet le week-end). A noter que nous n'utilisions pas Hibernate, mais les résultats
étaient tout aussi obscurs :)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Apr 09, 2009 9:25 am 
Newbie

Joined: Thu Apr 09, 2009 9:19 am
Posts: 1
Ajouter cette ligne dans le fichier hibernate.cfg.xml

Si vous utilisez oracle comme BDD

<property name="c3p0.validationQuery">select 1 from dual;</property>

Si vous utilisez MySQL comme BDD

<property name="c3p0.preferredTestQuery">select 1;</property>


Top
 Profile  
 
 Post subject:
PostPosted: Fri Apr 10, 2009 3:42 am 
Senior
Senior

Joined: Tue May 10, 2005 9:00 am
Posts: 125
joli déterrage de thread :)
Je crois qu'en 4 ans il a résolu son problème.


Top
 Profile  
 
 Post subject: Re: Exception d'E/S: End of TNS data channel
PostPosted: Tue Jun 02, 2009 5:08 am 
Newbie

Joined: Tue Jun 02, 2009 3:50 am
Posts: 1
Bonjour,

et est-ce que cette méthode résout le problème?

Sinon quelle est la méthode que tu a utilisé pendant ces 4 ans pour le résoudre?

Merci


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 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.