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 :

Spring + Axis


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Par défaut Spring + Axis
    Bonjour à tous, je suis en train de développer un web service basé sur Axis, dont voici la classe très basique pour l'instant :

    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
     
    public class Server {
     
    	private AppVersionDAO appVersionDAO;
     
    	public Server() {
    		super();
    	}
     
    	public void setAppVersionDAO(AppVersionDAO appVersionDAO) {
    		Server.appVersionDAO = appVersionDAO;
    	}
     
    	public boolean getVersion(){
    		return (appVersionDAO==null);
    	}	
    }
    J'aimerais injecté ma couche DAO dans cette classe grâce à Spring, j'ai donc mon fichier applicationContext.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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     
    <beans>
    	<bean name="datasource" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        	<property name="locations">
            	<value>classpath:ressources/mysql.properties</value>
            </property>
    	</bean>	
     
    	<bean id="dbConnection" class="org.springframework.jdbc.datasource.DriverManagerDataSource" singleton="true">
       		<property name="driverClassName" value="${datasource.driver}"/>
        	<property name="url" value="${datasource.url}"/>
        	<property name="username" value="${datasource.username}"/>
        	<property name="password" value="${datasource.password}"/>
    	</bean>
     
    	<!-- début du bloc des Services -->
    	<bean id="server" class="wsProjetWeb.services.Server" >
    		<property name="appVersionDAO" ref="appVersionDAO"/>
    	</bean>
    	<!-- fin du bloc des Services -->
     
    	<!-- debut du bloc des DAO -->
    	<bean id="appVersionDAO" class="wsProjetWeb.database.dao.AppVersionDAOImp" singleton="true">
    		<property name="dbConnection" ref="dbConnection"/>
    	</bean>	
    	<!-- fin du bloc des DAO -->
     
     
    </beans>
    La connexion à ma base marche bien, mon problème est que dans ma classe serveur, ma couche DAO est null lorsque mon web service est appelé, pour faire fonctionner mon appVersionDAO je doit le mettre en static, comme ceci :

    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
     
    public class Server {
     
    	private static AppVersionDAO appVersionDAO;
     
     
    	public Server() {
    		super();
    	}
     
    	public void setAppVersionDAO(AppVersionDAO appVersionDAO) {
    		Server.appVersionDAO = appVersionDAO;
    	}
     
    	public boolean getVersion(){
    		return (appVersionDAO==null);
    	}
     
     
    }
    Ma question est pourquoi ma couche DAO n'est pas injecté à chaque appel ? Est ce propre à la manière de fonctionner de Axis ?
    Avoir une DAO statique dans une classe censé être appelé mainte fois c'est grave ?

    Merci de vos réponses !

  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 !

    Ma question est pourquoi ma couche DAO n'est pas injecté à chaque appel ? Est ce propre à la manière de fonctionner de Axis ?
    Je n'ai jamais utilisé Axis en combinaison avec Spring mais cela ne me semble pas du tout logique...
    En outre, dans ton code, je vois aucun lien avec Axis, ni comment ton bean serveur est sollicité.

    Avoir une DAO statique dans une classe censé être appelé mainte fois c'est grave ?
    A priori, pas plus que si ton DAO était un champ d'instance.
    A partir du moment où ton DAO n'a pas d'état, en l'occurrence si il n'a pas de champs modifiables par ses méthodes, pas de risques de corruption de données. Maintenant, le static pour un champ service n'est pas une déclaration très standard.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    de fait l'intégration des 2 n'est pas triviale, et le truc du singleton est une manière de faire "bête et méchante mais qui marche", sinon c'est potasser et adapter à votre contexte d'utilisation :

    http://axis.apache.org/axis2/java/core/docs/spring.html

Discussions similaires

  1. Service Web, Hibernate, Spring, Axis
    Par peipsy dans le forum Services Web
    Réponses: 5
    Dernier message: 31/05/2011, 20h14
  2. Etude comparative Spring-WS VS AXIS
    Par lakerr dans le forum Services Web
    Réponses: 0
    Dernier message: 16/06/2009, 12h11
  3. Web Service,Tomcat,axis,java et spring
    Par mnoussa dans le forum Services Web
    Réponses: 0
    Dernier message: 09/02/2009, 21h23
  4. Cohabitation SPRING et AXIS
    Par Nikk0 dans le forum Services Web
    Réponses: 3
    Dernier message: 30/10/2007, 11h36
  5. [Web Services] [Axis]déployer un WS avec Spring et axis
    Par totoranky dans le forum Spring
    Réponses: 4
    Dernier message: 29/05/2007, 14h40

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