<?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 Re: Database connections stay open in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114136#M80408</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I did not show the configuration in the first post because I did not think the answers to my questions were configuration specific.&amp;nbsp; I apologize for that assumption.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the activiti.cfg.xml file I used.&amp;nbsp; The commented out parts are used for testing with databases on different servers.&amp;nbsp; Only one is uncommented for a test.&amp;nbsp; As you can see, I ran with the database on LUSR1506 for the last test.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the SQL Server 2008 Express database.&amp;nbsp; One database is on the same machine on which I ran the Process Engine, the others are on the local area network and on the wide area network.&amp;nbsp; The database connections remaining open occurred no matter which database server I used.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I run the test as a Java Application within Eclipse Indigo Service Release 2 on LUSR1315, under Window 7 Professional OS. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;activiti.cfg.xml:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;beans xmlns="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;" &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/A&gt;"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/beans/spring-beans.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="databaseSchemaUpdate" value="false"/&amp;gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR0989 –&amp;gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR0989:1433/Workflow_DB1" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="yyyyyyyyyyyy" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="zzzzzzzzzzzz" /&amp;gt;&lt;BR /&gt; –&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR1506 –&amp;gt;&lt;BR /&gt; &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR1506:1433/Workflow_DB1" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="yyyyyyyyyyyy" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="zzzzzzzzzzzz" /&amp;gt;&lt;BR /&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR1315 –&amp;gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR1315:1433/Activiti_DB" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="jjjjjjjjjjjj" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="kkkkkkkkkkkk" /&amp;gt;&lt;BR /&gt; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jobExecutorActivate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;lt;/beans&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;The db.properties files are as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; db=h2&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.driver=org.h2.Driver&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.url=jdbc:h2:tcp://localhost/activiti&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.username=sa&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.password=&lt;BR /&gt;db=mssql&lt;BR /&gt;jdbc.driver=net.sourceforge.jtds.jdbc.Driver&lt;BR /&gt;jdbc.url=jdbc:jtds:sqlserver://LUSR1506:1433/Workflow-DB1&lt;BR /&gt;jdbc.username=yyyyyyyyyyyy&lt;BR /&gt;jdbc.password=zzzzzzzzzzzz&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a single class that interfaces with the Process Engine.&amp;nbsp; All classes needing a Process Engine call this one.&amp;nbsp; Here are relevant parts of that class, ProcEngController.java.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.argo.wfProj1;&lt;BR /&gt;&lt;BR /&gt;import java.util.ArrayList;&lt;BR /&gt;import java.util.Calendar;&lt;BR /&gt;import java.util.Date;&lt;BR /&gt;import java.util.Hashtable;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;import java.util.ListIterator;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.ActivitiException;&lt;BR /&gt;import org.activiti.engine.ProcessEngine;&lt;BR /&gt;import org.activiti.engine.ProcessEngineConfiguration;&lt;BR /&gt;import org.activiti.engine.ProcessEngines;&lt;BR /&gt;import org.activiti.engine.history.HistoricActivityInstance;&lt;BR /&gt;import org.activiti.engine.history.HistoricProcessInstance;&lt;BR /&gt;import org.activiti.engine.identity.Group;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;import org.activiti.engine.repository.ProcessDefinition;&lt;BR /&gt;import org.activiti.engine.runtime.ProcessInstance;&lt;BR /&gt;&lt;BR /&gt;import org.apache.log4j.Logger;&lt;BR /&gt;&lt;BR /&gt;public class ProcEngController &lt;BR /&gt;{&lt;BR /&gt; private Logger logger = Logger.getLogger(ProcEngController.class);&lt;BR /&gt; &lt;BR /&gt; private ProcessEngine myProcessEngine;&lt;BR /&gt; &lt;BR /&gt; public ProcEngController() throws Throwable&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.constructor() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; initTheEngine();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; private void initTheEngine() throws Throwable&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.initTheEngine() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; myProcessEngine = &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessEngineConfiguration&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessEngineConfigurationFromResource("activiti.cfg.xml")&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .buildProcessEngine();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.info("In ProcEngController.initTheEngine() " + "built Process Engine.");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; catch(ActivitiException ae)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.fatal("In initTheEngine() caught ActivitiException trying "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "to buid the process engine.&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ae);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; ae.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; throw new Exception("Caught AcvtivitiException in "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "ProcEngController.initTheEngine()."&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +"&amp;nbsp; Could not buildProcessEngine().");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; catch(Throwable th)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.fatal("In ProcEngController.initTheEngine() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Trowable trying to "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "buid the process engine.&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , th);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; StackTraceElement[] ste = th.getStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; ste.length; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String oneSTElement = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oneSTElement = (String) ste[i].toString();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.fatal(oneSTElement);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(i == 10)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; th.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; throw new Exception&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ("Caught Throwable in ProcEngController.initTheEngine() "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Could not buildProcessEngine().");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; public void destroy()&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.destroy() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; ProcessEngines.destroy();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.destroy() called "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "ProcessEngines.destroy().");&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; &lt;BR /&gt; protected boolean verifyIdIsOkay(String theRequestedUserId) &lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; boolean idIsOkay = false;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if(&amp;nbsp;&amp;nbsp;&amp;nbsp; theRequestedUserId != null&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; theRequestedUserId.length() &amp;gt; 0)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String theFoundUserId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; theFoundUserId = myProcessEngine&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getIdentityService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createUserQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .userId(theRequestedUserId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .singleResult()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; catch(Exception e2)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; theFoundUserId = "";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("In ProcEngController.verifyIdIsOkay() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Exception trying to find theRequestedUserId \""&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + theRequestedUserId&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ".&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , e2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The Process Engine throws an exception if the userId &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // cannot be found; it probably should handle the condition&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // more cleanly than that.&amp;nbsp; We do not need to trace the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // situation here.&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; if(theFoundUserId != null &amp;amp;&amp;amp; theFoundUserId.length() &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; idIsOkay = true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; idIsOkay = false;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; idIsOkay = false;&lt;BR /&gt;&amp;nbsp; } &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.varifyIdIsOkay() looking for "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "theRequestedUserId = \""&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + theRequestedUserId&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\", and found idIsOkay = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + idIsOkay);&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return idIsOkay;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; protected Hashtable&amp;lt;Integer, ProcDefData&amp;gt; findAllProcesses()&lt;BR /&gt; {&amp;nbsp; &lt;BR /&gt;&amp;nbsp; Hashtable&amp;lt;Integer, ProcDefData&amp;gt; allProcDefsInfo = new Hashtable&amp;lt;Integer, ProcDefData&amp;gt;();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; List&amp;lt;ProcessDefinition&amp;gt; procDefsList = myProcessEngine&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getRepositoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessDefinitionQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByProcessDefinitionName()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByProcessDefinitionVersion()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .list();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; for(int i = 0; i &amp;lt; procDefsList.size(); i++)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ProcessDefinition aProcDef = procDefsList.get(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deployId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefKey = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefName = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Integer procDefVersion = new Integer("-1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefCategory = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefDiagram = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deployId = aProcDef.getDeploymentId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefId = aProcDef.getId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefKey = aProcDef.getKey();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefName = aProcDef.getName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefVersion = new Integer(aProcDef.getVersion());&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefCategory = aProcDef.getCategory();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefDiagram = aProcDef.getDiagramResourceName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; ProcDefData procDefData = new ProcDefData();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeployId(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefCategory(procDefCategory);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefId(procDefId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefKey(procDefKey);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefName(procDefName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefVersion(procDefVersion);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefDiagramName(procDefDiagram);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Find the deployment name&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deploymentName = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deploymentName = findDeploymentName(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeploymentName(deploymentName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deploymentDate = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deploymentDate = findDeploymentDate(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeploymentDate(deploymentDate);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; Integer seqNbr = new Integer(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; allProcDefsInfo.put(seqNbr, procDefData);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return allProcDefsInfo;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; protected String findProcDefName(String procDefId)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; String procDefName = new String();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; procDefName = myProcessEngine.getRepositoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessDefinitionQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processDefinitionId(procDefId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .singleResult()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return procDefName;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; protected ProcessInstance startAProcess(String processIdToStart,int cycle, int countInCycle)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.startAProcess was called to "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "start processId = " + processIdToStart + ".&amp;nbsp; Cycle = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + cycle + " and count in cycle = " + countInCycle);&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; ProcessInstance theProcInstance = null;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; int startAProcessRetryLimit = 6;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; int startsTried = 0;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; // Put starting a process in a loop so we can easily retry it if it&lt;BR /&gt;&amp;nbsp; // fails the first time.&lt;BR /&gt;&amp;nbsp; for(startsTried = 0; startsTried &amp;lt; startAProcessRetryLimit; startsTried++)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theProcInstance = &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myProcessEngine.getRuntimeService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .startProcessInstanceById(processIdToStart);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If starting process does not catch an exception, it worked;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // so get out of the retry loop.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("ProcEngController.startAProcess() started process "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + processIdToStart &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + " when startsTried = " + startsTried&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + " in thread "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Thread.currentThread().getName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; startsTried = startAProcessRetryLimit;&amp;nbsp; // Get out of loop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; catch(Throwable th)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("ProcEngController.startAProcess() startsTried = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + startsTried&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ", caught throwable "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "trying to start " + processIdToStart &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "in thread "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Thread.currentThread().getName(), th); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If trying to start the process catches a throwable, log it "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and retry starting the process after waiting a few seconds.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(5000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception e)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("ProcEngController.startAProcess() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "exception trying to pause before "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "attempting again to start "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + processIdToStart&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ".&amp;nbsp; startsTried = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + startsTried, e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure the conditional part of the for() statement&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // prevents an infinite loop of start-exceptions here.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The automatic incrementing of startsTried should &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // prevent the infinite loop.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return theProcInstance;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;…&lt;BR /&gt; &lt;BR /&gt; protected void setAuthenticatedUserId(String theUserId)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; myProcessEngine.getIdentityService().setAuthenticatedUserId(theUserId);&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;}&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Please let me know if you need anything else to answer my questions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you in advance for your continued help.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 18 May 2012 14:26:06 GMT</pubDate>
    <dc:creator>ct1</dc:creator>
    <dc:date>2012-05-18T14:26:06Z</dc:date>
    <item>
      <title>Database connections stay open</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114134#M80406</link>
      <description>Sirs:I have been running some tests intended to simulate multiple user starting processes almost simultaneously.&amp;nbsp; To simulate the multiple users, I have a program that, for each BPMN process I want launched, starts a new thread which it instantiates a Process Engine, sets the authenticated user id,</description>
      <pubDate>Thu, 17 May 2012 18:10:11 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114134#M80406</guid>
      <dc:creator>ct1</dc:creator>
      <dc:date>2012-05-17T18:10:11Z</dc:date>
    </item>
    <item>
      <title>Re: Database connections stay open</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114135#M80407</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It would help a lot if you post you relevant configs&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 May 2012 06:01:05 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114135#M80407</guid>
      <dc:creator>ronald_van_kuij</dc:creator>
      <dc:date>2012-05-18T06:01:05Z</dc:date>
    </item>
    <item>
      <title>Re: Database connections stay open</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114136#M80408</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I did not show the configuration in the first post because I did not think the answers to my questions were configuration specific.&amp;nbsp; I apologize for that assumption.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the activiti.cfg.xml file I used.&amp;nbsp; The commented out parts are used for testing with databases on different servers.&amp;nbsp; Only one is uncommented for a test.&amp;nbsp; As you can see, I ran with the database on LUSR1506 for the last test.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the SQL Server 2008 Express database.&amp;nbsp; One database is on the same machine on which I ran the Process Engine, the others are on the local area network and on the wide area network.&amp;nbsp; The database connections remaining open occurred no matter which database server I used.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I run the test as a Java Application within Eclipse Indigo Service Release 2 on LUSR1315, under Window 7 Professional OS. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;activiti.cfg.xml:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;beans xmlns="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;" &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi="&lt;A href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/A&gt;"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="&lt;A href="http://www.springframework.org/schema/beans" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans&lt;/A&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.springframework.org/schema/beans/spring-beans.xsd" rel="nofollow noopener noreferrer"&gt;http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="databaseSchemaUpdate" value="false"/&amp;gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR0989 –&amp;gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR0989:1433/Workflow_DB1" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="yyyyyyyyyyyy" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="zzzzzzzzzzzz" /&amp;gt;&lt;BR /&gt; –&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR1506 –&amp;gt;&lt;BR /&gt; &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR1506:1433/Workflow_DB1" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="yyyyyyyyyyyy" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="zzzzzzzzzzzz" /&amp;gt;&lt;BR /&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Use these values for LUSR1315 –&amp;gt;&lt;BR /&gt;&amp;lt;!– &amp;lt;property name="jdbcUrl" value="jdbc:jtds:sqlserver://LUSR1315:1433/Activiti_DB" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcDriver" value="net.sourceforge.jtds.jdbc.Driver"/&amp;gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcUsername" value="jjjjjjjjjjjj" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jdbcPassword" value="kkkkkkkkkkkk" /&amp;gt;&lt;BR /&gt; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="jobExecutorActivate" value="true" /&amp;gt;&lt;BR /&gt;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;lt;/beans&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;SPAN&gt;The db.properties files are as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; db=h2&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.driver=org.h2.Driver&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.url=jdbc:h2:tcp://localhost/activiti&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.username=sa&lt;BR /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; jdbc.password=&lt;BR /&gt;db=mssql&lt;BR /&gt;jdbc.driver=net.sourceforge.jtds.jdbc.Driver&lt;BR /&gt;jdbc.url=jdbc:jtds:sqlserver://LUSR1506:1433/Workflow-DB1&lt;BR /&gt;jdbc.username=yyyyyyyyyyyy&lt;BR /&gt;jdbc.password=zzzzzzzzzzzz&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a single class that interfaces with the Process Engine.&amp;nbsp; All classes needing a Process Engine call this one.&amp;nbsp; Here are relevant parts of that class, ProcEngController.java.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;CODE&gt;&lt;BR /&gt;package com.argo.wfProj1;&lt;BR /&gt;&lt;BR /&gt;import java.util.ArrayList;&lt;BR /&gt;import java.util.Calendar;&lt;BR /&gt;import java.util.Date;&lt;BR /&gt;import java.util.Hashtable;&lt;BR /&gt;import java.util.List;&lt;BR /&gt;import java.util.ListIterator;&lt;BR /&gt;&lt;BR /&gt;import org.activiti.engine.ActivitiException;&lt;BR /&gt;import org.activiti.engine.ProcessEngine;&lt;BR /&gt;import org.activiti.engine.ProcessEngineConfiguration;&lt;BR /&gt;import org.activiti.engine.ProcessEngines;&lt;BR /&gt;import org.activiti.engine.history.HistoricActivityInstance;&lt;BR /&gt;import org.activiti.engine.history.HistoricProcessInstance;&lt;BR /&gt;import org.activiti.engine.identity.Group;&lt;BR /&gt;import org.activiti.engine.identity.User;&lt;BR /&gt;import org.activiti.engine.repository.ProcessDefinition;&lt;BR /&gt;import org.activiti.engine.runtime.ProcessInstance;&lt;BR /&gt;&lt;BR /&gt;import org.apache.log4j.Logger;&lt;BR /&gt;&lt;BR /&gt;public class ProcEngController &lt;BR /&gt;{&lt;BR /&gt; private Logger logger = Logger.getLogger(ProcEngController.class);&lt;BR /&gt; &lt;BR /&gt; private ProcessEngine myProcessEngine;&lt;BR /&gt; &lt;BR /&gt; public ProcEngController() throws Throwable&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.constructor() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; initTheEngine();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; private void initTheEngine() throws Throwable&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.initTheEngine() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; myProcessEngine = &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcessEngineConfiguration&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessEngineConfigurationFromResource("activiti.cfg.xml")&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .buildProcessEngine();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.info("In ProcEngController.initTheEngine() " + "built Process Engine.");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; catch(ActivitiException ae)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.fatal("In initTheEngine() caught ActivitiException trying "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "to buid the process engine.&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , ae);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; ae.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; throw new Exception("Caught AcvtivitiException in "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "ProcEngController.initTheEngine()."&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +"&amp;nbsp; Could not buildProcessEngine().");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; catch(Throwable th)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; logger.fatal("In ProcEngController.initTheEngine() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Trowable trying to "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "buid the process engine.&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , th);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; StackTraceElement[] ste = th.getStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt; ste.length; i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String oneSTElement = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oneSTElement = (String) ste[i].toString();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.fatal(oneSTElement);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(i == 10)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; th.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; throw new Exception&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ("Caught Throwable in ProcEngController.initTheEngine() "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Could not buildProcessEngine().");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; public void destroy()&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.destroy() was called.");&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; ProcessEngines.destroy();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.destroy() called "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "ProcessEngines.destroy().");&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; &lt;BR /&gt; protected boolean verifyIdIsOkay(String theRequestedUserId) &lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; boolean idIsOkay = false;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; if(&amp;nbsp;&amp;nbsp;&amp;nbsp; theRequestedUserId != null&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; theRequestedUserId.length() &amp;gt; 0)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String theFoundUserId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; theFoundUserId = myProcessEngine&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getIdentityService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createUserQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .userId(theRequestedUserId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .singleResult()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; catch(Exception e2)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; theFoundUserId = "";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("In ProcEngController.verifyIdIsOkay() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "Exception trying to find theRequestedUserId \""&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + theRequestedUserId&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ".&amp;nbsp; Exception was "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , e2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The Process Engine throws an exception if the userId &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // cannot be found; it probably should handle the condition&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // more cleanly than that.&amp;nbsp; We do not need to trace the &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // situation here.&lt;BR /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.printStackTrace();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; if(theFoundUserId != null &amp;amp;&amp;amp; theFoundUserId.length() &amp;gt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; idIsOkay = true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; idIsOkay = false;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; idIsOkay = false;&lt;BR /&gt;&amp;nbsp; } &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; logger.info("In ProcEngController.varifyIdIsOkay() looking for "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "theRequestedUserId = \""&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + theRequestedUserId&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "\", and found idIsOkay = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + idIsOkay);&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return idIsOkay;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt; protected Hashtable&amp;lt;Integer, ProcDefData&amp;gt; findAllProcesses()&lt;BR /&gt; {&amp;nbsp; &lt;BR /&gt;&amp;nbsp; Hashtable&amp;lt;Integer, ProcDefData&amp;gt; allProcDefsInfo = new Hashtable&amp;lt;Integer, ProcDefData&amp;gt;();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; List&amp;lt;ProcessDefinition&amp;gt; procDefsList = myProcessEngine&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getRepositoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessDefinitionQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByProcessDefinitionName()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .orderByProcessDefinitionVersion()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .asc()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .list();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; for(int i = 0; i &amp;lt; procDefsList.size(); i++)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ProcessDefinition aProcDef = procDefsList.get(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deployId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefId = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefKey = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefName = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; Integer procDefVersion = new Integer("-1");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefCategory = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; String procDefDiagram = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deployId = aProcDef.getDeploymentId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefId = aProcDef.getId();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefKey = aProcDef.getKey();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefName = aProcDef.getName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefVersion = new Integer(aProcDef.getVersion());&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefCategory = aProcDef.getCategory();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefDiagram = aProcDef.getDiagramResourceName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; ProcDefData procDefData = new ProcDefData();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeployId(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefCategory(procDefCategory);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefId(procDefId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefKey(procDefKey);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefName(procDefName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefVersion(procDefVersion);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setProcDefDiagramName(procDefDiagram);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Find the deployment name&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deploymentName = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deploymentName = findDeploymentName(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeploymentName(deploymentName);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; String deploymentDate = new String();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; deploymentDate = findDeploymentDate(deployId);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; procDefData.setDeploymentDate(deploymentDate);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; Integer seqNbr = new Integer(i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; allProcDefsInfo.put(seqNbr, procDefData);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return allProcDefsInfo;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; protected String findProcDefName(String procDefId)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; String procDefName = new String();&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; procDefName = myProcessEngine.getRepositoryService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .createProcessDefinitionQuery()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .processDefinitionId(procDefId)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .singleResult()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getName();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return procDefName;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;… &lt;BR /&gt; protected ProcessInstance startAProcess(String processIdToStart,int cycle, int countInCycle)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; logger.info("ProcEngController.startAProcess was called to "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "start processId = " + processIdToStart + ".&amp;nbsp; Cycle = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + cycle + " and count in cycle = " + countInCycle);&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; ProcessInstance theProcInstance = null;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; int startAProcessRetryLimit = 6;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; int startsTried = 0;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; // Put starting a process in a loop so we can easily retry it if it&lt;BR /&gt;&amp;nbsp; // fails the first time.&lt;BR /&gt;&amp;nbsp; for(startsTried = 0; startsTried &amp;lt; startAProcessRetryLimit; startsTried++)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theProcInstance = &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myProcessEngine.getRuntimeService()&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .startProcessInstanceById(processIdToStart);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If starting process does not catch an exception, it worked;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // so get out of the retry loop.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.info("ProcEngController.startAProcess() started process "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + processIdToStart &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + " when startsTried = " + startsTried&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + " in thread "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Thread.currentThread().getName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; startsTried = startAProcessRetryLimit;&amp;nbsp; // Get out of loop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; catch(Throwable th)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("ProcEngController.startAProcess() startsTried = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + startsTried&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ", caught throwable "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "trying to start " + processIdToStart &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "in thread "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Thread.currentThread().getName(), th); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If trying to start the process catches a throwable, log it "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and retry starting the process after waiting a few seconds.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(5000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception e)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.error("ProcEngController.startAProcess() caught "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "exception trying to pause before "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "attempting again to start "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + processIdToStart&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + ".&amp;nbsp; startsTried = "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + startsTried, e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Make sure the conditional part of the for() statement&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // prevents an infinite loop of start-exceptions here.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The automatic incrementing of startsTried should &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // prevent the infinite loop.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; return theProcInstance;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;…&lt;BR /&gt; &lt;BR /&gt; protected void setAuthenticatedUserId(String theUserId)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; myProcessEngine.getIdentityService().setAuthenticatedUserId(theUserId);&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;}&lt;BR /&gt;&lt;/CODE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Please let me know if you need anything else to answer my questions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you in advance for your continued help.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 May 2012 14:26:06 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/database-connections-stay-open/m-p/114136#M80408</guid>
      <dc:creator>ct1</dc:creator>
      <dc:date>2012-05-18T14:26:06Z</dc:date>
    </item>
  </channel>
</rss>

