Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1377 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  @Autowired mal géré

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

@Autowired mal géré

n°2127462
Hurricae
Posté le 21-02-2012 à 11:04:12  profilanswer
 

Bonjour,
 
Je débute avec spring et j'ai quelques soucis lors du déploiement d'un jar sous weblogic. J'ai une classe qui @Autowired un service situé dans un package qui contient d'autre service @Autowired dont je n'ai pas besoin. Ces autres services prennent des params dont je n'ai pas besoin, du coup lors de l'injection j'ai l'erreur comme quoi ces params sont non définis.
 
Mon archi:
 
1er Jar - Classe EXTRACT.java

Code :
  1. .......
  2. import com.toto.IExtraireService;
  3. public class TOTO {
  4.     @Autowired
  5.     private IExtraireService serviceExtraire;
  6. .......
  7. }


 
2e jar - package com.toto
 
4 classe => TOTO.java -> 1 Service
TITI.java -> 1 Service avec param (@Values)
LOLO.java -> 1 Service avec param (@Values)
LULU.java -> 1 Service
 
mon conf spring pour le jar:

Code :
  1. <bean class="com.toto.EXTRACT">
  2. <property name="serviceExtraire" ref="serviceExtraire" />
  3. </bean>
  4. <bean id="serviceExtraire" class="com.toto.TOTO" />


 
Et voici ma stack trace:


2012-02-21 08:18:07;;;;ERROR;ContextLoader:220;Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'titiImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private int com.toto.impl.titiImpl.limite; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'service.consulteractesclient.limite'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at com.bouygtel.refclient.transverse.composant.spring.initialisation.RefclientContextLoaderListener.createWebApplicationContext(RefclientContextLoaderListener.java:73)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1863)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3126)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1512)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:486)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:1267)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:409)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:569)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:323)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:844)
at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1253)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:440)
at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:163)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private int com.toto.impl.titiImpl.limite; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'service.titi.limite'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)
... 51 more
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'service.titi.limite'  


 
Auriez vous une idée pour que ma classe Extract @Autowired juste ma classe TOTO (Interface) ?
 
Merci d'avance

mood
Publicité
Posté le 21-02-2012 à 11:04:12  profilanswer
 

n°2127473
brisssou
8-/
Posté le 21-02-2012 à 11:25:15  profilanswer
 

c'est ça ton problème

Citation :

Could not resolve placeholder 'service.consulteractesclient.limite'


Donc ta classe a besoin de ces paramètres, probablement utilisés quelque part dans ton xml.

 

Par contre, tu veux faire de l'autowire sur un bea que tu as déjà injecté en conf. ceinture bretelles?


Message édité par brisssou le 21-02-2012 à 11:26:26

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°2127474
Hurricae
Posté le 21-02-2012 à 11:30:08  profilanswer
 

non je n'ai pas besoin de
 Citation :
Could not resolve placeholder 'service.consulteractesclient.limite'
 
car non utilisé dans ma classe TOTO.ce params est utilisé dans LOLO qui n'est pas Autowired dans ma classe EXTRACT mais qui est quand même dans le même package de TOTO. Oula difficile a expliquer mon charabia là ^^. Tu vois ce que je veux dire ?

n°2127479
brisssou
8-/
Posté le 21-02-2012 à 11:35:02  profilanswer
 

je vois que tu déclares une classe qui utilise une property que n'est pas valuée.
 
Tu n'as pas besoin de cette classe ? il faut la supprimée, parce que manifestement, soit elle est dans un package qui est chargé à la création du contexte, soit elle est déclarée dans ta conf xml.
 
Dans les deux cas, faut virer cette classe ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°2127485
Hurricae
Posté le 21-02-2012 à 11:39:10  profilanswer
 

Non ma classe TOTO n'utilise pas cette property, mais c'est LOLO qui l'utilise. Seulement ma classe EXTRACT utilise seulement TOTO et pas LULU. Je pense que c'est à la création du contexte que le package est scanné en totalité (com.toto).

n°2127490
brisssou
8-/
Posté le 21-02-2012 à 11:50:51  profilanswer
 

ben du coup relis mon message juste au-dessus


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°2127493
Hurricae
Posté le 21-02-2012 à 11:55:24  profilanswer
 

Dans les deux cas, faut virer cette classe ?
 
==> Je ne peux pas, elle doit rester la et dans ce même package (archi oblige)

n°2127495
brisssou
8-/
Posté le 21-02-2012 à 11:58:52  profilanswer
 

elle avoir un @Controller, @Repository ou @Service.
Enlève le, elle ne sera plus analysée par spring


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°2127536
Hurricae
Posté le 21-02-2012 à 13:54:20  profilanswer
 

Je ne peux pas enlever @Controller, @Repository ou @Service sur les autres classes, elles sont utilisées par d'autre jar

n°2127549
brisssou
8-/
Posté le 21-02-2012 à 14:10:27  profilanswer
 

et ben fournit cette property 'service.consulteractesclient.limite'  avec une valeur bidon et c'est marre


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
mood
Publicité
Posté le 21-02-2012 à 14:10:27  profilanswer
 

n°2127551
Hurricae
Posté le 21-02-2012 à 14:13:26  profilanswer
 

Actuellement c'est ce que je fais mais je ne trouve pas ça propre. Je me renseigne sur @Ressource, vous connaissez peut être ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  @Autowired mal géré

 

Sujets relatifs
IE8 ne gère pas le rowspan + img src?Erreur d'exécution Microsoft VBScript: Cet objet ne gère pas cette pro
Comment Google gere-t-il l'affichage de la descriptionje voudrai creer un programme qui gère des fichiers
Mot de passe géré par une macroWamp 5 : ne gère pas les include() ?
[SPIP Agora] SSL géré ?MySQL gére t-il les contrainte d'integrité?
[WxWidgets/SDL] Comment on gere les évenements SDL ?class qui gere une arborescence?
Plus de sujets relatifs à : @Autowired mal géré


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR