Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Связь spring, dwr и hibernate


Автор: Enterprise 22.8.2008, 11:35
Привет всем!
Ситуация следующая: пытаюсь связать spring, dwr и hibernate. Для этого описал создание сесионных dwr бинов spring-ом. При первом обращении к процедуре в бине из ява скрипта все проходит отлично (данные выбираются из БД), но при следующем обращении получаю java.lang.NullPointerException. Происходит это при обращении к полю, описанному так: <property name="baseDao" ref="baseDao"/>. В нем и находятся методы обращения к БД.

Эксепшен вываливается тут:
Код

public Item getItem(String id) {
        return (Item) baseDao.getItem(Long.parseLong(id));

    }


А вот тот который вызывался ранее:
Код

@SuppressWarnings("unchecked")
    public Collection<Item> getAllItems() {
        return baseDao.getAllItems();
        
    }


Нормально отработавший метод в baseDao:
Код

public Collection<Item> getAllItems() {
        return getHibernateTemplate().loadAll(Item.class);

    }

После первого обращения поле baseDao обнуляется, подозреваю что виноват dwr, а мож и мои руки smile

applicationContext.xml:
Код

<?xml version="1.0"?>
<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:aop="http://www.springframework.org/schema/aop"      
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.directwebremoting.org/schema/spring-dwr
    http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

       <bean id="dataSource"
           class="org.apache.commons.dbcp.BasicDataSource"
           destroy-method="close">
           <property name="driverClassName" value="com.mysql.jdbc.Driver" />
           <property name="url" value="jdbc:mysql://localhost:3306/test" />
           <property name="username" value="" />
           <property name="password" value="" />
        </bean>

         <bean id="sessionFactory"
           class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
           <property name="dataSource" ref="dataSource" />
             <property name="annotatedClasses">
                     <list>
                         <value>com.shop.persistence.pojo.Item</value>
                         <value>com.shop.persistence.pojo.Cart</value>
                         <value>com.shop.persistence.pojo.Bill</value>
                         <value>com.shop.persistence.pojo.Customer</value>
                         <value>com.shop.persistence.pojo.Category</value>
                     </list>
                 </property>

           <property name="hibernateProperties">
               <props>
                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                   <prop key="show_sql">true</prop>
                   <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
                   <prop key="hibernate.hbm2ddl.auto">update</prop>
               </props>
           </property>
         </bean>

        
    <bean id="catalogueBean" class="com.shop.persistence.dao.ItemDAO" scope="session">
        <dwr:remote javascript="Catalogue">
            <dwr:include method="getItem"/>
            <dwr:include method="findItems"/>
        </dwr:remote>
        <aop:scoped-proxy proxy-target-class="false" />
        <property name="baseDao" ref="baseDao"/>
    </bean>

    <bean id="cartBean" class="com.shop.persistence.dao.CartDAO" scope="session">
        <dwr:remote javascript="Cart">
            <dwr:include method="addItemToCart"/>
            <dwr:include method="addItemToCartForName"/>
            <dwr:include method="removeItemFromCart"/>
            <dwr:include method="getFormattedTotalPrice"/>
            <dwr:include method="getCart"/>
            <dwr:include method="saveCart"/>
            <dwr:include method="getInclude"/>
            <dwr:include method="getLogin"/>
        </dwr:remote>
        <aop:scoped-proxy proxy-target-class="false" />
        <property name="baseDao" ref="baseDao"/>
    </bean>
    
    <dwr:configuration>
        <dwr:convert type="bean" class="com.shop.persistence.pojo.Item" >
            <dwr:include method="id"/>
            <dwr:include method="name"/>
            <dwr:include method="description"/>
            <dwr:include method="formattedPrice"/>
        </dwr:convert>
        <dwr:convert type="bean" class="com.shop.persistence.dao.CartDAO">
            <dwr:include method="simpleContents"/>
            <dwr:include method="formattedTotalPrice"/>
        </dwr:convert>
    </dwr:configuration>


    <bean id="baseDao" class="com.shop.persistence.dao.BaseDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
          abstract="true">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributeSource">
            <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
        </property>
    </bean>

    <bean id="applicationService" parent="baseTransactionProxy">
        <property name="target">
            <list>
                <ref bean="cartBean"/>
                <ref bean="catalogueBean"/>
            </list>
        </property>
    </bean>
</beans>


Мож подскажете в каком направлении двигаться и что делаю не так.
Спасибо за помощь!

Автор: Kangaroo 26.8.2008, 12:32
Код

public Item getItem(String id) {
        return (Item) baseDao.getItem(Long.parseLong(id));
    }

Может тут id  нулевой, а не baseDao? 

Автор: v2v 26.8.2008, 13:46
а какой текст иксєпшна?

Автор: Enterprise 26.8.2008, 19:04
Сорри, с этой проблемой разобрался, там у меня в baseDao проблемы были smile дальше интересней - если быстро клацать по кнопкам в браузере (серия кликов по добавки одного товара в корзину и сразу серия по добавке другого и так несколько раз) DWR умирает
вот пример лога:
Код

2008-08-26 18:56:32,628 INFO [org.directwebremoting.impl.DefaultRemoter] - Exec: Cart.addItemToCart()
Hibernate: 
    /* load com.shop.persistence.pojo.Item */ select
        item0_.id as id0_1_,
        item0_.name as name0_1_,
        item0_.description as descript3_0_1_,
        item0_.price as price0_1_,
        item0_.category_id as category5_0_1_,
        category1_.id as id4_0_,
        category1_.name as name4_0_ 
    from
        item item0_ 
    left outer join
        category category1_ 
            on item0_.category_id=category1_.id 
    where
        item0_.id=?
2008-08-26 18:56:32,800 INFO [org.directwebremoting.impl.DefaultRemoter] - Exec: Cart.addItemToCart()
Hibernate: 
    /* load com.shop.persistence.pojo.Item */ select
        item0_.id as id0_1_,
        item0_.name as name0_1_,
        item0_.description as descript3_0_1_,
        item0_.price as price0_1_,
        item0_.category_id as category5_0_1_,
        category1_.id as id4_0_,
        category1_.name as name4_0_ 
    from
        item item0_ 
    left outer join
        category category1_ 
            on item0_.category_id=category1_.id 
    where
        item0_.id=?
2008-08-26 18:56:33,112 INFO [org.directwebremoting.impl.DefaultRemoter] - Exec: Cart.addItemToCart()
2008-08-26 18:56:33,300 INFO [org.directwebremoting.impl.DefaultRemoter] - Exec: Cart.addItemToCart()

Судя по логеру на двух последних записях до хибернейта дело уже не дошло. И вот после этого приложение перестает реагировать на пользовательские действия и просто замирает.
Когда останавливаю томката из идеи сыпятся эксепшены:
Код

cmd /c D:\Development\Servers\Web\apache-tomcat-5.5.17\bin\catalina.bat stop
Using CATALINA_BASE:   C:\Documents and Settings\dmitry\.IntelliJIdea70\system\tomcat_Unnamed_Shop352dd8f5
Using CATALINA_HOME:   D:\Development\Servers\Web\apache-tomcat-5.5.17
Using CATALINA_TMPDIR: D:\Development\Servers\Web\apache-tomcat-5.5.17\temp
Using JRE_HOME:        D:\Development\JDK\jdk1.5.0_08
26.08.2008 19:01:03 org.apache.coyote.http11.Http11BaseProtocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8081
26.08.2008 19:01:04 org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
2008-08-26 19:01:04,093 INFO [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]] - Closing Spring root WebApplicationContext
2008-08-26 19:01:04,093 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Closing org.springframework.web.context.support.XmlWebApplicationContext@b02928: display name [Root WebApplicationContext]; startup date [Tue Aug 26 18:56:05 EEST 2008]; root of context hierarchy
2008-08-26 19:01:04,093 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5f2db0: defining beans [dataSource,sessionFactory,__dwrConfiguration,__Catalogue,catalogueBean,__Cart,cartBean,dwrController,itemDao,cartDao,transactionManager,cartManagerProxy,catalogueManagerProxy]; root of factory hierarchy
2008-08-26 19:01:04,093 INFO [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean] - Closing Hibernate SessionFactory
2008-08-26 19:01:04,093 INFO [org.hibernate.impl.SessionFactoryImpl] - closing
26.08.2008 19:01:04 org.apache.catalina.core.StandardWrapper unload
INFO: Waiting for 2 instance(s) to be deallocated
Hibernate: 
    /* load com.shop.persistence.pojo.Item */ select
        item0_.id as id0_1_,
        item0_.name as name0_1_,
        item0_.description as descript3_0_1_,
        item0_.price as price0_1_,
        item0_.category_id as category5_0_1_,
        category1_.id as id4_0_,
        category1_.name as name4_0_ 
    from
        item item0_ 
    left outer join
        category category1_ 
            on item0_.category_id=category1_.id 
    where
        item0_.id=?
2008-08-26 19:01:04,109 WARN [org.directwebremoting.servlet.ExceptionHandler] - Unhandled Exception
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:121)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:733)
    at org.directwebremoting.spring.SpringContainer.getBean(SpringContainer.java:85)
    at org.directwebremoting.impl.DefaultServerContext.getScriptSessionManager(DefaultServerContext.java:104)
    at org.directwebremoting.impl.DefaultWebContext.getScriptSession(DefaultWebContext.java:81)
    at org.directwebremoting.dwrp.BaseCallMarshaller.marshallOutbound(BaseCallMarshaller.java:305)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:53)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.spring.DwrSpringServlet.doPost(DwrSpringServlet.java:158)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
2008-08-26 19:01:04,109 WARN [org.directwebremoting.impl.DefaultRemoter] - Method execution failed: 
java.lang.NullPointerException
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:788)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1560)
    at org.hibernate.loader.Loader.doQuery(Loader.java:661)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:1784)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2977)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:393)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:374)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:137)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:96)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
    at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:836)
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:66)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)
    at com.shop.persistence.pojo.Item$$EnhancerByCGLIB$$f51a4787.getPrice(<generated>)
    at com.shop.service.impl.CartServiceImpl.addItemToCart(CartServiceImpl.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
    at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
    at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.spring.DwrSpringServlet.doPost(DwrSpringServlet.java:158)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
2008-08-26 19:01:04,124 WARN [org.directwebremoting.servlet.ExceptionHandler] - Unhandled Exception
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:121)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:733)
    at org.directwebremoting.spring.SpringContainer.getBean(SpringContainer.java:85)
    at org.directwebremoting.impl.DefaultServerContext.getScriptSessionManager(DefaultServerContext.java:104)
    at org.directwebremoting.impl.DefaultWebContext.getScriptSession(DefaultWebContext.java:81)
    at org.directwebremoting.dwrp.BaseCallMarshaller.marshallOutbound(BaseCallMarshaller.java:305)
    at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:53)
    at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
    at org.directwebremoting.spring.DwrSpringServlet.doPost(DwrSpringServlet.java:158)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
26.08.2008 19:01:04 org.apache.coyote.http11.Http11BaseProtocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8081
Disconnected from server



Самое интересное что есть лог от хиберенейта, который судя по всему, пытался выполнить запрошенное действие на котором завис.
Извиняюсь за сумбурность smile Есть идеи?

Добавлено через 12 минут и 2 секунды
И applicationContext.xml изменился:
Код

<?xml version="1.0"?>
<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:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.directwebremoting.org/schema/spring-dwr
    http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

    <bean id="dataSource"
          class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>

    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="annotatedClasses">
            <list>
                <value>com.shop.persistence.pojo.Item</value>
                <value>com.shop.persistence.pojo.Cart</value>
                <value>com.shop.persistence.pojo.Bill</value>
                <value>com.shop.persistence.pojo.Customer</value>
                <value>com.shop.persistence.pojo.Category</value>
            </list>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="current_session_context_class">thread</prop>
                <prop key="connection.pool_size">5</prop>
            </props>
        </property>
    </bean>


    <bean id="catalogueBean" class="com.shop.service.impl.ItemServiceImpl">
        <dwr:remote javascript="Catalogue">
            <dwr:include method="getItem"/>
            <dwr:include method="findItems"/>
        </dwr:remote>
        <property name="itemDao" ref="itemDao"/>
        <property name="cartDao" ref="cartDao"/>
    </bean>

    <bean id="cartBean" class="com.shop.service.impl.CartServiceImpl" scope="session">  
        <dwr:remote javascript="Cart">
            <dwr:include method="addItemToCart"/>
            <dwr:include method="addItemToCartForName"/>
            <dwr:include method="removeItemFromCart"/>
            <dwr:include method="getFormattedTotalPrice"/>
            <dwr:include method="getCart"/>
            <dwr:include method="saveCart"/>
            <dwr:include method="getInclude"/>
            <dwr:include method="getLogin"/>
        </dwr:remote>
        <aop:scoped-proxy proxy-target-class="false" />
        <property name="itemDao" ref="itemDao"/>
        <property name="cartDao" ref="cartDao"/>
    </bean>

    <dwr:configuration>
        <dwr:convert type="bean" class="com.shop.persistence.pojo.Item">
            <dwr:include method="id"/>
            <dwr:include method="name"/>
            <dwr:include method="description"/>
            <dwr:include method="formattedPrice"/>
        </dwr:convert>
        <dwr:convert type="bean" class="com.shop.service.impl.CartServiceImpl">
            <dwr:include method="simpleContents"/>
            <dwr:include method="formattedTotalPrice"/>
        </dwr:convert>
    </dwr:configuration>

    <dwr:controller id="dwrController" debug="true" />

    <bean id="itemDao" class="com.shop.persistence.dao.ItemDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="cartDao" class="com.shop.persistence.dao.CartDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="cartManagerProxy"
          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="transactionManager"/>
        <property name="target" ref="cartBean"/>
        <!--<property name="proxyTargetClass" value="true"/>-->
        <property name="transactionAttributeSource">
            <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
        </property>
        
    </bean>

    <bean id="catalogueManagerProxy"
          class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="transactionManager"/>
        <property name="target" ref="catalogueBean"/>
        <property name="proxyTargetClass" value="true"/>
        <property name="transactionAttributeSource">
            <bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
        </property>
        
    </bean>
</beans>


Есть идеи?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)