<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic a strange question about jta transaction in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/a-strange-question-about-jta-transaction/m-p/198480#M151610</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I use JTA manage my transaction, and from spring my service bean like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;@Transactional&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;@Component("myService")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;public class MyServiceImpl implements MyService {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PersistenceContext(unitName="platform")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private EntityManager em;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private TaskService taskService;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void fooSelf(String processInstanceId, MyDomain myDomain) throws RuntimeException{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;Task&amp;gt; tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (Task task : tasks) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;taskService.complete(task.getId());&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;em.merge(myDomain);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;my unit test like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;@Test&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void testDm() throws Exception{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyDomain myDomain = new MyDomain();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myDomain.setId("1");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myDomain.setName("a");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String processInstanceId = testStartProcess();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myService.fooSelf(processInstanceId, myDomain);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private String testStartProcess() throws Exception{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return runtimeService.startProcessInstanceByKey("robbie", null, null).getId();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It looks very simple. if I use mysql, oracle, sqlserver, everything is ok.&amp;nbsp; but when I use h2 as the database, something is wrong.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the exception stack below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: The transaction was set to rollback only&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1013)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.proxy.$Proxy24.fooSelf(Unknown Source)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.bjhy.test.JunitTest.testDm(JunitTest.java:59)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.reflect.Method.invoke(Method.java:597)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.junit.runners.ParentRunner.run(ParentRunner.java:236)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)&lt;BR /&gt;Caused by: javax.transaction.RollbackException: The transaction was set to rollback only&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.jta.TransactionImp.rethrowAsJtaRollbackException(TransactionImp.java:68)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:222)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:501)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:130)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1010)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 36 more&lt;BR /&gt;Caused by: com.atomikos.icatch.RollbackException: The transaction was set to rollback only&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.imp.TransactionStateHandler.commit(TransactionStateHandler.java:254)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.imp.CompositeTransactionImp.doCommit(CompositeTransactionImp.java:287)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:77)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.imp.CompositeTransactionImp.commit(CompositeTransactionImp.java:336)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:208)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;… 39 more&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't know why. and the strange thing is if I change the location of the code, it will be ok in H2 database.just like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;@Transactional&lt;BR /&gt;@Component("myService")&lt;BR /&gt;public class MyServiceImpl implements MyService {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PersistenceContext(unitName="platform")&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private EntityManager em;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private TaskService taskService;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void fooSelf(String processInstanceId, MyDomain myDomain) throws RuntimeException{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;blockcode&amp;gt;em.merge(myDomain);//first invoke merge method&amp;lt;/blockcode&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;Task&amp;gt; tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (Task task : tasks) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;taskService.complete(task.getId());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 24 Jun 2014 08:02:03 GMT</pubDate>
    <dc:creator>jonlee</dc:creator>
    <dc:date>2014-06-24T08:02:03Z</dc:date>
    <item>
      <title>a strange question about jta transaction</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/a-strange-question-about-jta-transaction/m-p/198480#M151610</link>
      <description>I use JTA manage my transaction, and from spring my service bean like this:@Transactional@Component("myService")public class MyServiceImpl implements MyService {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@PersistenceContext(unitName="platform")&amp;nbsp;&amp;nbsp;&amp;nbsp;private EntityManager em;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Autowired&amp;nbsp;&amp;nbsp;&amp;nbsp;private TaskService taskService;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Overrid</description>
      <pubDate>Tue, 24 Jun 2014 08:02:03 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/a-strange-question-about-jta-transaction/m-p/198480#M151610</guid>
      <dc:creator>jonlee</dc:creator>
      <dc:date>2014-06-24T08:02:03Z</dc:date>
    </item>
    <item>
      <title>Re: a strange question about jta transaction</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/a-strange-question-about-jta-transaction/m-p/198481#M151611</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;How is your H2 configured. Did you add the close delay?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;"By default, closing the last connection to a database closes the database. For an in-memory database, this means the content is lost. To keep the database open, add ;DB_CLOSE_DELAY=-1 to the database URL. To keep the content of an in-memory database as long as the virtual machine is alive, use jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We are not using H2 for testing JTA (but mysql) in our qa env, so no real experience there.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Jul 2014 09:29:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/a-strange-question-about-jta-transaction/m-p/198481#M151611</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2014-07-04T09:29:00Z</dc:date>
    </item>
  </channel>
</rss>

