<?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 Activiti JavaDelegate, JPA and JTA best practice in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57078#M34647</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i want to create/query entities using JPA in an JavaDelegate&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and i have Activiti configured to use JTA and a datasource &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from Glassfish 3.1.1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Within a JavaDelegate serviceTask I lookup the EntityManager&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;using JNDI and use this entity manager for my entity. Then i&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;set the entity as process variable and can use this entity in&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;another JavaDelegate instance in another serviceTask. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So far so good. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But i face transaction issues sometimes and i dont know how&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;to solve it. First i dispatch to the start form (formKey is a&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;JSF file) and when posting this form i create a process instance&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and set the form fields as process variables. Then two service &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;tasks are triggered, one after each other. The first creates&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a JPA entity and i set it as process variable too. Then, in the &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;second service task, i use all variables sucessfully and update&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;a field in the JPA entity. Meanwhilest another JSF view is &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;rendered and this JSF backing view uses the Activiti task service&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;to get all tasks for a candidate group. But sometimes Activiti&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;throws an exception. But not always. If i debug the code &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;of the service tasks then no exceptiion is thrown.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;javax.el.ELException: /faces/owntasklist.xhtml @23,96 value="#{taskList.ownTasks}": org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;### Error opening session.&amp;nbsp; Cause: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.RuntimeException: Got exception during XAResource.start:&lt;BR /&gt;### Cause: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.RuntimeException: Got exception during XAResource.start:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIData.getValue(UIData.java:731)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIData.getDataModel(UIData.java:1798)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIData.getRowCount(UIData.java:356)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.primefaces.component.datatable.DataTable.calculatePage(DataTable.java:767)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:157)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.ContextTask.run(ContextTask.java:71)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at java.lang.Thread.run(Thread.java:662)&lt;BR /&gt;Caused by: org.apache.ibatis.exceptions.PersistenceException: &lt;BR /&gt;### Error opening session.&amp;nbsp; Cause: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.RuntimeException: Got exception during XAResource.start:&lt;BR /&gt;### Cause: java.sql.SQLException: Error in allocating a connection. Cause: java.lang.RuntimeException: Got exception during XAResource.start:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:81)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:32)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSession.&amp;lt;init&amp;gt;(DbSqlSession.java:84)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.db.DbSqlSessionFactory.openSession(DbSqlSessionFactory.java:77)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContext.getSession(CommandContext.java:177)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.persistence.AbstractManager.getSession(AbstractManager.java:56)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.persistence.AbstractManager.getDbSqlSession(AbstractManager.java:52)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.persistence.entity.TaskManager.findTasksByQueryCriteria(TaskManager.java:89)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.TaskQueryImpl.executeList(TaskQueryImpl.java:333)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.AbstractQuery.execute(AbstractQuery.java:135)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:59)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at org.activiti.engine.impl.AbstractQuery.list(AbstractQuery.java:109)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at erp.web.faces.beans.activiti.TaskList.getOwnTasks(TaskList.java:62)&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;&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;/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;SPAN&gt;So, my question: what is the best practise to use JPA entities within service tasks and Activiti&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;using the same datasource, configured as JTA datasource in persistence.xml and looked up&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;via JNDI in activiti.cfg.xml? i think those two things bites each other but i dont know how to &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;solve it… &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Chris&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 17 Aug 2011 22:30:16 GMT</pubDate>
    <dc:creator>chris_joelly</dc:creator>
    <dc:date>2011-08-17T22:30:16Z</dc:date>
    <item>
      <title>Activiti JavaDelegate, JPA and JTA best practice</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57078#M34647</link>
      <description>Hello,i want to create/query entities using JPA in an JavaDelegateand i have Activiti configured to use JTA and a datasource from Glassfish 3.1.1.Within a JavaDelegate serviceTask I lookup the EntityManagerusing JNDI and use this entity manager for my entity. Then iset the entity as process variable</description>
      <pubDate>Wed, 17 Aug 2011 22:30:16 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57078#M34647</guid>
      <dc:creator>chris_joelly</dc:creator>
      <dc:date>2011-08-17T22:30:16Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti JavaDelegate, JPA and JTA best practice</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57079#M34648</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It should basically work, the way you describe it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there any chance you could wrap it up in a simple unit test so I can test it myself?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 08:04:55 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57079#M34648</guid>
      <dc:creator>jbarrez</dc:creator>
      <dc:date>2011-08-26T08:04:55Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti JavaDelegate, JPA and JTA best practice</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57080#M34649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;i am working on a unit test which deploys the ejb and war to a glassfish-embedded&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and i hope i can simulate this behavior. but at the moment i have issues getting&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;glassfish-embedded to work. only test the Activiti will not be the same scenario.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 03 Sep 2011 08:34:20 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57080#M34649</guid>
      <dc:creator>chris_joelly</dc:creator>
      <dc:date>2011-09-03T08:34:20Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti JavaDelegate, JPA and JTA best practice</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57081#M34650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I think i found my problem. If i put a UserTransaction around the Activiti calls &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;then i can avoid these exceptions, the UserTransaction utx is injeced via&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;@Resource into the @ManagedBean:&lt;/SPAN&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; utx.begin();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Task&amp;gt; tasks = activiti.getProcessEngine().getTaskService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createTaskQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .taskAssignee(userSession.getUser().getUsername())&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByTaskCreateTime().asc().list();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; utx.commit();&lt;BR /&gt;&lt;/CODE&gt;&lt;SPAN&gt;So: i need to start and end a transaction if i call Activiti services in an Bean&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;outside of an EJB and i dont need to do it if i use Activiti services within an EJB&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if i use transactionsExternallyManaged = true. Btw. if i use transactionsExternallyManaged&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;set to false it works too.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But what i even dont understand is are the cfg options jpaPersistenceUnitName, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;jpaHandleTransaction and jpaCloseEntityManager. When do i need these parameters?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dont they interfer with a JTA setup?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 04 Sep 2011 21:44:48 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57081#M34650</guid>
      <dc:creator>chris_joelly</dc:creator>
      <dc:date>2011-09-04T21:44:48Z</dc:date>
    </item>
    <item>
      <title>Re: Activiti JavaDelegate, JPA and JTA best practice</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57082#M34651</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The JPA-configurations you only need when you want to use JPA-entities as process-variables in your processes. If you're just using JPA alongside your process (calling your own services from the process for example), it's not needed.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 05 Sep 2011 07:09:49 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/activiti-javadelegate-jpa-and-jta-best-practice/m-p/57082#M34651</guid>
      <dc:creator>frederikherema1</dc:creator>
      <dc:date>2011-09-05T07:09:49Z</dc:date>
    </item>
  </channel>
</rss>

