Matt, Please find attached the Manager test class with the application context configuration file.
Jonathan 2008/8/12 Matt Raible <[EMAIL PROTECTED]> > > > On Mon, Aug 11, 2008 at 11:02 AM, Jonathan Dray <[EMAIL PROTECTED]>wrote: > >> Matt, >> >> I have successfully tested my actionDao with an appfuse test case : >> BaseDaoTestCase. >> The problem is that now I want to test my manager which doesn't inherit an >> Appfuse class. >> I tried to test it in an AbstractTransactionalSpringContextTest class. >> >> My manager is no definded as a Spring Bean, thus I need to provide to my >> manager 2 dao instances manually : >> - an actionDao >> - a processDao >> >> These two Daos are defined as beans in my applicationContext and both >> inherit a GenericDao appfuse dao class . >> >> To get these two beans in my manager's test I tried 2 different ways : >> - use 2 private variables actionDao and processDao and use an @Autowired >> annotation and added the necessary configuration to spring to use >> annotations. >> - use 2 private variables actionDao and processDao and implement setters >> these variables. >> >> Both failed with sessionFactory related problem. >> I'm quite new to Hibernate, Spring and Appfuse and may have missed >> something important. >> >> Thanks for your patience. >> Jonathan >> > > Can you post your test class? It's likely you're not loading the Spring > context files needed to initialize Hibernate. > > Matt > > >> >> >> >> 2008/8/11 Matt Raible <[EMAIL PROTECTED]> >> >> It looks like your DAO may be the problem. Have you successfully written a >>> test for it? You should make sure your ActionDaoHibernate extends >>> HibernateTemplate or one of the AppFuse base classes. >>> >>> Matt >>> >>> >>> On Mon, Aug 11, 2008 at 9:14 AM, Jonathan Dray <[EMAIL PROTECTED]>wrote: >>> >>>> Hi Matt, >>>> >>>> I've tested AbstractTransactionalSpringContextTests and got some errors >>>> while Spring tries to load my daos : >>>> >>>> Error creating bean with name 'actionDao' defined in class path resource >>>> [ApplicationContext-resources.xml]: Cannot resolve reference to bean >>>> 'sessionFactory' while setting bean property 'sessionFactory'; nested >>>> exception is >>>> org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean >>>> named 'sessionFactory' is defined >>>> >>>> >>>> Do I have to provide all the informations as if I was configuring >>>> hibernate with Spring (without appfuse) ? >>>> - Defining a session factory that uses my datasource? >>>> - Handling transactions with AOP ? >>>> >>>> If it is the case : >>>> Is there an appfuse base manager class that my manager should inherit >>>> and that will handle all this ? >>>> >>>> Did I miss something ? >>>> >>>> Thanks for your help. >>>> >>>> Regards, >>>> Jonathan Dray >>>> >>>> >>>> >>>> 2008/8/8 Matt Raible <[EMAIL PROTECTED]> >>>> >>>>> Running your DAOs outside of a transaction is what's causing your lazy >>>>> exceptions. By extending the Spring classes, your test methods will be >>>>> wrapped in transactions. As for your Managers when running in Tomcat, >>>>> if they exist under the "service" package (at any level) and they end >>>>> in "Manager", their methods should be wrapped in transactions too. >>>>> >>>>> Matt >>>>> >>>>> On Fri, Aug 8, 2008 at 1:20 AM, Jonathan Dray <[EMAIL PROTECTED]> >>>>> wrote: >>>>> > Hi Matt, >>>>> > >>>>> > Ok, I will try to extend the spring test class you suggested. >>>>> > But what about in my application ? >>>>> > >>>>> > As my manager doesn't extend an Appfuse manager class I'll probably >>>>> have >>>>> > some errors . >>>>> > Do I have to define additional configuration options (transactions, >>>>> lazy >>>>> > loading) in spring or hibernate configuration files ? >>>>> > If it is the case do you some examples on how to do this please ? >>>>> > >>>>> > Thank you. >>>>> > Best Regards, >>>>> > >>>>> > Jonathan Dray >>>>> > >>>>> > >>>>> > 2008/8/8 Matt Raible <[EMAIL PROTECTED]> >>>>> >> >>>>> >> You should change your test class to extend Spring's >>>>> >> AbstractTransactionalDataSourceSpringContextTests (or something like >>>>> >> that). >>>>> >> >>>>> >> Matt >>>>> >> >>>>> >> On Thu, Aug 7, 2008 at 5:34 PM, Jonathan Dray < >>>>> [EMAIL PROTECTED]> >>>>> >> wrote: >>>>> >> > Hi, >>>>> >> > >>>>> >> > We are working with Appfuse and we really appreciate it. >>>>> >> > We have defined a custom manager that uses several daos. >>>>> >> > It does not extends any of appfuse manager classes. >>>>> >> > >>>>> >> > It perfectly works in a test case when the test class used extends >>>>> one >>>>> >> > of >>>>> >> > Appfuse test classes available. >>>>> >> > We followed indications found in this thread : >>>>> >> > >>>>> >> > >>>>> http://www.nabble.com/-Appfuse2.0--Best-Practise-Design-Pattern-for-Multiple-Dao-Access-from-managers-td14116309s2369.html#a14370264 >>>>> >> > >>>>> >> > But, we get some errors when we try to test the same manager with >>>>> a >>>>> >> > Junit or >>>>> >> > a Spring Test Case. >>>>> >> > The errors are about lazy loading. >>>>> >> > >>>>> >> > How should we define our custom manager so that it works without a >>>>> >> > specific >>>>> >> > appfuse context ? >>>>> >> > There must be some best practices to do this with appfuse. Could >>>>> you >>>>> >> > please >>>>> >> > give us more information on how to handle this ? >>>>> >> > >>>>> >> > Thank you. >>>>> >> > >>>>> >> > Regards, >>>>> >> > Jonathan Dray >>>>> >> > >>>>> >> >>>>> >> >>>>> --------------------------------------------------------------------- >>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> >> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >> >>>>> > >>>>> > >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>>> >>>>> >>>> >>> >> >
MonitoringManagerTest.java
Description: Binary data
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <context:annotation-config/> <bean id="actionDao" class="my.test.dao.hibernate.ActionDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="processDao" class="my.test.dao.hibernate.ProcessDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:mail.properties</value> </list> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> </beans>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
