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

Java EE Discussion :

Bloquage connexion multi bases [EJB3]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Par défaut Bloquage connexion multi bases
    Bonjour

    J’ai une archi :

    Frontal Web / tomcat -> WebServices ->EJB3 -> EJB3 -> JDBC sur au choix 200 BDD.


    Depuis le frontal, on recup des listes venant d’une des 200 BDD par choix de l’utilisateur
    Mon EJB3 en charge de monter la connexion vers l’une des BDD est écrit en gros comme ca :
    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
     
    import java.sql.Connection;
    @Stateless
    public class HotelBean implements HotelLocal {
        	private Connection connection;
     
    	private Statement getStatement(HotelsSystem hotelSystem) throws BusinessException{
    Logger.getLogger(HotelBean.class.getName()).finest("connect to :" + hotelSystem.getHotelid());
     
               	 try  {
                   	 	Class.forName("com.informix.jdbc.IfxDriver");
    connection = DriverManager.getConnection("jdbc:informix….", "", "");
                    	hotelStatement = connection.createStatement();
                	}
                	catch (Exception e) {
                    	Logger.getLogger(HotelBean.class.getName()).log(Level.SEVERE, null, e);
                    	throw new BusinessException(resources.getString("BusinessException.connection.informix.echec"));
                	}
            	return hotelStatement;
     
    	public ListeObj getListe (HotelSystem hotel){
    		statement = getStatement(hotel);
                		String requete = "execute procedure ….);";           
                		resultSet = statement.executeQuery(requete);
    }
        }
    Je viens de m'apercevoir qu’en faisant un premier appel-1 depuis le Webservice à getListe sur un hotel-1, puis un appel-2 à getliste sur un hotel-2, Si la connexion sur hotel-1ne se monte pas (BDD arrêtée) et bien la connexion sur l’hotel-2 attends le retour de la première connexion.

    Ce qui fait que toutes les autres requêtes sont bloqué tant que la première connexion n’a pas rendu de retour.

    Donc si je comprends bien mon WS interroge mon EJB3 qui peut lancer plusieurs traitements à la fois, mais Les différents traitements de mon EJB utilisent le même objet « Statement » ??

    Dans mes traces je vois bien les deux appels à getStatement en parallèle, puis blocages des deux et quand le premier retourne une erreur alors le deuxième continu.

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Par défaut
    meme résultat si je ne mets plus "connection" en attribut de mon EJB

  3. #3
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Je dirai que soit:

    - tu as fixé la taille maximum du pool de cet EJB à 1.

    soit

    - ton second appel se fait sur la même instance.

    J'ajouterai que je ne vois pas la fermeture de ton rs et de ta connexion...

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Par défaut
    Merci Heimdal

    Citation Envoyé par Heimdal Voir le message
    - tu as fixé la taille maximum du pool de cet EJB à 1.
    Tu parles du Pool d'EJB ? Si oui, il faut que je trouve ou ca se configure ?
    Sauf que mon EJB repond bien, parceque je vois dans les logs qu'il passe les 2 fois dans la methode, mais qu'il bloque sur la creation de la connexion

    soit

    Citation Envoyé par Heimdal Voir le message
    - ton second appel se fait sur la même instance.
    Meme instance de quoi ?

    Citation Envoyé par Heimdal Voir le message
    J'ajouterai que je ne vois pas la fermeture de ton rs et de ta connexion...
    Dans le vrai code ils y sont

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Par défaut
    c'est sur cette ligne que ca bloque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connection = DriverManager.getConnection("jdbc:informix-sqli://machine:port/BDD:INFORMIXSERVER=server;user=user;password=pass", "", "");
    C'est le DriverManager qui ne veut pas me donner une nouvelle connection

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Par défaut
    Pour resoudre mon probleme, je passe par des datasource que je génére automatiquement grace à
    http://www.developpez.net/forums/d83...n-automatique/

    Une autre de mes questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requêtes multi-base
    Par nicolchr dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 12/11/2014, 11h50
  2. Connexion Multi-base SQL Server via ADO
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 01/03/2009, 00h29
  3. [SQL-Server] Connexion multi-base
    Par silef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/07/2006, 14h54
  4. Erreur de connexion à ma base sur serveur Debian - Apache
    Par GLDavid dans le forum Installation
    Réponses: 4
    Dernier message: 24/09/2003, 10h29
  5. Connexion à une base SQL_Serve via Internet
    Par Yoann_D dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/07/2003, 15h39

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