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

Spring Java Discussion :

Appel à Application Context [Data]


Sujet :

Spring Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 48
    Points : 47
    Points
    47
    Par défaut Appel à Application Context
    Bonjour,
    Je suis en train de créer des services web avec Axis sur une base de Spring/Hibernate.
    Mon probleme est qu'a chaque appel de mon service web, je me retrouve avec une nouvelle connexion à la base de donnée qui ne se ferme jamais...

    Est-ce un probleme de réglage ou bien une erreur de code?
    Voici mon beans.xml:
    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
     
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    	http://www.springframework.org/schema/beans/spring-beans.xsd
    	http://www.springframework.org/schema/tx 
    	http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    	http://www.springframework.org/schema/context 
    	http://www.springframework.org/schema/context/spring-context-2.5.xsd
    	">
     
    	<tx:annotation-driven />
     
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="driverClassName" value="org.postgresql.Driver" />
    		<property name="url"
    			value="jdbc:postgresql://monserveur/mabase" />
    		<property name="username" value="utilisateur" />
    		<property name="password" value="mdp" />
    	</bean>
     
    	<bean id="sessionFactory"
    		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="annotatedClasses">
    			<list>
    ... liste de mes classes annotées pour hibernate
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
    				<prop key="hibernate.show_sql">false</prop>
    				<prop key="hibernate.hbm2ddl.auto">update</prop>
    				<prop key="hibernate.connection.pool_size">5</prop>
    			</props>
    		</property>
    	</bean>
     
    	<bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
    <context:component-scan base-package="org.toto"/>
     
    </beans>
    J'ai donc paramétré un pool de connexions de 5 si j'ai bien compris, cependant je les dépasses largement dans le cas suivant:
    Si j'appelle mon application contexte ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Utility {
    	public static synchronized ApplicationContext getAContext() {
    		return new ClassPathXmlApplicationContext("beans.xml");
    	}
    }
    En revanche je ne prend qu'une unique connexion si j'appelle mon application context ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Utility {
    private static ApplicationContext ac=null;
    	public static synchronized ApplicationContext getAContext() {
    		if(ac==null){ac= new ClassPathXmlApplicationContext("beans.xml");}
    		return ac;
    	}
    }
    Ma question: mon parametrage de beans.xml est-il bon? Faut-il appeler le application context de maniere unique ou à chaque appel d'un service web, faut il en faire un new?

    Bien Cordialement

    Kaoualeo

  2. #2
    Membre éprouvé

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Points : 1 230
    Points
    1 230
    Par défaut
    Tu peux déclarer un bean dans ton ApplicationContext global dont l'implémentation aura en charge la création du contexte de services WEB... par exemple le bean où tu déclares tes @WebService ! Comme celà tu seras sûr qu'il sera chargé qu'un seule fois

    N'oublies pas de faire

    ctx.setClassLoader
    ctx.refresh

    lorsque tu crées ton contexte !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    Super merci!
    J'ai aussi modifié mon réglage de dataSource en y mettant des limites de pool.

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

Discussions similaires

  1. JBOSS : chargement application context
    Par lherderien dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 10/12/2009, 09h41
  2. Application Context .xml
    Par top_eagle dans le forum Spring Web
    Réponses: 2
    Dernier message: 11/11/2009, 11h27
  3. [Integration] chargement de l'application context par JUnit
    Par *alexandre* dans le forum Spring
    Réponses: 2
    Dernier message: 06/05/2009, 08h57
  4. Appel application externe en utilisant !
    Par Nalido dans le forum MATLAB
    Réponses: 11
    Dernier message: 19/03/2009, 15h51
  5. Appel application externe
    Par gerald2545 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/01/2005, 18h54

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