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 + struts pb accès à l'action


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Par défaut Spring + struts pb accès à l'action
    Bonjour à tous,

    Je mets en place un nouveau projet utilisant struts / spring / hibernate.
    J'ai un soucis lorsque j'accède à ma classe Action, le système me dit que ma classe Action n'est pas du bon type...

    La méthode de couplage retenu entre struts et spring est la "délégation d'action".

    la trace obtenue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/intranet].[action] - "Servlet.service()" pour la servlet action a généré une exception
    org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named '/rechercheUserAction' must be of type [org.apache.struts.action.Action], but was actually of type [$Proxy6]	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:313)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:165)
    	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:646)
    	at org.springframework.web.struts.DelegatingActionProxy.getDelegateAction(DelegatingActionProxy.java:122)
    	at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:105)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:413)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:225)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
    mon descripteur de déploiement :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
            http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
    <display-name></display-name>
    <welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
     
    <filter>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
      <filter-class>
       org.acegisecurity.util.FilterToBeanProxy
      </filter-class>
     <init-param>
      <param-name>targetBean</param-name>
        <param-value>filterChainProxy</param-value>
     </init-param>
     </filter>
     
     <filter-mapping>
      <filter-name>Acegi Filter Chain Proxy</filter-name>
        <url-pattern>/*</url-pattern>
     </filter-mapping>
     
    <filter>
     <filter-name>Hibernate Session In View Filter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
     
    <filter-mapping>
     <filter-name>Hibernate Session In View Filter</filter-name>
     <url-pattern>*.do</url-pattern>
    </filter-mapping>
     
    <listener>
    <listener-class>
     org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>
       /WEB-INF/config/spring-securite.xml,  /WEB-INF/config/spring-jmx.xml,
      /WEB-INF/config/aop-context.xml,  /WEB-INF/config/spring-dao-datasource.xml,/WEB-INF/config/spring-dao-context.xml,
    /WEB-INF/config/spring-dao-commun.xml,/WEB-INF/config/spring-dao-annexe.xml,/WEB-INF/config/spring-services-annexe.xml,
    /WEB-INF/config/spring-services-commun.xml
    </param-value> 
    </context-param>
     
    <servlet>
     <servlet-name>action</servlet-name>
     <servlet-class>
      org.apache.struts.action.ActionServlet
     </servlet-class>
      <init-param>
       <param-name>config</param-name>
       <param-value>
          /WEB-INF/config/struts-config_commun.xml,
          /WEB-INF/config/struts-config_client.xml,
          /WEB-INF/config/struts-config_produit.xml,
          /WEB-INF/config/struts-config_annexe.xml
      </param-value>
      </init-param>
      <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
         </init-param>
         <param-name>detail</param-name>
         <param-value>2</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
    </servlet>
     
    <servlet-mapping>
    		<servlet-name>action</servlet-name>
    		<url-pattern>*.do</url-pattern>
    </servlet-mapping>
     
     
     
    	<!-- chargement des librairies de tags -->
    ...
    </jsp-config>
    </web-app>
    définition de mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action
       path="/rechercheUserAction"
       type="org.springframework.web.struts.DelegatingActionProxy"
       parameter="method" scope="request">
          <forward name="vueUser" path="/vues/commun/jsp/vueUser.jsp"/>
    </action>
    voici mon action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class RechercheUserAction extends DispatchAction{
     
    	private RechercheUserServiceInterface rechercheUserService=null;
    public void setRechercheUserService(RechercheUserServiceInterface userService) {
    		this.rechercheUserService = userService;
    	}
     
    public ActionForward cherche( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception{
    		request.setAttribute("userResult", this.getRechercheUserService().getUserByLogin("sadam") );
    		return mapping.findForward("vueUser");
    	}
    }
    ma classe service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class RechercheUserService implements RechercheUserServiceInterface{
     private UserDao userDao;
     
     public User getUserByLogin( String login ) throws Exception{
       User userTest = this.userDao.get(login);
       return userTest;
     }
     
    // pour IOC
    public void setUserDao(UserDao userDao) {
     this.userDao = userDao;
    }
    }
    les défs de bean spring :
    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
     
    <bean name="/rechercheUserAction" class="fr.proximit.igns.action.commun.RechercheUserAction">
      <property name="rechercheUserService">
        <ref local="rechercheUserService" />
      </property>
    </bean>
     
    <bean id="rechercheUserServiceTarget" class="fr.proximit.igns.service.commun.RechercheUserService">
      <property name="userDao">
        <ref bean="userDao" />
      </property>
    </bean>
     
    <bean id="rechercheUserService" parent="transactionProxy">
     <property name="target">
       <ref bean="rechercheUserServiceTarget" />
      </property>
    </bean>
     
    <bean id="transactionProxy" abstract="true"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager">
            	<ref bean="transactionManager"/>
            </property>
            <property name="transactionAttributes">
                <props>
                    <prop key="save*">PROPAGATION_REQUIRED</prop>
                    <prop key="add*">PROPAGATION_REQUIRED</prop>
                    <prop key="remove*">PROPAGATION_REQUIRED</prop>
                    <prop key="delete*">PROPAGATION_REQUIRED</prop>
                    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
                </props>
            </property>
     </bean>
     
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory">
        <ref bean="sessionFactory" />
      </property>
    </bean>
    Si vous avez une idée, elle est la bien venue....

    Merci beaucoup

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Par défaut une info en plus...
    Après un petit test, il semblerait que le problème vienne des transactions.

    J'ignore pourquoi mais Spring semble vouloir inclure l'action Struts dans une transaction car si j'enlève les définitions relatives aux transactions et développe une action toute simple; la délégation fonctionne correctement.

    C'est cool mais je vois encore moins la solution
    ...

Discussions similaires

  1. [Struts]passer d'une action à l'autre en struts
    Par clement42 dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/08/2005, 07h08
  2. [STRUTS][TILES] Problème sur actions génériques
    Par xv-mnt dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/08/2005, 10h15
  3. [Struts][Tiles] Probleme d'action mapping avec un dynaform
    Par bluefox_du_974 dans le forum Struts 1
    Réponses: 3
    Dernier message: 28/03/2005, 22h47
  4. [JSP] [STRUTS] Switch dans une action
    Par babylone7 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 28/07/2004, 15h21
  5. [Struts][JSP]Problème de Action Path
    Par luzi dans le forum Struts 1
    Réponses: 2
    Dernier message: 23/05/2004, 23h39

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