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 :

Problème de configuration quartz avec un placeHolder Spring


Sujet :

Spring Java

  1. #1
    Membre éclairé Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par défaut Problème de configuration quartz avec un placeHolder Spring
    Bonjour,
    Mon application utilise Spring et quartz, je veux donc (via le placeholder) externaliser mes variables quartz.

    Concrètement j'ai ceci : (d'après une doc et des recherches ) :
    Dans mon component-context.cml
    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
    <!-- Configuration du PlaceHolder pour l'accès aux variables issues du fichier fichier-config.properties. -->
    	<bean id="propertyConfigurer"
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="location" value="classpath:fichier-config.properties" />
    	</bean>
     
     
    	<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="jobFactory" ref="springBeanJobFactory" />
    		<property name="autoStartup" value="true" />
    		<property name="applicationContextSchedulerContextKey" value="applicationContext" />
    		<property name="configLocation">
    			<value>classpath:quartz.properties</value>
    		</property>
    	</bean>
    Et dans mon quartz.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Configuration quartz à l'aide du PlaceHolder Spring
    org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount=${com_plan_taille_pool_thread}
    org.quartz.threadPool.threadPriority=${org.quartz.threadPool.threadPriority}
     
    et dans mon fichier-config.properties : 
    #Variables quartz
    #Taille du pool de thread. 
    com_plan_taille_pool_thread=25
    #Priorité des threads. 
    org.quartz.threadPool.threadPriority=5
    Le problème c'est qu'il ne vas pas chercher mes valeurs, il prend donc les valeurs directs (${..}), par conséquent il me lance l'exception :
    org.quartz.SchedulerConfigException: Could not parse property 'threadCount' into correct data type: java.lang.NumberFormatException: '${com_plan_taille_pool_thread}'
    Si je passe des valeurs numériques directement, cela fonctionne..

    Quelqu'un peut-il m'aider SVP ?

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Salut,

    Tu ne références qu'un des fichiers properties dans le bean propertyConfigurer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="location" value="classpath:fichier-config.properties" />
    Pas testé mais essaie en référençant les deux :
    <property name="locations">
    <list>
    <value>classpath:fichier-config.properties</value>
    <value>classpath:quartz.properties</value>
    </list>
    </property>

    Il y a quelque chose que je ne comprends pas.
    Conceptuellement, les propriétés org.quartz.threadPool.threadCount
    org.quartz.threadPool.threadPriority sont liées au quartz. Elles ont donc leur place dans le fichier quartz.properties.
    Pourtant, tu souhaite les mettre dans le fichier-config.properties et les faire référencer par quartz.properties. Pourquoi ?

    Edit : J'ai eu une idée juste après avoir envoyé le mess initial

  3. #3
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Ici le soucis c'est que dans cette configuration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jobFactory" ref="springBeanJobFactory" />
    <property name="autoStartup" value="true" />
    <property name="applicationContextSchedulerContextKey" value="applicationContext" />
    <property name="configLocation">
    <value>classpath:quartz.properties</value>
    </property>
    </bean>
    En gros, tu dis à Quarz ou se trouve un fichier de configuration. Dans ce cas, c'est un fichier properties, mais cela aurait très bien pu être un fichier xml, ou une image .. tu l'injecte pas le contenu mais un pointeur vers une ressource. C'est Quartz qui va le lire.

    Donc le propertyplaceholder n'intervient pas. Celui-ci ne remplace uniquement les ${} que dans les fichiers de contexte Spring
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  4. #4
    Membre éclairé Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par défaut
    Merci pour vos réponses,
    j'ai essaye la première solution proposée mais cela ne fonctionne pas.
    Seul mon fichier fichier-config.properties est externalisé de l'appli, c'est pour cette raison que je souhaiterais paramètre quartz dedans.
    Hikage : serais tu en train de me dire que ce que je veux faire est impossible ? Ou faut-il que je m'y prenne autrement ?

    Merci d'avance

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Par défaut
    Merci pour vos réponses,
    j'ai essaye la première solution proposée mais cela ne fonctionne pas.
    Au moins, j'avais prévenu que j'avais pas testé

    Seul mon fichier fichier-config.properties est externalisé de l'appli, c'est pour cette raison que je souhaiterais paramètre quartz dedans.
    Je comprends mieux ton besoin. Je sais pas si la présence du fichier quartz.properties t'est indispensable.
    Si ce n'est pas le cas, il y a des alternatives pas plus compliqués.

    La classe SchedulerFactoryBean dispose d'un champ quartzProperties de type java.util.Properties.
    Valoriser les propriétés de ton quartz via la valorisation de cette propriété ne te convient pas ?
    Tu n'aurais plus besoin du fichier quartz.properties mais seulement du fichier-config.properties (évalué dans le contexte Spring), dont les propriétés te permettront de valoriser les propriétés dans ton bean scheduler.
    Et dans le cas ou la configuration du quartz est réutilisable (raisons peut-être pour laquelle tu les as externalisés dans un fichier properties), , rien ne t'empêche de factoriser ces propriétés (pas mal de solutions possibles : bean spring abstract, création d'un bean de type java.util.Properties contenant l'ensemble des properties de la configuration du quartz, etc...)

  6. #6
    Membre éclairé Avatar de fab76000
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 311
    Par défaut
    Le problème c'est que j'ai pas envie d'utiliser autre chose que mes deux fichiers de properties. On m'avait pourtant affirmer que je pouvais utiliser le placeHolder avec quartz.
    Si cela n'est pas possible, je vais devoir paramétrer quartz directement dans le fichier quartz.properties.
    Mais j'aurais voulu que l'on me dise que c'est impossible avant d'abandonner ?

    Merci pour votre aide

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Par défaut
    supprimé

Discussions similaires

  1. Configuration MySql avec Hibernate et Spring
    Par _Babar_ dans le forum Frameworks Web
    Réponses: 34
    Dernier message: 11/10/2010, 11h25
  2. Problème de configuration spring
    Par fluff dans le forum Spring
    Réponses: 4
    Dernier message: 30/06/2008, 16h27
  3. [Data] Problème de connection jdbc avec dataSource Spring
    Par laurent.c123 dans le forum Spring
    Réponses: 3
    Dernier message: 04/03/2008, 12h29
  4. [Data] Problème de lazy avec hibernate et Spring
    Par Invité dans le forum Spring
    Réponses: 3
    Dernier message: 20/02/2008, 20h03
  5. [CVS] Problème de configuration de CVS avec xinetd
    Par z.fradj dans le forum Administration système
    Réponses: 1
    Dernier message: 05/12/2007, 14h11

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