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 :

[Remoting][CXF] Injection Spring IOC


Sujet :

Spring Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut [Remoting][CXF] Injection Spring IOC
    Bonjour,

    J'ai mis en place un WS avec Spring.

    Le webService est OK mais je fais une injection de DAO dans la couche service via la ressource @Resource.

    l'annotation fonctionne bien mais ne passe pas avec CXF pour le webService (WS OK sans accès à la DAO, WS KO lors d'accès DAO (NullPointerException)

    Si vous savez comment accéder aux DAO, je suis preneur!

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Pouvons nous voir le code et le fichier xml de config ?
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <simple:server id="applicationService" serviceClass="service.ApplicationServiceInterface" address="/ApplicationService">
      	<simple:serviceBean>
      		<bean class="service.ApplicationService" />
      	</simple:serviceBean>
      </simple:server>
    pour cxf-servlet.xml

    Pour le service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @WebService(serviceName="ApplicationService")
    public class ApplicationService implements ApplicationServiceInterface {
     
    	@Resource
    	private ApplicationDao applicationDao;
     
            // méthode ...
    }
    Si j'appelle une methode qui renvoi HELLO par exemple, ça fonctionne.

    Si la méthode appelé utilise la DAO, j'ai un NullPointerException!

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Ylias Voir le message
    Bonjour,

    J'ai mis en place un WS avec Spring.

    Le webService est OK mais je fais une injection de DAO dans la couche service via la ressource @Resource.

    l'annotation fonctionne bien mais ne passe pas avec CXF pour le webService (WS OK sans accès à la DAO, WS KO lors d'accès DAO (NullPointerException)

    Si vous savez comment accéder aux DAO, je suis preneur!
    Je ne sais pas si c'est exactement le même problème que vous rencontrez, mais nous avons déjà été confrontés à une situation qui produisait le même symptôme en passant de XFire à Axis :

    pour faire court : Axis créait plusieurs instances de la classe implémentant le WS en dehors du contexte Spring-managed…
    résultat : seule la première instance avait ces champs "@Resource and C°" correctement assignés, mais ce n'est pas elle qui était appelée lors de l'exécution du WS…

    la solution fût dans ce cas de mettre le WS dans un wrapper qui lui, gérait la "bonne" instance sous forme de singleton…

    Axis pouvait créer autant d'instances de notre wrapper qu'il voulait c'était toujours l'instance Spring-managed qui effectait le "vrai" travail du WS…

    en loggant les créations des objets du WS pour pourrez diagnostiquer assez vite si votre problème est du même ordre…

  5. #5
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut
    Merci pour ta réponse.

    Tu aurais un bout de code pour ce wrapper?

    Merci d'avance!

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    Citation Envoyé par Ylias Voir le message
    Merci pour ta réponse.

    Tu aurais un bout de code pour ce wrapper?

    Merci d'avance!
    non : ça n'a pas de sens !

    le wrapper c'est juste une classe qui implémente la même interface que l'original et qui appelle le singleton (variable de classe…) qui lui est initialisé par injection via le paramétrage de l'applicationContext…

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    		">
     
    	<context:annotation-config/>
     
    	<bean id="theWrapperService" class="WrapperServiceImpl">
    		<property name="service" ref="serviceBean" />
    	</bean>
     
    	<bean id="serviceBean" class="RealServiceImpl" />
     
    </beans>

  7. #7
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut
    Hummm
    En fait toute ma config Spring est gérée via des annotations...

    Pas de beans déclarés dans le fichier xml...


    Donc je ne vois pas comment faire!

  8. #8
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut
    Si je donne le bean DAO en property à mon bean service, il me dit qu'il existe pas, logique vu qu'il n'est pas déclaré dans le XML (mais via annotations)

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Loin de moi l'idée de vouloir ramener ma science... mais, en fait, j'avais le même souci pour pointer sur un bean "spring" depuis un WebService CXF.

    Pour remettre tout le contexte : je monte un WebService CXF+Spring+hibernate dans un jonas.

    hum...bon, pour moi, c'est pas loin d'etre du chinois mais allons-y :
    - J'ai enlevé le "@resource" au bean en question dans le WebService
    - J'ai ajouté une référence au bean Spring dans le fichier de config du web service (cxf-servlet.xml):
    <<bean class="service.ApplicationService">
    <property name="applicationDao">
    <ref bean="applicationDao" />
    </property>
    </bean>

    Et ca fonctionne...j'accède bien au bean sans l'avoir instancié dans mon WebService...et à tous les sous-beans (service et dao)....

    De là a vous avoir aidé...les pros me le diront...J'ai un doute sur l'aspect "annotation".

    Bonne année quand même,

    Yust...

Discussions similaires

  1. [GWT+SPRING] Injection spring dans remote service
    Par Alwin dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 06/04/2009, 15h40
  2. [Tools] Comment installer spring IoC sous linux
    Par chevy dans le forum Spring
    Réponses: 4
    Dernier message: 23/05/2008, 23h55
  3. [Data] Spring IOC + hibernate
    Par 60sman dans le forum Spring
    Réponses: 1
    Dernier message: 01/04/2007, 11h38
  4. [platform] intégration de spring IoC
    Par n!co dans le forum NetBeans
    Réponses: 1
    Dernier message: 04/09/2006, 10h32

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