Bonjour,

Je debute en spring et ibatis.
Mon appli web utilise Spring/Ibatis/Oracle.
Mon appli ne reconnait pas mes beans dans le fichiers de config de spring.
Je peux vous envoyer mon appli pour identifier le pb.
car je ne peux pas tout mettre dans ce post.
Enfin je crois que c'est ça, en meme temps j'en suis pas sûre:

Voici l'erreur:
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
 
SRVE0068E: Impossible d'appeler la méthode service() sur le servlet action. Exception : javax.servlet.ServletException
	at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
	at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java(Compiled Code))
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1173)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
	at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:142)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:77)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java(Compiled Code))
	at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java(Compiled Code))
	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java(Compiled Code))
	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java(Compiled Code))
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java(Compiled Code))
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java(Compiled Code))
	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
---- Begin backtrace for Nested Throwables

La classe Action.java qui appelle la classe service.java qui appelle la classe dao.java.
Je vous montre le tout.


1- la classe Action.java:

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
package connexion;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import javax.sql.DataSource;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
 
import common.exception.ServiceException;
import common.securite.Utilisateur;
import common.session.Session;
import common.struts.AbstractAction;
import common.struts.AbstractForm;
import connexion.Service;
 
 
public class Action extends AbstractAction {
 
	private static String CONNEXION = "connexion";
	public static final String SUCCES = "succes";
	private static String FAILURE = "failure";
 
	private static final String SUCCES_MSG_KEY = "connexion.success";
	/*** Service. */
	private Service mService;
 
	public void setService(final Service pService) {
		mService = pService;
	}
 
 
	public ActionForward afficher(ActionMapping mapping,
								  ActionForm form,
								  HttpServletRequest request,
								  HttpServletResponse reponse) throws Exception {
 
		System.out.println("METHODE AFFICHER");	
 
		return mapping.getInputForward();	
	}
 
	public ActionForward save(ActionMapping mapping,
			  ActionForm form,
			  HttpServletRequest request,
			  HttpServletResponse response) throws Exception {
 
		final Form formulaire = (Form) form;			
		final ActionErrors errors = formulaire.validate(mapping, request);
 
		if (!errors.isEmpty()) {
			//super.saveErrors(request, errors);
			super.saveMessages(request,errors);
			return mapping.getInputForward();	
		}
 
		// mettre les infos utilisateur du formulaire dans le bean Utilisateur
		final Utilisateur utilisateur = new Utilisateur();
 
		try {
			 // utilisateur
			Utilisateur utilisateurConnecte = mService.login(utilisateur);			
 
		 System.out.println("utilisateurConnecte.getNom()=" + utilisateurConnecte.getNom());
 
		    // création de la session
 	  	    // Session.newSession(request, utilisateurConnecte);
		} catch (ServiceException e) {
			super.saveServiceException(request, e);
			return mapping.getInputForward();
		}
 
		if (!errors.isEmpty()) {
			System.out.println("CONNEXION ACTION ERREUR FORMULAIRE");
			System.out.println("errors form connexion=" + errors.toString());
			super.saveMessages(request,errors);
				return null;	
			//return mapping.getInputForward();	
		}
		return mapping.findForward(SUCCES);
	}
 
	public ActionForward quitter(ActionMapping mapping,
			  ActionForm form,
			  HttpServletRequest request,
			  HttpServletResponse reponse) throws Exception {
 
			  System.out.println("METHODE QUITTER");	
			 return this.afficher(mapping, form, request, reponse);
	}
 
 
}
la classe Service.java:

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
 
package connexion;
 
import common.securite.Utilisateur;
import connexion.Dao;
 
/**
 * Service.
 * 
 */
public class Service {
 
	/**
         * Dao.
         */
	private Dao mDao;
 
	public void setDao(final Dao pDao) {
		mDao = pDao;
	}
 
	/**
         * Login.
         * 
         * @param pUtilisateur Utilisateur qui tente de se connecté
         * @return Utilisateur connecté
         */
	public Utilisateur login(final Utilisateur pUtilisateur) {
		System.out.println("METHODE SERVICE");
 
		return mDao.login(pUtilisateur);
 
	}
}
la classe Dao.java
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
 
package connexion;
 
import java.sql.ResultSet;
import common.dao.AbstractDaoSupport;
import common.securite.Utilisateur;
 
/**
 * DAO.
 * 
 */
 
public class Dao extends AbstractDaoSupport {
 
	/**
         * Id du DAO.
         */
	private static final String DAO_ID = "connexion.";
 
	/**
         * Requête "login".
         */
	private static final String LOGIN_ID = DAO_ID + "login";
 
	/**
         * Login
         *  
         * @param pUtilisateur Utilisateur
         * @return Utilisateur connecté
         */
	public Utilisateur login(final Utilisateur pUtilisateur) {	
		System.out.println("METHODE DAO");
		return (Utilisateur) super.queryForObject(LOGIN_ID, pUtilisateur);	
	}
 
 
}
la classe AbstractDaoSupport.java
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
 
 package common.dao;
 
import java.util.List;
 
import org.apache.log4j.Logger;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
 
import com.ibatis.sqlmap.client.event.RowHandler;
 
/**
 * Dao support.<br/>
 * Cet objet surcharge certaines méthode de <code>SqlMapClientTemplate</code>
 *  afin de construire un objet <code>DaoParameters</code> qui servira de
 *  paramètre dans les requêtes. 
 * 
 
 */
public abstract class AbstractDaoSupport extends SqlMapClientDaoSupport {
 
	/**
         * Log.
         */
	private static final Logger LOG = Logger.getLogger(AbstractDaoSupport.class);
 
	/**
         * Transforme l'object en paramètres.
         * 
         * @param pObject Object
         * @return Paramètres
         */
	private DaoParameters getParameters(final Object pObject) {
		DaoParameters parameters = null;
 
		if (pObject == null) {			
			parameters = new DaoParameters(null);
		} else if (pObject instanceof DaoParameters) {
				parameters = (DaoParameters) pObject;
		} else {
				parameters = new DaoParameters(pObject);
		}
 
		if (LOG.isDebugEnabled()) {
			LOG.debug(parameters);
		}
 
		return parameters;
	}
 
	/**
         * Execute une requête et retourne un objet.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Object
         */
	protected Object queryForObject(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}		
 
		return super.getSqlMapClientTemplate().queryForObject(pStateId, getParameters(pObject));
	}
 
}
mon fichier spring-config est le suivant:

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
 
<?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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
	    http://www.directwebremoting.org/schema/spring-dwr
    	http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd">
 
	<bean id="dataSource"
		class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="jdbc/dsIncident" />
		<property name="lookupOnStartup" value="true" />
		<property name="proxyInterface" value="javax.sql.DataSource" />
	</bean>
 
	<!-- SqlMapClient -->
    <bean
    	id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
			<value>classpath:com/incidents/resources/sqlmap-config.xml</value>
		</property>
		<property name="useTransactionAwareDataSource">
        	<value>true</value>
		</property>
		<property name="dataSource">
        	<ref bean="dataSource"/>
		</property>
    </bean>
 
	<!-- Gestion des exceptions -->
	<bean
		id="exceptionTranslator"
		class="common.exception.SQLExceptionTranslatorImpl"/>
 
	<!-- SqlMapClientTemplate -->
    <bean
    	id="sqlMapClientTemplate"
        class="org.springframework.orm.ibatis.SqlMapClientTemplate">
		<property name="sqlMapClient">
        	<ref bean="sqlMapClient"/>
		</property>
		<property name="exceptionTranslator">
        	<ref bean="exceptionTranslator"/>
		</property>
	</bean>
 
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
 
	<!-- Connexion -->
	<bean id="connexionDao"
		class="connexion.Dao">
		<property name="sqlMapClientTemplate">
			<ref bean="sqlMapClientTemplate" />
		</property>
	</bean>
 
	<bean id="connexionService"
		class="connexion.Service">
		<property name="dao">
			<ref local="connexionDao" />
		</property>
	</bean>
 
	<bean name="/connexion" 
	    class="connexion.Action">
		<property name="service">
			<ref bean="connexionService"/>
		</property>
	</bean>
</beans>
mon fichier sqlmap-config.xml est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
 
<!DOCTYPE sqlMapConfig 
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" 
	"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
 
<sqlMapConfig>
	<settings cacheModelsEnabled="true" lazyLoadingEnabled="false"/>
	<sqlMap resource="com/incidents/resources/connexion/sqlmap.xml"/>
 
</sqlMapConfig>
mon fichier sqlmap.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
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<!DOCTYPE sqlMap 
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
	"http://ibatis.apache.org/dtd/sql-map-2.dtd">
 
<sqlMap namespace="connexion">
	<typeAlias alias="connexion" type="common.securite.Utilisateur" />
 
	<parameterMap id="connexion.login.parameter" class="common.dao.DaoParameters">
		<parameter property="object.login" jdbcType="VARCHAR"
			javaType="java.lang.String" mode="IN" />
		<parameter property="object.password" jdbcType="VARCHAR"
			javaType="java.lang.String" mode="IN" />
	</parameterMap> 
 
	<resultMap id="connexion.login.result" class="connexion">
		<result property="nom" column="NOM" />
	</resultMap>
 
	<procedure id="connexion.login"
		parameterMap="connexion.login.parameter"
		resultMap="connexion.login.result">
		{? = call afficher_users(?,?) }
	</procedure>
 
     </sqlMap>
mon fichier web.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
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
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" 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">
	<display-name>Incidents</display-name>
	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		 <init-param>
    	     <param-name>chainConfig</param-name>
        	<param-value>org/apache/struts/tiles/chain-config.xml,/WEB-INF/chain-config.xml</param-value>
	     </init-param>
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config/struts-config.xml
				,/WEB-INF/struts-config/struts-config-connexion.xml
				,/WEB-INF/struts-config/struts-config-parametrage.xml</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>2</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>2</param-value>
		</init-param>
		<init-param>
			<param-name>validate</param-name>
			<param-value>true</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>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<jsp-config>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-bean.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-logic.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-nested.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-template.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-template.tld</taglib-location>
		</taglib>
		<taglib>
			<taglib-uri>/WEB-INF/tld/struts-tiles.tld</taglib-uri>
			<taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
		</taglib>
	</jsp-config>
	<resource-ref id="ResourceRef_1248100188156">
		<description>
		</description>
		<res-ref-name>dsIncident</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
		<res-sharing-scope>Shareable</res-sharing-scope>
	</resource-ref>
 
	<listener>
    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<context-param>
    	<param-name>contextConfigLocation</param-name>
             <param-value>/WEB-INF/classes/com/incidents/resources/spring-config.xml</param-value>
	</context-param>
 
</web-app>
mon fichier struts-config.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
	<!-- Exceptions globales -->
	<global-exceptions/>
 
	<!-- Références aval globales -->
	<global-forwards/>
 
	<action-mappings>
		<action path="/treeview"
			type="fr.improve.struts.taglib.layout.treeview.TreeviewAction"
			validate="false">
		</action>
	</action-mappings>	
 
	<controller processorClass="org.apache.struts.action.RequestProcessor"/>
	<!--controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/-->
	<!--controller processorClass="fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor"/-->
 
	<!-- Ressources de message -->
	<message-resources parameter="com.incidents.resources.ApplicationResources" null="false"/>
 
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property 
			property="pathnames" 
			value="/org/apache/struts/validator/validator-rules.xml
				 ,/WEB-INF/validation/validation-connexion.xml"/>
	</plug-in>
 
	<plug-in className="org.apache.struts.tiles.TilesPlugin">
		<set-property 
			property="definitions-config" 
			value="/WEB-INF/tiles-def/tiles-config.xml
			,/WEB-INF/tiles-def/tiles-connexion.xml
			,/WEB-INF/tiles-def/tiles-parametrage.xml"/>
 
			<set-property property="moduleAware" value="true"/>	
			<set-property property="definitions-debug" value="2" />
		   <set-property property="definitions-parser-details" value="2" />
		   <set-property property="definitions-parser-validate" value="true" />
	</plug-in>
 
	<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
		<set-property 
			property="contextConfigLocation" 
			value="/WEB-INF/classes/com/incidents/resources/spring-config.xml"/>
	</plug-in>
 
</struts-config>
mon fichier struts-config-connexion.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
33
34
35
36
37
38
39
 
<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
 
<struts-config>
	<form-beans>
		<form-bean name="connexionForm" type="connexion.Form"/>
	</form-beans>
 
	<!-- Mappages d'action -->
	<action-mappings>
	   <!--action
			 input="connexion-err.jsp"
			 parameter="method"
			 name="connexionForm"
			 path="/connexion" 
			 scope="request" 
	  		 validate="false"
			 type="connexion.Action">
		    <forward name="connexion" path="/WEB-INF/tiles/connexion/connexion.jsp"/>
		    <forward name="succes" path="connexion.success"/>
        </action-->
 
	 	<action 
			path="/connexion" 
			name="connexionForm"
			className="common.struts.ActionMapping"
			validate="false"
			scope="request"
			type="connexion.Action"
			input="connexion">
 
	<forward name="succes" path="connexion.success" redirect="false"/>
		</action>   
	</action-mappings>
</struts-config>
mon fichier DAO.java qui appelle la requete

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
 
public class Dao extends AbstractDaoSupport {
 
	/**
         * Id du DAO.
         */
	private static final String DAO_ID = "connexion.";
 
	/**
         * Requête "login".
         */
	private static final String LOGIN_ID = DAO_ID + "login";
 
	/**
         * Login
         *  
         * @param pUtilisateur Utilisateur
         * @return Utilisateur connecté
         */
	public Utilisateur login(final Utilisateur pUtilisateur) {	
		System.out.println("METHODE DAO");
 
 
		Utilisateur user =  (Utilisateur) super.queryForObject(LOGIN_ID, pUtilisateur);
		System.out.println(user.getNom());
 
		return null;
 
}
(Ici la fonction retourne null volontairement car je cherche à recuperer le nom de l'utilisateur connecté pour affichage ...)

mon fichier AbstractDaoSupport.java

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
 
 package common.dao;
 
import java.util.List;
 
import org.apache.log4j.Logger;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
 
import com.ibatis.sqlmap.client.event.RowHandler;
 
/**
 * Dao support.<br/>
 * Cet objet surcharge certaines méthode de <code>SqlMapClientTemplate</code>
 *  afin de construire un objet <code>DaoParameters</code> qui servira de
 *  paramètre dans les requêtes. 
 * 
 
 */
public abstract class AbstractDaoSupport extends SqlMapClientDaoSupport {
 
	/**
         * Log.
         */
	private static final Logger LOG = Logger.getLogger(AbstractDaoSupport.class);
 
	/**
         * Transforme l'object en paramètres.
         * 
         * @param pObject Object
         * @return Paramètres
         */
	private DaoParameters getParameters(final Object pObject) {
		DaoParameters parameters = null;
 
		if (pObject == null) {			
			System.out.println("pobjet == NULL");
			parameters = new DaoParameters(null);
		} else if (pObject instanceof DaoParameters) {
			System.out.println("INSTANCE DE DAOPARAMETERS");
			parameters = (DaoParameters) pObject;
		} else {
			System.out.println("NI NULL NI INSTANCE DE DAOPARAMETERS");
			parameters = new DaoParameters(pObject);
		}
 
		if (LOG.isDebugEnabled()) {
			LOG.debug(parameters);
		}
 
		return parameters;
	}
 
	/**
         * Execute une requête et retourne un objet.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Object
         */
	protected Object queryForObject(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}		
 
		return super.getSqlMapClientTemplate().queryForObject(pStateId, getParameters(pObject));
	}
 
	/**
         * Execute une requête et retourne un objet.<br/>
         * 
         * @param pStateId Id du statement
         * @return Object
         */
	protected Object queryForObject(final String pStateId) {		
		return this.queryForObject(pStateId, null);
	}
 
	/**
         * Execute une requête et retourne une lite d'objets.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Liste
         */
	protected List queryForList(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}		
 
		return super.getSqlMapClientTemplate().queryForList(pStateId, getParameters(pObject));
	}
 
	/**
         * Execute une requête avec un RowHandler.
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @param pRowHandler Row handler
         * @return Liste
         */
	protected void queryWithRowHandler(final String pStateId, final Object pObject, final RowHandler pRowHandler) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}		
 
		super.getSqlMapClientTemplate().queryWithRowHandler(pStateId, getParameters(pObject), pRowHandler);
	}
 
	/**
         * Execute une requête et retourne une liste d'objets.<br/>
         * 
         * @param pStateId Id du statement
         * @return Liste
         */
	protected List queryForList(final String pStateId) {		
		return this.queryForList(pStateId, null);
	}
 
	/**
         * Execute une requête d'insert.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Objet
         */
	protected Object insert(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}
 
		return super.getSqlMapClientTemplate().insert(pStateId, getParameters(pObject));
	}
 
	/**
         * Execute une requête d'update.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Nombre de lignes mises à jour
         */
	protected int update(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}
 
		return super.getSqlMapClientTemplate().update(pStateId, getParameters(pObject));
	}
 
	/**
         * Execute une requête de delete.<br/>
         * 
         * @param pStateId Id du statement
         * @param pObject Paramètres de la requête
         * @return Nombre de lignes supprimées
         */
	protected int delete(final String pStateId, final Object pObject) {
		if (LOG.isDebugEnabled()) {
			LOG.debug(pStateId);
			LOG.debug(pObject);
		}
 
		return super.getSqlMapClientTemplate().delete(pStateId, getParameters(pObject));
	}
 
}
mon fonction sql oracle : Elle n'est pas des + optimisées mais elle fonctionne.
Retourne le nom de l'utilisateur. C'est un test .
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
 
create or replace
FUNCTION AFFICHER_USERS(pLogin IN VARCHAR2,pPassword IN VARCHAR2) RETURN VARCHAR2 AS
 
CURSOR c_emp IS SELECT nom, prenom FROM UTILISATEURS where prenom='toto'; 
person c_emp%ROWTYPE;
lnom utilisateurs.nom%TYPE;
BEGIN  
    OPEN c_emp;
    LOOP
         FETCH c_emp INTO person;
         EXIT WHEN c_emp%NOTFOUND;
          lnom := person.nom;
    END LOOP;
    CLOSE c_emp;
 
 
  return lnom;
 
END AFFICHER_USERS;

Si vous pouviez m'aider ce serait top car là je patauge grave.
merci d'avance,
tototata