java - OpenSessionInterceptor for Spring-Hibernate-AOP context -


i'm developing web app application spring 4, jsf 2 , hibernate 5. manage transactional operation in hibernate in web context, use opensessioninviewfilter in web.xml.

<filter>     <filter-name>opensessioninviewfilter</filter-name>     <filter-class>org.springframework.orm.hibernate5.support.opensessioninviewfilter</filter-class> </filter> <filter-mapping>     <filter-name>opensessioninviewfilter</filter-name>     <url-pattern>/*</url-pattern> </filter-mapping> 

my spring context configuration datasource is:

<bean id="datasource" class="com.p6spy.engine.spy.p6datasource">         <constructor-arg>             <bean 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>         </constructor-arg>     </bean>      <!-- hibernate 5 annotation sessionfactory bean definition -->     <bean id="sessionfactory"         class="org.springframework.orm.hibernate5.localsessionfactorybean">         <property name="datasource" ref="datasource" />              <property name="packagestoscan">             <list>                 <value>org.dummy.model</value>             </list>         </property>         <property name="hibernateproperties">             <props>                              <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>                 <prop key="hibernate.show_sql">false</prop>                 <prop key="hibernate.flushmode">commit</prop>                 <prop key="org.hibernate.flushmode">commit</prop>             </props>         </property>     </bean>      <bean id="txmanager" class="org.springframework.orm.hibernate5.hibernatetransactionmanager">         <property name="sessionfactory" ref="sessionfactory" />     </bean>      <context:annotation-config />      <context:component-scan base-package="org.dummy.persistence" />      <aop:aspectj-autoproxy />      <tx:annotation-driven mode="aspectj" transaction-manager="txmanager" />  

updated application listener is

@component public class simplepopulator implements applicationlistener<contextrefreshedevent> {      @autowired     protected userfacadeservice userfacadeservice;      @autowired     protected sessionfactory sessionfactory;      @override     @transactional     public void onapplicationevent(contextrefreshedevent event) {          try {             ////sessionfactory.set             //session session = sessionfactory.opensession();             //session.begintransaction();             @suppresswarnings("unused")             useraccount account1 = userfacadeservice.createuseraccount("testaa", "testaa", "user dummy", "dummy@email.org");             //session.save(account1);             system.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");             system.out.println(userfacadeservice.existsaccount("test"));              //session.gettransaction().commit();             //session.close();         } catch (securityexception e) {             // todo auto-generated catch block             e.printstacktrace();         } catch (illegalstateexception e) {             // todo auto-generated catch block             e.printstacktrace();         }      } } 

when launch application, on application listener execution receive following exception:

org.hibernate.hibernateexception: not obtain transaction-synchronized session current thread     @ org.springframework.orm.hibernate5.springsessioncontext.currentsession(springsessioncontext.java:132)     @ org.hibernate.internal.sessionfactoryimpl.getcurrentsession(sessionfactoryimpl.java:692)     @ org.abubu.whisper.persistence.impl.abstractrepository.getcurrentsession(abstractrepository.java:46)     @ org.abubu.whisper.persistence.impl.useraccountrepositoryimpl.findbyusername(useraccountrepositoryimpl.java:26) 

i need use transaction in spring context event listener, can not use opensessioninviewfilter because works web request. think can use opensessioninterceptor aop, did not find example use it.

how can use opensessioninterceptor aop?


Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -