Aug 25
Note: Just a short post to save your hair from turning gray (I know mine just did)
If you ever run into a "Unable to access UserTransaction in DataService" error when working with LCDS on Tomcat 5.5.x+, make sure you configured the Java Open Transaction Manager (JOTM) correctly. You can do this by adding the following in a project config file (META_INF/context.xml or a file named [MY_PROJECT].xml in [TOMCAT_HOME]/conf/Catalina/localhost):
XML:
-
<Context reloadable="true">
-
<Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>
-
</Context>
Now if only the Flex Project Wizard would do this for us...
Add to Bloglines - Digg This! - del.icio.us - Stumble It! - Twit This! - Technorati links - Share on Facebook - Feedburner
Christophe Herreman is a software developer living in Belgium. He's working on high-end Flex and AIR solutions at 
August 25th, 2008 at 4:09 pm
I don’t believe it?!
At the Aircamp last week, at about 5:30 am (3.5 hours before deadline), we ran into this problem! About an hour later we gave up and went to bed!!! This blog post, one week earlier might just have resulted in a trip to Milan
October 9th, 2008 at 3:43 pm
Thank you, Mr Herreman, for your solution.
Now my Flex’s application runs good !
November 12th, 2008 at 12:20 pm
Hi Friend,
in my application, i have layers like EJB -> Struts -> JSP, but i am trying to change the layers like EJB -> Struts -> Flex, with WebORB. i dont like to change the Layers. i dont know how i am going to achieve the Goal. for that i need your suggestion to reach the target, i am expecting your support for this,
thanks
areef
February 23rd, 2009 at 2:58 pm
I think there’s a mistake in your post. You can place the context.xml in the META_INF/context.xml, and not in the WEB_INF/context.xml.
Thanks for the post by the way.
March 2nd, 2009 at 5:02 pm
THANKS, lcds is a terror to me, this was so helpful and so quick to fix it
March 17th, 2009 at 6:46 pm
Thank you man!!! :’)
March 31st, 2009 at 8:30 pm
Amazingly simple !
Michael Chaize rocks (epita power
Thanks to both of you
April 15th, 2009 at 2:07 pm
Hi friends,
I’m getting this Casting error. Any clues ??
Exception: flex.data.DataServiceException: Unable to access UserTransaction in DataService.
at flex.data.DataServiceTransaction.doBegin(DataServiceTransaction.java:1162)
at flex.data.DataServiceTransaction.begin(DataServiceTransaction.java:1114)
at flex.data.DataService.serviceTransactedMessage(DataService.java:747)
at flex.data.DataService.serviceMessage(DataService.java:465)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
at flex.messaging.endpoints.RTMPConnection.handleTCCommand(RTMPConnection.java:723)
at flex.messaging.endpoints.RTMPConnection.serviceTCMessage(RTMPConnection.java:1033)
at flex.messaging.endpoints.RTMPConnection.doRead(RTMPConnection.java:515)
at flex.messaging.endpoints.RTMPProtocolHandler.doRead(RTMPProtocolHandler.java:123)
at flex.messaging.socketserver.Connection$ConnectionReader.run(Connection.java:788)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: org.objectweb.jotm.Current cannot be cast to javax.transaction.UserTransaction
at flex.data.DataServiceTransaction.doBegin(DataServiceTransaction.java:1143)
… 13 more
November 5th, 2009 at 11:03 am
hi,friend?
I encounter the same error when working with LCDS on Tomcat 6.0, how can I solve it ?
January 20th, 2010 at 10:46 am
Hi friends,
Im working with LCDS on Tomcat 6.0.
I’m getting this Casting error
Exception: flex.data.DataServiceException: Unable to access UserTransaction in DataService.
at flex.data.DataServiceTransaction.doBegin(DataServiceTransaction.java:1214)
at flex.data.DataServiceTransaction.begin(DataServiceTransaction.java:1166)
at flex.data.DataService.serviceTransactedMessage(DataService.java:810)
at flex.data.DataService.serviceMessage(DataService.java:475)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1406)
at flex.messaging.AsyncMessageBroker.routeMessageToService(AsyncMessageBroker.java:571)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:165)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:293)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:364)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.webapp.DefaultLoginPageGeneratingFilter.doFilterHttp(DefaultLoginPageGeneratingFilter.java:86)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: org.objectweb.jotm.Current cannot be cast to javax.transaction.UserTransaction
at flex.data.DataServiceTransaction.doBegin(DataServiceTransaction.java:1195)
… 65 more
how could i solve this ?
please help me
March 15th, 2010 at 5:05 pm
hi Imraan, in my application this worked.
1) Download JOTM 2.1.9 from http://forge.objectweb.org/projects/jotm/
if you don’t already have it.
2) Unzip to c:\
3) Link those jars to Tomcat
a. Double-click Tomcat definition in the Servers tab of Eclipse.
b. Click “Open launch configuration”.
c. Select the Classpath tab.
d. Select “User Entries”, and then “Add External JARs”.
e. Navigate to C:\jotm-2.1.9\lib.
f. Select all classes
g. Apply the changes and exit Tomcat properties.
h. (optional) test JOTM installation by starting the server and
accessing the below JSP file*. Success will be obvious.
4) Edit your META-INF\context.xml to include the following line:
tks
April 23rd, 2010 at 12:42 am
Hi there,
where would i have to place the jotm.jar if i’m using myeclipse’s tomcat? it’s already installed in a myeclipse folder and i really can’t find the common/lib folders.
I’m new with LCDS and Tomcat actually.