Spring+Ibatis : Problème de chargement du contexte
Bonjour,
Je suis totalement débutante en Spring.
Je veux l'utiliser avec Ibatis, seulement quand j'essaie d'accéder aux données, j'ai l'erreur :
Code:
1 2 3 4 5
| java.lang.IllegalArgumentException: No SqlMapClient specified
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:163)
at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:367)
at com.proto.ged.access.dao.MadGroupBasketDAOImpl.insert(MadGroupBasketDAOImpl.java:42) |
Ma classe d'implémentation a la tête suivante. J'ai décomposé les lignes du insert pour savoir quelle ligne déclenche l'erreur et c'est le insert.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class MadGroupBasketDAOImpl extends SqlMapClientDaoSupport implements MadGroupBasketDAO {
/** ... */
public MadGroupBasketDAOImpl() {
super();
}
/** ... */
public void insert(MadGroupBasket record) {
SqlMapClientTemplate template = getSqlMapClientTemplate();
template.insert("MAD_GROUP_BASKET.ibatorgenerated_insert", record);
}
} |
Mon application contexte :
Code:
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
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- base de données -->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@10.226.175.175:1521:LDGLY000" />
<property name="username" value="docsadm" />
<property name="password" value="docsadm" />
</bean>
<!-- bean d'accès à madGroupBasket -->
<bean id="madGroupBasketImpl" class="com.proto.ged.access.dao.MadGroupBasketDAOImpl">
<property name="sqlMapClient">
<ref bean="mySqlMapClient"/>
</property>
</bean>
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="mySqlMapClient"/>
</property>
</bean>
<!-- SqlMap -->
<bean id="mySqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="sqlMapConfig.xml" />
<property name="dataSource" ref="myDataSource"/>
</bean>
<!-- transaction manager -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
</beans> |
Ayant essayé énormement de choses, je suis ouverte à toute suggestion.
Merci d'avance si vous avez une idée.
Problème de chargement de mon contexte
Bon, en fait, je ne chargeais pas le ApplicationContext dans mon Web.xml (je vous avais dit que je débute tout juste !!).
Mais, cela ne fonctionne pas car j'ai maintenant une erreur grave au chargement de mon Listener :(
Voici mon web-xml (j'intègre Spring dans une application existante):
Code:
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
| <?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!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>
<display-name>Ged Generique</display-name>
<description>
Ged Generique 1.0
</description>
<servlet>
<servlet-name>servlet/mad</servlet-name>
<servlet-class>com.grassavoye.mad.MadServlet</servlet-class>
<init-param>
<param-name>com.grassavoye.mad.config</param-name>
<param-value>com/grassavoye/prop/mad.prop</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>servlet/dispatcher</servlet-name>
<servlet-class>com.grassavoye.gmo.client.servlet.dispatcher.DocDispatcherSrv</servlet-class>
<init-param>
<param-name>com.grassavoye.mad.config</param-name>
<param-value>com/grassavoye/prop/mad.prop</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>servlet/admin</servlet-name>
<servlet-class>com.grassavoye.gmo.client.servlet.admin.GmoAdminSrv</servlet-class>
<init-param>
<param-name>com.grassavoye.mad.config</param-name>
<param-value>com/grassavoye/prop/mad.prop</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>servlet/madEngine</servlet-name>
<servlet-class>com.grassavoye.gmo.client.servlet.mad.MadEngineSrv</servlet-class>
<init-param>
<param-name>com.grassavoye.mad.config</param-name>
<param-value>com/grassavoye/prop/mad.prop</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>servlet/test</servlet-name>
<servlet-class>com.grassavoye.gmo.test.TestSrv</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet/mad</servlet-name>
<url-pattern>/mad</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet/dispatcher</servlet-name>
<url-pattern>/dispatch</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet/admin</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet/madEngine</servlet-name>
<url-pattern>/madEngine</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet/test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<!-- le chargeur du contexte spring de l'application -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
</web-app> |
Voici mon applicationContexte :
Code:
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
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- base de données -->
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@10.226.175.175:1521:LDGLY000" />
<property name="username" value="docsadm" />
<property name="password" value="docsadm" />
</bean>
<!-- SqlMap -->
<bean id="mySqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="sqlMapConfig.xml" />
<property name="dataSource" ref="myDataSource"/>
</bean>
<!-- bean d'accès à madGroupBasket -->
<bean id="madGroupBasketImpl" class="com.proto.ged.access.dao.MadGroupBasketDAOImpl">
<property name="sqlMapClient">
<ref bean="mySqlMapClient"/>
</property>
</bean>
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="mySqlMapClient"/>
</property>
</bean>
<!-- transaction manager -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
</beans> |
Si je supprime tout sauf le bean myDataSource, je n'ai pas d'erreur au chargement !! Et si j'ajoute à ça uniquement le bean mySqlMapClient, ça plante.
Voici le code de mon SqlMapConfig :
Code:
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="MAD_GROUP_BASKET_SqlMap.xml" />
</sqlMapConfig> |
Si vous avez une idée, je suis toujours preneuse.
Merci d'avance