java - Transaction commit in HttpSessionListener not persisting to DB -
i started using jbosstm in order use jta on multiple database connections, successful. if try perform transaction controller works without issues.
however, started trying persist entities instance of httpsessionlistener can track user sessions , haven't been able persist working. i'm sure there simple missing here tips welcome.
the problem although seems run ok (logs wise) nothing gets committed database. i've seen error before when trying persist database no transaction manager (before switched jbosstm) can't seem crack this.
here relevant bits of application-context.xml:
<tx:annotation-driven transaction-manager="transactionmanager" /> <bean class="com.arjuna.ats.jta.transactionmanager" factory-method="transactionmanager" id="arjunatransactionmanager"/> <bean class="com.arjuna.ats.jta.usertransaction" factory-method="usertransaction" id="arjunausertransaction"/> <bean class="org.springframework.transaction.jta.jtatransactionmanager" id="transactionmanager"> <property name="transactionmanager"> <ref bean="arjunatransactionmanager"/> </property> <property name="usertransaction"> <ref bean="arjunausertransaction"/> </property> </bean> <jee:jndi-lookup id="coreds" jndi-name="java:/comp/env/jdbc/coreds" resource-ref="true" /> <bean id="coreemw" class="org.springframework.orm.jpa.support.sharedentitymanagerbean" p:entitymanagerfactory-ref="coreemf"/> <bean id="coreemf" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="coreds"/> <property name="loadtimeweaver"> <bean class="org.springframework.instrument.classloading.instrumentationloadtimeweaver"/> </property> </bean> <bean id="sessiondao" class="core.dao.sessiondaoimpl" p:entitymanager-ref="coreemw" /> <bean name="openentitymanagerinviewinterceptor" class="org.springframework.orm.jpa.support.openentitymanagerinviewinterceptor" p:entitymanagerfactory-ref="coreemf" /> <bean class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor"/> <bean id='jdbctemplate' class='org.springframework.jdbc.core.jdbctemplate' p:datasource-ref='coreds' /> web.xml
<listener> <listener-class>core.util.sessionlistener</listener-class> </listener> sessionlistener.java
public class sessionlistener implements httpsessionlistener { private static log log = logfactory.getlog(sessionlistener.class); @override @transactional public void sessioncreated(httpsessionevent event) { getdao(event).save(new session(event.getsession().getid(),calendar.getinstance())); } @override public void sessiondestroyed(httpsessionevent event) { .... } private sessiondao getdao(httpsessionevent event){ httpsession session = event.getsession(); applicationcontext ctx = webapplicationcontextutils. getwebapplicationcontext(session.getservletcontext()); sessiondao dao = (sessiondao) ctx.getbean("sessiondao"); return dao; } } persistence.xml
<persistence version="1.0" xmlns="..."> <persistence-unit name="bpscorepu" transaction-type="resource_local"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <non-jta-data-source>java:comp/env/jdbc/bpscoreds</non-jta-data-source> ... <class>core.model.session</class> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.mysqldialect"/> </properties> </persistence-unit> </persistence> logs (where session object not persisted although can see commit)
2013-04-18 15:47:41,763 [core.util.sessionlistener] trace - sessioncreated(): c5a37e5cc12ff19c277769da8b97bf0a 2013-04-18 15:47:41,798 [com.arjuna.ats.jta] trace - basetransaction.getstatus 2013-04-18 15:47:41,854 [com.arjuna.ats.arjuna] trace - loading class com.arjuna.ats.internal.arjuna.coordinator.checkedactionfactoryimple 2013-04-18 15:47:41,873 [com.arjuna.ats.jta] trace - basetransaction.begin 2013-04-18 15:47:41,882 [com.arjuna.ats.arjuna] trace - loading class com.arjuna.ats.arjuna.recovery.actionstatusservice 2013-04-18 15:47:41,889 [com.arjuna.ats.arjuna] trace - loading class com.arjuna.ats.internal.arjuna.objectstore.shadownofilelockstore 2013-04-18 15:47:41,891 [com.arjuna.ats.arjuna] trace - filesystemstore.createhierarchy(/tmp/jbosstm/tx/a/shadownofilelockstore/defaultstore/) 2013-04-18 15:47:41,900 [com.arjuna.ats.arjuna] info - arjuna012163: starting service com.arjuna.ats.arjuna.recovery.actionstatusservice on port 32882 2013-04-18 15:47:41,910 [com.arjuna.ats.arjuna] trace - loading class com.arjuna.ats.internal.arjuna.utils.socketprocessid 2013-04-18 15:47:41,912 [com.arjuna.ats.arjuna] info - arjuna012337: transactionstatusmanageritem host: 127.0.0.1 port: 32882 2013-04-18 15:47:41,913 [com.arjuna.ats.arjuna] trace - outputobjectstate::outputobjectstate() 2013-04-18 15:47:41,914 [com.arjuna.ats.arjuna] trace - loading class com.arjuna.ats.internal.arjuna.objectstore.shadownofilelockstore 2013-04-18 15:47:41,914 [com.arjuna.ats.arjuna] trace - filesystemstore.createhierarchy(/tmp/jbosstm/tx/a/shadownofilelockstore/defaultstore/) 2013-04-18 15:47:41,915 [com.arjuna.ats.arjuna] trace - filesystemstore.write_committed(0:ffffc0a80036:8073:5170078d:0, /recovery/transactionstatusmanager) 2013-04-18 15:47:41,916 [com.arjuna.ats.arjuna] trace - shadowingstore.write_state(0:ffffc0a80036:8073:5170078d:0, /recovery/transactionstatusmanager, statetype.os_original) 2013-04-18 15:47:41,916 [com.arjuna.ats.arjuna] trace - shadowingstore.genpathname(0:ffffc0a80036:8073:5170078d:0, /recovery/transactionstatusmanager, statetype.os_original) 2013-04-18 15:47:41,916 [com.arjuna.ats.arjuna] trace - filesystemstore.genpathname(0:ffffc0a80036:8073:5170078d:0, /recovery/transactionstatusmanager, 11) 2013-04-18 15:47:41,918 [com.arjuna.ats.arjuna] trace - filesystemstore.openandlock(/tmp/jbosstm/tx/a/shadownofilelockstore/defaultstore/recovery/transactionstatusmanager/0_ffffc0a80036_8073_5170078d_0, filelock.f_wrlck, true) 2013-04-18 15:47:41,918 [com.arjuna.ats.arjuna] trace - filesystemstore.createhierarchy(/tmp/jbosstm/tx/a/shadownofilelockstore/defaultstore/recovery/transactionstatusmanager/0_ffffc0a80036_8073_5170078d_0) 2013-04-18 15:47:41,927 [com.arjuna.ats.arjuna] trace - filesystemstore.closeandunlock(/tmp/jbosstm/tx/a/shadownofilelockstore/defaultstore/recovery/transactionstatusmanager/0_ffffc0a80036_8073_5170078d_0, null, java.io.fileoutputstream@283a0f10) 2013-04-18 15:47:41,927 [com.arjuna.ats.arjuna] info - arjuna012170: transactionstatusmanager started on port 32882 , host 127.0.0.1 service com.arjuna.ats.arjuna.recovery.actionstatusservice 2013-04-18 15:47:41,928 [com.arjuna.ats.arjuna] trace - statemanager::statemanager( 2, 0 ) 2013-04-18 15:47:41,928 [com.arjuna.ats.arjuna] trace - basicaction::basicaction() 2013-04-18 15:47:41,929 [com.arjuna.ats.arjuna] trace - basicaction::begin() action-id 0:ffffc0a80036:8073:5170078d:2 2013-04-18 15:47:41,929 [com.arjuna.ats.arjuna] trace - basicaction::actioninitialise() action-id 0:ffffc0a80036:8073:5170078d:2 2013-04-18 15:47:41,930 [com.arjuna.ats.arjuna] trace - actionhierarchy::actionhierarchy(1) 2013-04-18 15:47:41,931 [com.arjuna.ats.arjuna] trace - actionhierarchy::add(0:ffffc0a80036:8073:5170078d:2, 1) 2013-04-18 15:47:41,934 [com.arjuna.ats.arjuna] trace - basicaction::addchildthread () action 0:ffffc0a80036:8073:5170078d:2 adding thread["ajp-bio-8010"-exec-1,5,main] 2013-04-18 15:47:41,935 [com.arjuna.ats.arjuna] trace - basicaction::addchildthread () action 0:ffffc0a80036:8073:5170078d:2 adding thread["ajp-bio-8010"-exec-1,5,main] result = true 2013-04-18 15:47:41,938 [com.arjuna.ats.arjuna] trace - transactionreaper::instantiate() 2013-04-18 15:47:41,939 [com.arjuna.ats.arjuna] trace - transactionreaper::transactionreaper ( 9223372036854775807 ) 2013-04-18 15:47:41,941 [com.arjuna.ats.arjuna] trace - reaperthread.run () 2013-04-18 15:47:41,942 [com.arjuna.ats.arjuna] trace - thread thread[transaction reaper,5,main] sleeping 9223370670558313865 2013-04-18 15:47:41,942 [com.arjuna.ats.arjuna] trace - transactionreaper::insert ( basicaction: 0:ffffc0a80036:8073:5170078d:2 status: actionstatus.running, 60 ) 2013-04-18 15:47:41,944 [com.arjuna.ats.arjuna] trace - reaperelement::reaperelement ( basicaction: 0:ffffc0a80036:8073:5170078d:2 status: actionstatus.running, 60 ) 2013-04-18 15:47:41,944 [com.arjuna.ats.arjuna] trace - reaperthread.run () 2013-04-18 15:47:41,944 [com.arjuna.ats.arjuna] trace - transactionreaper::check () 2013-04-18 15:47:41,944 [com.arjuna.ats.arjuna] trace - transactionreaper::check - comparing 1366296521944 2013-04-18 15:47:41,945 [com.arjuna.ats.arjuna] trace - thread thread[transaction reaper,5,main] sleeping 59999 2013-04-18 15:47:41,946 [com.arjuna.ats.arjuna] trace - reaperworkerthread.run () 2013-04-18 15:47:41,946 [com.arjuna.ats.arjuna] trace - thread thread[transaction reaper worker 0,5,main] waiting cancelled txs 2013-04-18 15:47:42,091 [dao.basedaoimpl] trace - persisting 2013-04-18 15:47:42,091 [dao.basedaoimpl] debug - adtest shared entitymanager proxy target factory [org.springframework.orm.jpa.localcontainerentitymanagerfactorybean@1dcd8d1f] 2013-04-18 15:47:42,091 [dao.basedaoimpl] debug - adtest core.model.session@6229abca 2013-04-18 15:47:42,120 [com.arjuna.ats.jta] trace - basetransaction.getstatus 2013-04-18 15:47:42,120 [com.arjuna.ats.jta] trace - transactionimple.getstatus 2013-04-18 15:47:42,121 [com.arjuna.ats.jta] trace - basetransaction.getstatus 2013-04-18 15:47:42,121 [com.arjuna.ats.jta] trace - transactionimple.getstatus 2013-04-18 15:47:42,121 [com.arjuna.ats.jta] trace - basetransaction.commit 2013-04-18 15:47:42,121 [com.arjuna.ats.jta] trace - transactionimple.commitanddisassociate 2013-04-18 15:47:42,121 [com.arjuna.ats.arjuna] trace - basicaction::end() action-id 0:ffffc0a80036:8073:5170078d:2 2013-04-18 15:47:42,122 [com.arjuna.ats.arjuna] trace - basicaction::removechildthread () action 0:ffffc0a80036:8073:5170078d:2 removing tsthread:1 2013-04-18 15:47:42,122 [com.arjuna.ats.arjuna] trace - basicaction::removechildthread () action 0:ffffc0a80036:8073:5170078d:2 removing tsthread:1 result = true 2013-04-18 15:47:42,122 [com.arjuna.ats.arjuna] trace - transactionreaper::remove ( basicaction: 0:ffffc0a80036:8073:5170078d:2 status: actionstatus.committed ) all edited remove client detail, there may mistakes
any more gratefully appreciated!
for finding now, ended going straight data source , running insert query.
@override @transactional public void sessioncreated(httpsessionevent event) { log.trace("sessioncreated(): "+event.getsession().getid()); jdbctemplate select = new jdbctemplate(getds(event)); simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss"); string datetime = sdf.format(calendar.getinstance().gettime()); select.update("insert sessions (username, session, started) values ('','"+event.getsession().getid()+"','"+datetime+"')"); } private datasource getds(httpsessionevent event){ httpsession session = event.getsession(); applicationcontext ctx = webapplicationcontextutils. getwebapplicationcontext(session.getservletcontext()); datasource dao = (datasource) ctx.getbean("bpscoreds"); return dao; }
Comments
Post a Comment