Thanks for the inputs. One more observations from myside regarding error. When I use jackrabbit as one of the XA resource and if I start a new transaction I am getting this error. The scenario is given below and strange thing is it comes only when I use JBoss transaction manager and managed database connections. Everything works fine when I use Jencks and Geronimo.
Note: For jackrabbit I am not getting db connections from container. Transasction Start (using PROPOGATION_REQUIRED) -->calls to jackrabbit api --> calls to JDBC api in a NEW transaction using PROPOGATION_REQUIRES_NEW (Here I get the problem which i have listed below) Regards, Anand. 2008/7/14 Marcel Reutegger <[EMAIL PROTECTED]>: > you just have to make sure that the database connections used by jackrabbit > are not managed by the container. > > btw, the stacktrace does not contain any reference to jackrabbit classes. > maybe this is not a jackrabbit issues? > > > regards > marcel > > Anand Bhagwat wrote: > >> Do I need to do anything specific for that? >> Currently I am using Mysql Bundle persistant manager and DBFileManager on >> mysql database. The user with which jackrabbit connects to database has >> full >> access to the corresponding schema. >> >> Regards, >> Anand. >> >> 2008/7/14 Marcel Reutegger <[EMAIL PROTECTED]>: >> >> Hi, >>> >>> please note that jackrabbit needs full control over the database >>> connections it operates on. that also includes committing a transaction. >>> >>> in a XA environment jackrabbit itself will act as a XA resource and >>> control >>> when changes to the underlying database are committed. >>> >>> regards >>> marcel >>> >>> Anand Bhagwat wrote: >>> >>> I want to use jackrabbit in a managed environment. Operations on >>>> jackrabbit >>>> content repository should participate in XA transactions. >>>> >>>> 1) Please let me know appropriate repository configuration. >>>> >>>> Here are the details of my env: >>>> Server : JBoss 4.2.2 GA >>>> Spring : 2.5.4 >>>> Hibernate: 3.x >>>> Jackrabbit 1.4 >>>> springmodules 0.8 >>>> jackrabbit-jca 1.4 >>>> >>>> I am using *org.apache.jackrabbit.core.fs.db.DbFileSystem* and * >>>> org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager. >>>> >>>> *2) I get an error when I create a new transaction from an existing >>>> transaction using PROPOGATION_REQUIRES_NEW especially when I do some >>>> operation on jackrabbit like addNode, addProperty etc. Am I missing >>>> something? >>>> >>>> java.lang.IllegalStateException: Can't enlist - already a tx! >>>> at >>>> >>>> >>>> org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:516) >>>> at >>>> >>>> >>>> org.jboss.resource.connectionmanager.TxConnectionManager.transactionStarted(TxConnectionManager.java:328) >>>> at >>>> >>>> >>>> org.jboss.resource.connectionmanager.CachedConnectionManager.userTransactionStarted(CachedConnectionManager.java:360) >>>> at >>>> >>>> >>>> org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:127) >>>> at >>>> >>>> >>>> org.springframework.transaction.jta.JtaTransactionManager.doJtaBegin(JtaTransactionManager.java:886) >>>> at >>>> >>>> >>>> org.springframework.transaction.jta.JtaTransactionManager.doBegin(JtaTransactionManager.java:843) >>>> at >>>> >>>> >>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction(AbstractPlatformTransactionManager.java:423) >>>> at >>>> >>>> >>>> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:356) >>>> at >>>> >>>> >>>> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:125) >>>> at >>>> >>>> >>>> com.sungard.cs.docrepos.util.InfinityIdentityGenerator.generate(InfinityIdentityGenerator.java:44) >>>> at >>>> >>>> >>>> org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:91) >>>> at >>>> >>>> >>>> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186) >>>> at >>>> >>>> >>>> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175) >>>> at >>>> >>>> >>>> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:98) >>>> at >>>> >>>> >>>> org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) >>>> at >>>> org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502) >>>> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494) >>>> at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:490) >>>> at >>>> >>>> >>>> org.springframework.orm.hibernate3.HibernateTemplate$16.doInHibernate(HibernateTemplate.java:747) >>>> at >>>> >>>> >>>> org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419) >>>> at >>>> >>>> >>>> org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) >>>> at >>>> >>>> >>>> org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:744) >>>> at >>>> >>>> >>>> com.sungard.framework.base.dao.hibernate.BaseDaoHibernate.add(BaseDaoHibernate.java:68) >>>> 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) >>>> at $Proxy58.add(Unknown Source) >>>> 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) >>>> at $Proxy99.add(Unknown Source) >>>> at >>>> >>>> >>>> com.sungard.framework.base.service.impl.ServiceImpl.add(ServiceImpl.java:87) >>>> at >>>> >>>> >>>> com.sungard.cs.admin.firmprofile.service.impl.FirmProfileServiceImpl.saveFirmProfile(FirmProfileServiceImpl.java:240) >>>> 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) >>>> at >>>> >>>> >>>> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) >>>> at >>>> >>>> >>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) >>>> at $Proxy101.saveFirmProfile(Unknown Source) >>>> at >>>> >>>> >>>> com.sungard.cs.admin.firmprofile.action.FirmProfileAction.saveProfile(FirmProfileAction.java:1043) >>>> at >>>> >>>> >>>> com.sungard.cs.admin.firmprofile.action.FirmProfileAction.doUpdate(FirmProfileAction.java:605) >>>> 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 >>>> >>>> >>>> com.sungard.framework.base.action.BaseAction.dispatchMethod(BaseAction.java:402) >>>> at >>>> >>>> com.sungard.framework.base.action.BaseAction.execute(BaseAction.java:176) >>>> at >>>> >>>> >>>> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) >>>> at >>>> >>>> >>>> com.sungard.framework.controller.CSARequestProcessor.processActionPerform(CSARequestProcessor.java:252) >>>> at >>>> >>>> >>>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) >>>> at >>>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) >>>> at >>>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) >>>> at >>>> >>>> >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) >>>> at >>>> >>>> >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>>> at >>>> >>>> >>>> com.sungard.cs.admin.sessionmanager.SessionManagerFilter.doFilter(SessionManagerFilter.java:65) >>>> 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.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:112) >>>> at >>>> >>>> >>>> com.sungard.framework.web.multipart.support.CSAMultipartFilter.doFilterInternal(CSAMultipartFilter.java:55) >>>> at >>>> >>>> >>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) >>>> at >>>> >>>> >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil >>>> >>>> Thanks, >>>> Anand.* >>>> >>>> * >>>> >>>> >>>> >> >
