Problème de context pour mes tests
Bonjour,
Je débute un peu en spring et en Hibernate. J'ai hérité d'une application qui fonctionne avec Tomcat, Spring et Hibernate 8O.
J'essaye de faire un Junit afin de tester une classe DAO.
Voici le fichier context.xml défini dans META-INF
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<Context path="/DBportailgestionprojet" docBase="DBportailgestionprojet"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/portail" auth="Container"
type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="-1" username="userPortail" password="passPortail"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/portailgestionprojet?autoReconnect=true&useEncoding=true&characterEncoding=UTF-8" />
<Loader delegate="false" />
</Context> |
Mes beans sont définis dans différents fichiers xml avec par exemple celui qui m'intéresse WEB-INF/config/commons-servlet.xml
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
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/portailgestionprojetDB" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>
com/portail/hibernate/Identification.hbm.xml
</value>
<value>
com/portail/hibernate/Affectation.hbm.xml
</value>
....
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="hibernateCurrentSession"
class="com.portail.common.dao.impl.HibernateThreadImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="projetDao"
class="com.portail.common.dao.impl.ProjetDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="hibernateUtil">
<ref local="hibernateCurrentSession" />
</property>
</bean>
<!-- maps url to a controller -->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/ConnectionUserController">
connectionUserController
</prop>
<prop key="/PageController">
pageController
</prop>
</props>
</property>
</bean>
</beans> |
Et voici ma classe de test
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
|
package com.portail.common.dao.impl;
import static org.junit.Assert.fail;
import java.util.Iterator;
import java.util.List;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import com.portail.common.dao.interf.ProjetDao;
import com.portail.persistence.Projet;
public class ProjetDaoImplTest {
private static XmlBeanFactory bf;
private static ProjetDao projetDao;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
bf = new XmlBeanFactory(new FileSystemResource("E:/work/Portail/src/main/webapp/WEB-INF/config/commons-servlet.xml"));
projetDao = (ProjetDao) bf.getBean("projetDao");
}
@Test
public void testListeProjetsCP() {
List<Projet> listeProjets = projetDao.listeProjetsCP(16);
Iterator<Projet> itProjet = listeProjets.iterator();
while (itProjet.hasNext()) {
Projet projetCourant = itProjet.next();
System.out.println("Test " + projetCourant.getNom());
}
}
} |
Quand je lance mon test j'ai l'erreur suivant
Citation:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in file [E:\work\Portail\src\main\webapp\WEB-INF\config\commons-servlet.xml]: Invocation of init method failed; nested exception is javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Merci pour votre aide.