java - Hibernate @Transactional Sessions -


i sorry, repeat question have been here many times. have problem transactional annotation. have such classes , interfaces dao, daoimpl , service, serviceimpl. here conf files

<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:tx="http://www.springframework.org/schema/tx" 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-3.1.xsd         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"     default-lazy-init="true">  <!-- <tx:annotation-driven transaction-manager="txmanager" /> --> <tx:annotation-driven />   <bean id="configproperties" class="com.dataart.masternoy.utils.propertiesutil">     <property name="ignoreunresolvableplaceholders" value="true" />     <property name="locations">         <list>             <value>classpath:/config.properties</value>             <value>classpath:/jdbc.properties</value>         </list>     </property> </bean>  <bean id="datasource"     class="org.springframework.jdbc.datasource.drivermanagerdatasource">     <property name="driverclassname" value="com.mysql.jdbc.driver" />     <property name="url" value="jdbc:mysql://localhost:3306/shop" />     <property name="username" value="root" />     <property name="password" value="root" /> </bean> <bean id="datasourcenew"     class="org.springframework.jdbc.datasource.drivermanagerdatasource">      <!-- <property name="driverclassname" value="org.hsqldb.jdbcdriver" /> -->     <property name="url" value="jdbc:mysql://localhost:3306/shop" />     <property name="username" value="root" />     <property name="password" value="root" />  </bean>   <bean class="org.springframework.jdbc.core.jdbctemplate" id="jdbctemplate">     <constructor-arg ref="datasource" /> </bean>  <bean id="txmanager"     class="org.springframework.jdbc.datasource.datasourcetransactionmanager">     <property name="datasource" ref="datasource" /> </bean>  <bean id="transactionmanager"     class="org.springframework.orm.hibernate3.hibernatetransactionmanager">     <property name="sessionfactory" ref="sessionfactory" /> </bean>   <bean id="sessionfactory"     class="org.springframework.orm.hibernate3.localsessionfactorybean"     lazy-init="true">     <property name="datasource" ref="datasourcenew" />      <property name="configlocation">         <value>classpath:hibernateconfig.xml</value>     </property>     <property name="configurationclass">         <value>org.hibernate.cfg.annotationconfiguration</value>     </property>       <property name="hibernateproperties">         <props>             <prop key="hibernate.connection.driver_class">org.hsqldb.jdbcdriver</prop>             <prop key="hibernate.show_sql">true</prop>             <prop key="hibernate.dialect">org.hibernate.dialect.mysqlinnodbdialect</prop>             <prop key="hibernate.connection.charset">utf-8</prop>             <prop key="current_session_context_class">thread</prop>              <prop key="format_sql">true</prop>         </props>     </property> </bean> 

when put @transactional annotation daoimpl tests work allright , maven compile application. when deploy tomcat , try use dao methods browser have stack trace.

    org.hibernate.hibernateexception: no hibernate session bound thread, , configuration not allow creation of non-transactional 1 here         org.springframework.orm.hibernate3.springsessioncontext.currentsession(springsessioncontext.java:63)         org.hibernate.impl.sessionfactoryimpl.getcurrentsession(sessionfactoryimpl.java:622)         com.dataart.masternoy.dao.imp.userdaoimpl.existuserbyloginemail(userdaoimpl.java:35)         com.dataart.masternoy.service.imp.userserviceimpl.existuserbyloginmail(userserviceimpl.java:44)         com.dataart.masternoy.controller.firstpagecontroller.isvalid(firstpagecontroller.java:46)         com.dataart.masternoy.controller.firstpagecontroller.confirmregister(firstpagecontroller.java:101)         sun.reflect.nativemethodaccessorimpl.invoke0(native method)         sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)         sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25)         java.lang.reflect.method.invoke(method.java:597)         org.springframework.web.bind.annotation.support.handlermethodinvoker.invokehandlermethod(handlermethodinvoker.java:176)         org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter.invokehandlermethod(annotationmethodhandleradapter.java:426)         org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter.handle(annotationmethodhandleradapter.java:414)         org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:790)         org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:719)         org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:644)         org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:560)         javax.servlet.http.httpservlet.service(httpservlet.java:641)         javax.servlet.http.httpservlet.service(httpservlet.java:722)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:368)         org.springframework.security.web.access.intercept.filtersecurityinterceptor.invoke(filtersecurityinterceptor.java:109)         org.springframework.security.web.access.intercept.filtersecurityinterceptor.dofilter(filtersecurityinterceptor.java:83)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.access.exceptiontranslationfilter.dofilter(exceptiontranslationfilter.java:97)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.session.sessionmanagementfilter.dofilter(sessionmanagementfilter.java:100)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.authentication.anonymousauthenticationfilter.dofilter(anonymousauthenticationfilter.java:78)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.servletapi.securitycontextholderawarerequestfilter.dofilter(securitycontextholderawarerequestfilter.java:54)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.savedrequest.requestcacheawarefilter.dofilter(requestcacheawarefilter.java:35)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.authentication.abstractauthenticationprocessingfilter.dofilter(abstractauthenticationprocessingfilter.java:187)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.authentication.logout.logoutfilter.dofilter(logoutfilter.java:105)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.context.securitycontextpersistencefilter.dofilter(securitycontextpersistencefilter.java:79)         org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:380)         org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:169)         org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:237)         org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:167)         org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:88)         org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:76)         com.opensymphony.sitemesh.webapp.sitemeshfilter.obtaincontent(sitemeshfilter.java:129)         com.opensymphony.sitemesh.webapp.sitemeshfilter.dofilter(sitemeshfilter.java:77) 

when put @transactional annotation serviceimpl not compile app because

java.lang.illegalstateexception: failed load applicationcontext     @ org.springframework.test.context.testcontext.getapplicationcontext(testcontext.java:308)     @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.injectdependencies(dependencyinjectiontestexecutionlistener.java:109)     @ org.springframework.test.context.support.dependencyinjectiontestexecutionlistener.preparetestinstance(dependencyinjectiontestexecutionlistener.java:75)     @ org.springframework.test.context.testcontextmanager.preparetestinstance(testcontextmanager.java:321)     @ org.springframework.test.context.junit4.springjunit4classrunner.createtest(springjunit4classrunner.java:220)     @ org.springframework.test.context.junit4.springjunit4classrunner$1.runreflectivecall(springjunit4classrunner.java:301)     @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:15)     @ org.springframework.test.context.junit4.springjunit4classrunner.methodblock(springjunit4classrunner.java:303)     @ org.springframework.test.context.junit4.springjunit4classrunner.runchild(springjunit4classrunner.java:240)     @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:49)     @ org.junit.runners.parentrunner$3.run(parentrunner.java:193)     @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:52)     @ org.junit.runners.parentrunner.runchildren(parentrunner.java:191)     @ org.junit.runners.parentrunner.access$000(parentrunner.java:42)     @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:184)     @ org.springframework.test.context.junit4.statements.runbeforetestclasscallbacks.evaluate(runbeforetestclasscallbacks.java:61)     @ org.springframework.test.context.junit4.statements.runaftertestclasscallbacks.evaluate(runaftertestclasscallbacks.java:70)     @ org.junit.runners.parentrunner.run(parentrunner.java:236)     @ org.springframework.test.context.junit4.springjunit4classrunner.run(springjunit4classrunner.java:180)     @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50)     @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:467)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:683)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:390)     @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:197) caused by: org.springframework.beans.factory.beancreationexception: error creating bean name 'org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping#0': initialization of bean failed; nested exception org.springframework.beans.factory.beancreationexception: error creating bean name 'firstpagecontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: com.dataart.masternoy.service.imp.userserviceimpl com.dataart.masternoy.controller.firstpagecontroller.usersereviceimpl; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.dataart.masternoy.service.imp.userserviceimpl] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true), @org.springframework.beans.factory.annotation.qualifier(value=userservice)}     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:527)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:580)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425)     @ org.springframework.test.context.support.abstractgenericcontextloader.loadcontext(abstractgenericcontextloader.java:84)     @ org.springframework.test.context.support.abstractgenericcontextloader.loadcontext(abstractgenericcontextloader.java:1)     @ org.springframework.test.context.testcontext.loadapplicationcontext(testcontext.java:280)     @ org.springframework.test.context.testcontext.getapplicationcontext(testcontext.java:304)     ... 24 more caused by: org.springframework.beans.factory.beancreationexception: error creating bean name 'firstpagecontroller': injection of autowired dependencies failed; nested exception org.springframework.beans.factory.beancreationexception: not autowire field: com.dataart.masternoy.service.imp.userserviceimpl com.dataart.masternoy.controller.firstpagecontroller.usersereviceimpl; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.dataart.masternoy.service.imp.userserviceimpl] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true), @org.springframework.beans.factory.annotation.qualifier(value=userservice)}     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:285)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1074)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:517)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.context.support.abstractapplicationcontext.getbean(abstractapplicationcontext.java:1075)     @ org.springframework.web.servlet.handler.abstracturlhandlermapping.registerhandler(abstracturlhandlermapping.java:383)     @ org.springframework.web.servlet.handler.abstracturlhandlermapping.registerhandler(abstracturlhandlermapping.java:362)     @ org.springframework.web.servlet.handler.abstractdetectingurlhandlermapping.detecthandlers(abstractdetectingurlhandlermapping.java:82)     @ org.springframework.web.servlet.handler.abstractdetectingurlhandlermapping.initapplicationcontext(abstractdetectingurlhandlermapping.java:58)     @ org.springframework.context.support.applicationobjectsupport.initapplicationcontext(applicationobjectsupport.java:119)     @ org.springframework.web.context.support.webapplicationobjectsupport.initapplicationcontext(webapplicationobjectsupport.java:72)     @ org.springframework.context.support.applicationobjectsupport.setapplicationcontext(applicationobjectsupport.java:73)     @ org.springframework.context.support.applicationcontextawareprocessor.invokeawareinterfaces(applicationcontextawareprocessor.java:106)     @ org.springframework.context.support.applicationcontextawareprocessor.postprocessbeforeinitialization(applicationcontextawareprocessor.java:85)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.applybeanpostprocessorsbeforeinitialization(abstractautowirecapablebeanfactory.java:394)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1413)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:519)     ... 36 more caused by: org.springframework.beans.factory.beancreationexception: not autowire field: com.dataart.masternoy.service.imp.userserviceimpl com.dataart.masternoy.controller.firstpagecontroller.usersereviceimpl; nested exception org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.dataart.masternoy.service.imp.userserviceimpl] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true), @org.springframework.beans.factory.annotation.qualifier(value=userservice)}     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:502)     @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:84)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor.postprocesspropertyvalues(autowiredannotationbeanpostprocessor.java:282)     ... 56 more caused by: org.springframework.beans.factory.nosuchbeandefinitionexception: no matching bean of type [com.dataart.masternoy.service.imp.userserviceimpl] found dependency: expected @ least 1 bean qualifies autowire candidate dependency. dependency annotations: {@org.springframework.beans.factory.annotation.autowired(required=true), @org.springframework.beans.factory.annotation.qualifier(value=userservice)}     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:920)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.doresolvedependency(defaultlistablebeanfactory.java:789)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.resolvedependency(defaultlistablebeanfactory.java:703)     @ org.springframework.beans.factory.annotation.autowiredannotationbeanpostprocessor$autowiredfieldelement.inject(autowiredannotationbeanpostprocessor.java:474)     ... 58 more 

my controller

@controller @requestmapping(value = "/") public class indexcontroller {     public static final logger log = logger.getlogger(indexcontroller.class);     @autowired     @qualifier(value = "userservice")     userservice userservice; 

my service

@service(value = "userservice") public class userserviceimpl implements userservice {     @autowired     @qualifier("userdao")     userdao userdao;          @transactional           public void addnewuser(user user) {         userdao.insertnewuser(user);     } 

my test

public class userdaotest extends basetest {      @autowired     @qualifier(value = "userservice")     userservice userserviceimpl;      @test     public void daotests() { 

i think reason error when @transactional on userserviceimpl class because controller referencing userserviceimpl class directly when should referencing interface (since have it). causes issue because class spring constructs proxy , not instance of userserviceimpl.

as why no session error outside unit tests guess can userdaoimpl not being constructed spring. if @ stack trace there no proxy around either userservice or userdao.

are sure constructing userdaoimpl spring? sure it's getting injected user service spring? sure have element in application context used tomcat?


Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -