IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JOnAS Java Discussion :

Probleme JONAS/Jrockit 1.5


Sujet :

JOnAS Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut Probleme JONAS/Jrockit 1.5
    Bonjour,

    J'ai un petit soucis avec Jonas sur lequel j'ai déployé un webservice.
    Deux à trois fois par jour, le webservice ne répond plus sans raison (notament impossible d'acceder au pool de connexion).
    Par contre, dans IE lorsque je tape l'url de service, il "a l'air" disponible.

    Il faut que je le redeploie et tout refonctionne.

    On m'a dit que cela venait d'une incompatibilité entre Jonas et la JRockit.
    En effet je n'ai jamais ce problème lorsque je travaillais en local avec Jonas et la JRE 1.5.

    Mon serveur :
    - Linux
    - Jonas v484
    - JRockit : java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
    BEA JRockit(R) (build R26.4.0-63-63688-1.5.0_06-20060626-2259-linux-ia32, )

    Après plus investigation, le problème viendrait du pool de connexion à la base de données.

    J'utilise le pool de connexion de Jonas.

    Le service répond bien, mais j'ai une SQLException: "Connexion interrompue" Sad

    Quelqu'un pourrait m'eclairer?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Par défaut
    Etrange erreur ...
    A priori, le JDK n'a rien a voir dans la gestion des pools.

    Ce serait bien d'avoir le stack trace complet, ainsi que la configuration de ton datasource.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut
    Voici mon fichier Datasource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    jdbc.maxconpool=5
    jdbc.samplingperiod=30
    jdbc.connmaxage=1440
    jdbc.maxwaittime=5
    datasource.url=jdbc\:oracle\:thin\:@****************\:********
    jdbc.pstmtmax=120
    datasource.mapper=rdb.oracle
    jdbc.minconpool=2
    jdbc.connteststmt=select * from dual
    datasource.username=*********
    datasource.name=DataSource
    datasource.classname=oracle.jdbc.driver.OracleDriver
    jdbc.maxwaiters=100
    datasource.password=********
    jdbc.connchecklevel=2
    jdbc.maxopentime=60
    La seule erreur que j'ai au niveau de mes logs est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: Connexion interrompue

  4. #4
    Membre chevronné Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Par défaut
    Salut nanu

    Y pas de stack trace en dessous de cette ligne dans les logs ?
    Parce que la c'est pas evident de voir d'ou vient ce soucis...

    Moi, je tenterais de jouer avec les parametres conmaxage et conchecklevel, pour essayer de garder la connection ouverte le plus longtemps possible.

    http://jonas.objectweb.org/current/d...ml#config.jdbc

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut
    En demandant à d'autres personnes, dans mon entourage, il me semble que la manière dont je gère mes connexions ne soit pas tip-top.

    Voici le code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    	public static DataBaseAccessor getInstance() {
    		if (dbAccessor == null) {
    			dbAccessor = new DataBaseAccessor();
    			dbAccessor.openConnection();
    		}
     
    		return dbAccessor;
    	}
     
    	/**
             * Ouvre une connection à la base de données à partir de la datasource
             * déclarée dans JOnAS
             * 
             */
    	private void openConnection() {
    		try {
    			ctx = new InitialContext();
    			ds = (DataSource) ctx.lookup(DATA_SOURCE);
    			connection = ds.getConnection();
     
    			logger.log(Level.INFO, "Database connexion established !");
    		} catch (NamingException e) {
    			logger.log(Level.ERROR, e);
    			dbAccessor = null;
    		} catch (SQLException e) {
    			logger.log(Level.ERROR, e);
    			dbAccessor = null;
    		}
    		return;
    	}
     
    	/**
             * Execute la requête passée en paramètre
             * 
             * @param requete
             * @return Renvoie TRUE si aucun problème n'est survenu, FALSE sinon
             */
    	private boolean execute(String requete) {
    		DataBaseAccessor.getInstance();
    		try {
    			statement = (Statement) connection.createStatement();
     
    			logger.log(Level.INFO, "> Executing request :" + requete);
     
    			statement.execute(requete);
    			connection.commit();
     
    			return Boolean.TRUE;
    		} catch (SQLException e) {
    			logger.log(Level.ERROR, e);
    			return Boolean.FALSE;
    		} finally {
    			try {
    				statement.close();
    				connection.close();
    			} catch (SQLException e) {
    				logger.log(Level.ERROR, e);
    				return Boolean.FALSE;
    			}
    		}
    	}
     
    	@SuppressWarnings("finally")
    	private ResultSet executeQuery(String requete) {
     
    		DataBaseAccessor.getInstance();
    		ResultSet resultSet = null;
    		try {
    			statement = (Statement) connection.createStatement();
    			logger.log(Level.INFO, "> Executing request :" + requete);
    			resultSet = statement.executeQuery(requete);
     
    			connection.close();
     
    		} catch (SQLException e) {
    			logger.log(Level.ERROR, e);
    		} finally {
    			return resultSet;
    		}
    	}
    Pouvez-vous me dire si qqchose cloche ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Par défaut
    A première vue, il ne faut pas ouvrir la connection avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connection = ds.getConnection();
    à la création de ton instance (openConnection) qui est faite une fois vue qu'elle a l'air d'être un singleton, mais à chaque appel de requete (execute ou executeQuery)
    Normalement on doit toujours faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    connection = ds.getConnection();
    try {
     // Le code pour faire ta requête.
    } finally {
      connection.close();
    }
    Ainsi, si le serveur a perdu la connection avec la base (timeOut, coupure réseau ou autre), cela va la recréer automatiquement pour toi.

    En espérant t'avoir aidé, bon courage.

Discussions similaires

  1. Probleme JOnAS 492 et ftp
    Par loop4 dans le forum Linux
    Réponses: 0
    Dernier message: 05/08/2009, 15h37
  2. probleme jonas avec MyEclipse
    Par oxbow28 dans le forum JOnAS
    Réponses: 1
    Dernier message: 13/09/2006, 17h36
  3. [JOnAS-Tomcat][JAAS]Probleme de securisation de contexte
    Par SEMPERE Benjamin dans le forum JOnAS
    Réponses: 3
    Dernier message: 24/06/2005, 13h49
  4. [jonAs]problems avec eclipse-jonas
    Par moeeez dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 07/04/2005, 16h02
  5. [Jonas]Probleme Jonas et Eclipse
    Par asteck dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 16/12/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo