Partage
  • Partager sur Facebook
  • Partager sur Twitter

[DWR]Besoin d'aide pour configurer DWR dans spring+hibernate

Sujet résolu
    4 mai 2010 à 9:41:15

    Bonjour,
    Apres avoir assimile les framework Spring et Hibernate, je me suis lance a l'attaque de DWR, un framework pour faciliter l'implementation de JS et surtout AJAX dans le projet. DWR permet concretement de manipuler les classes java (beans) en utilisant le JS. Pour ce faire, DWR cree automatiquement des classe JS correspondant aux classes java que l'on souhaite manipuler dans nos jsp.
    Ca promet d'etre interessant mais je me heurte a un probleme de configuration de DWR. En fait la classe que je souhaite manipuler n'apparait pas lorsque je fait http://local.../projet/dwr/ .

    Voici mon fichier dwr.xml :
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr> 
    	<allow>
    		<!-- CREATORS -->
    		<create creator="new" scope="script" javascript="GestionProfesseurDWR">
    			<param name="class" value="metier.GestionProfesseurDWR" />
    		</create>
    		
    	</allow>
    </dwr>
    

    Mon fichier context.xml :
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    			 xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
    			 xmlns:util="http://www.springframework.org/schema/util"
    			 xmlns:tx="http://www.springframework.org/schema/tx"
    			 xmlns:aop="http://www.springframework.org/schema/aop"
    			 xmlns:lang="http://www.springframework.org/schema/lang"
    			 xsi:schemaLocation="http://www.springframework.org/schema/beans 
    			 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    			 http://www.springframework.org/schema/util 
    			 http://www.springframework.org/schema/util/spring-util-2.0.xsd
    			 http://www.springframework.org/schema/tx 
    			 http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    			 http://www.springframework.org/schema/aop 
    			 http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    			 http://www.springframework.org/schema/lang 
    			 http://www.springframework.org/schema/lang/spring-lang-2.0.xsd
    			 http://www.directwebremoting.org/schema/spring-dwr
        http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd">
    			 
    	<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
    			<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    			<property name="url" value="jdbc:mysql://localhost/ecole"/>
    			<property name="username" value="root"/>
    			<property name="password" value=""/>
    	</bean>
    	<bean id="mySessionFactory" 
    	class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    			<property name="dataSource" ref="myDataSource"/>
    			
    			<property name="configLocation">
    			<value>hbm/hibernate.cfg.xml</value></property>
    		<property	name="configurationClass">
    			<value>org.hibernate.cfg.AnnotationConfiguration</value>
    		</property>
    			<property name="hibernateProperties">
    				<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    			</props>
    			</property>
    	</bean>
    	
    	<bean id="hibernateTemplate" 
    	class="org.springframework.orm.hibernate3.HibernateTemplate">
    			<property name="sessionFactory">
    					<ref bean="mySessionFactory"/>
    			</property>
    	</bean>
    	
    	<bean id="ClasseDAO" class="dao.ClasseDAO">
    			<property name="hibernateTemplate">
    					<ref bean="hibernateTemplate"/>		
    			</property>
    	</bean>
    	
    	<bean id="ProfesseurDAO" class="dao.ProfesseurDAO">
    			<property name="hibernateTemplate">
    					<ref bean="hibernateTemplate"/>		
    			</property>
    	</bean>
    	
    	<bean id="J_mat_profDAO" class="dao.J_mat_profDAO">
    			<property name="hibernateTemplate">
    					<ref bean="hibernateTemplate"/>		
    			</property>
    	</bean>
    	
    	
    	<bean id="gestionProfesseurDWR" class="domain.metier.GestionProfesseurDWR">
    		<dwr:remote javascript="GestionProfesseurDWR">
    			<dwr:include method="addProfesseur"/>
    			<dwr:include method="affiche"/>
    		</dwr:remote>
    	</bean>
    </beans>
    


    Mon fichier web.xml :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    	  	<param-value>/WEB-INF/context.xml</param-value>
    	</context-param>
    
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	 
    	<servlet id="dispatcher"> 
    	  <servlet-name>dispatcher</servlet-name> 
    	  <display-name>dispatcher</display-name> 
    	  <description>Dispatcher Servlet</description> 
    	  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    	</servlet> 
    	 
    	<servlet>
    		<servlet-name>DWR invoker servlet</servlet-name>
    		<display-name>DWR Servlet</display-name>
    		<description>Servlet DWR</description>
    		<servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
    		<init-param>
    	        <param-name>classes</param-name>
    			<param-value>
    		      	domain.metier.GestionProfesseurDWR
    		   	</param-value>
        	</init-param>
    		<init-param>
    			<param-name>debug</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</servlet>
    	
    	<servlet>
    		<servlet-name>listProf</servlet-name>
    		<servlet-class>domain.ListProf</servlet-class>
    	</servlet>
    	
    	<servlet>
    		<servlet-name>addProf</servlet-name>
    		<servlet-class>domain.ListProf</servlet-class>
    	</servlet>
    	
    	<servlet>
    		<servlet-name>dellProf</servlet-name>
    		<servlet-class>domain.ListProf</servlet-class>
    	</servlet>
    	
    	<servlet>
    		<servlet-name>editProf</servlet-name>
    		<servlet-class>domain.ListProf</servlet-class>
    	</servlet>
    	
    	<servlet>
    		<servlet-name>matProf</servlet-name>
    		<servlet-class>domain.MatProf</servlet-class>
    	</servlet>
    
    
    	<servlet-mapping> 
    	  <servlet-name>dispatcher</servlet-name> 
    	  <url-pattern>*.htm</url-pattern> 
    	</servlet-mapping> 
    	 
    	<servlet-mapping> 
    	  <servlet-name>DWR invoker servlet</servlet-name> 
    	  <url-pattern>/dwr/*</url-pattern> 
    	</servlet-mapping> 
    	
    
    	<servlet-mapping>
    		<servlet-name>listProf</servlet-name>
    		<url-pattern>/listProf</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>addProf</servlet-name>
    		<url-pattern>/addProfesseur.do</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>dellProf</servlet-name>
    		<url-pattern>/dellProf.do</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>editProf</servlet-name>
    		<url-pattern>/editProf.do</url-pattern>
    	</servlet-mapping>
    	
    	<servlet-mapping>
    		<servlet-name>matProf</servlet-name>
    		<url-pattern>/matProf</url-pattern>
    	</servlet-mapping>
    	
    	
    	<welcome-file-list>
    		<welcome-file>jsp/index.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>
    


    Et finalement mon fichier GestionProfesseurDWR.java :
    package domain.metier;
    
    import javax.servlet.http.HttpServlet;
    
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;
    import org.directwebremoting.annotations.Param;
    import org.directwebremoting.annotations.RemoteMethod;
    import org.directwebremoting.annotations.RemoteProxy;
    import org.directwebremoting.spring.SpringCreator;
    
    import dao.ProfesseurDAO;
    import domain.bean.Professeur;
    
    @RemoteProxy(creator = SpringCreator.class, 
    		 creatorParams = @Param(name = "beanName", value = "userDWR"))
    
    public class GestionProfesseurDWR extends HttpServlet {
    	
    	
    	@RemoteMethod
    	public int affiche(){
    		return 9;
    	}
    	
    	/**
    	 * Ajoute le professeur passe en parametre.
    	 *
    	 * @param pProfesseur
    	 * @return Professeur
    	 */
    	@RemoteMethod
    	public Professeur addProfesseur(String nom, String prenom) {
    		
    		WebApplicationContext factory = WebApplicationContextUtils.getRequiredWebApplicationContext(
    				this.getServletContext());
    		Professeur pProfesseur = new Professeur(null, nom, prenom);
    		
    		ProfesseurDAO profDao = (ProfesseurDAO) factory.getBean("ProfesseurDAO");
    		profDao.addProfesseur(pProfesseur);
    		System.out.println("LOAD success");
    		return pProfesseur;
    	}
    	
    	/**
    	 * Retire un professeur.
    	 * 
    	 * @param pProfesseur
    	 * @return Boolean
    	 */
    	@RemoteMethod
    	public Boolean deleteProfesseur(Professeur pProfesseur) {
    		WebApplicationContext factory = WebApplicationContextUtils.getRequiredWebApplicationContext(
    				this.getServletContext());
    		
    		ProfesseurDAO profDao = (ProfesseurDAO) factory.getBean("ProfesseurDAO");
    		
    		profDao.dellProfesseur(pProfesseur.getProf_id());
    		return true;
    	}
    }
    


    Vous le remarquerez, les code sont un peu brouillon, en effet je suis en phase d'apprentissage et de test, je passe de tuto en tuto en ajoutant des bout de code, en testant, ... Ce qui me donne ca au final.

    Si quelqu'un pouvais m'aider sur ce probleme ce serait merveilleux !

    [EDIT] j'ai apporte une petite modification et maintenant j'obtiens un erreur (on avance !). Ca me dis qu'il n'y a pas de DWR configuration in context.

    Bien amicalement, Roman.

    [EDIT] Resolu ! La solution est dans le code, j'avai mal parametre la bean gestionProfesseurDWR a la fin du fichier context.xml.
    Du coup dwr.xml ne sert plus.
    • Partager sur Facebook
    • Partager sur Twitter

    [DWR]Besoin d'aide pour configurer DWR dans spring+hibernate

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown