[jbpm-commits] JBoss JBPM SVN: r3665 - in jbpm3/trunk/modules: enterprise/scripts and 6 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Jan 17 07:41:08 EST 2009
Author: alex.guizar at jboss.com
Date: 2009-01-17 07:41:08 -0500 (Sat, 17 Jan 2009)
New Revision: 3665
Added:
jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/
jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
Removed:
jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java
jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java
jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java
jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml
Log:
fix intermittent failure in JtaDbPersistenceTest
generalize enterprise module
remove unnecessary references in web descriptors
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -34,7 +34,6 @@
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
-import org.hibernate.exception.SQLGrammarException;
import org.jbpm.JbpmException;
import org.jbpm.graph.def.Node;
import org.jbpm.graph.def.ProcessDefinition;
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -149,17 +149,21 @@
}
}
- public List<Job> loadJobs(long[] jobIds) {
- int jobCount = jobIds.length;
- Long[] jobs = new Long[jobCount];
- for (int i = 0; i < jobCount; i++) {
- jobs[i] = new Long(jobIds[i]);
- }
+ public List<Job> loadJobs(long... jobIds) {
Criteria criteria = session.createCriteria(Job.class)
- .add(Restrictions.in("id", jobs));
+ .add(Restrictions.in("id", toObjectArray(jobIds)));
return CollectionUtil.checkList(criteria.list(), Job.class);
}
+ private static Long[] toObjectArray(long[] array) {
+ final int length = array.length;
+ Long[] objects = new Long[length];
+ for (int i = 0; i < length; i++) {
+ objects[i] = array[i];
+ }
+ return objects;
+ }
+
public Job getJob(long jobId) {
try {
return (Job) session.get(Job.class, new Long(jobId));
Modified: jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml 2009-01-17 12:41:08 UTC (rev 3665)
@@ -21,15 +21,7 @@
<mkdir dir="${tests.output.dir}/test-libs"/>
<!-- enterprise-test -->
- <war warfile="${tests.output.dir}/test-libs/enterprise-test.war" webxml="${tests.resources.dir}/enterprise/WEB-INF/web.xml">
- <classes dir="${tests.output.dir}/classes">
- <include name="org/jbpm/ejb/RemoteCommandServiceHome.class"/>
- <include name="org/jbpm/ejb/RemoteCommandService.class"/>
- <include name="org/jbpm/ejb/TimerEntityHome.class"/>
- <include name="org/jbpm/ejb/TimerEntity.class"/>
- <include name="org/jbpm/msg/jms/JmsMessageServiceFactory.class"/>
- <include name="org/jbpm/scheduler/ejbtimer/EntitySchedulerServiceFactory.class"/>
- </classes>
+ <war warfile="${tests.output.dir}/test-libs/enterprise-test.war" webxml="${tests.resources.dir}/WEB-INF/web.xml">
<classes dir="${tests.output.dir}/test-classes">
<include name="org/jbpm/enterprise/config/AppServerConfigurationsTest.class"/>
<include name="org/jbpm/enterprise/ejbtimer/EjbSchedulerTest*.class"/>
@@ -41,7 +33,7 @@
<include name="cactus*.jar"/>
<include name="junit*.jar"/>
</lib>
- <webinf dir="${tests.resources.dir}/enterprise/WEB-INF">
+ <webinf dir="${tests.resources.dir}/WEB-INF">
<exclude name="web.xml"/>
</webinf>
</war>
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -8,12 +8,13 @@
public interface LocalTimerEntityHome extends EJBLocalHome {
- public LocalTimerEntity create() throws CreateException;
+ public LocalTimerEntity create() throws CreateException;
- public LocalTimerEntity findByPrimaryKey(Long timerId) throws FinderException;
+ public LocalTimerEntity findByPrimaryKey(Long timerId) throws FinderException;
- public Collection findByNameAndTokenId(String name, Long tokenId)
- throws FinderException;
+ public Collection<LocalTimerEntity> findByNameAndTokenId(String name, Long tokenId)
+ throws FinderException;
- public Collection findByProcessInstanceId(Long processInstanceId) throws FinderException;
+ public Collection<LocalTimerEntity> findByProcessInstanceId(Long processInstanceId)
+ throws FinderException;
}
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -7,13 +7,14 @@
import javax.ejb.EJBHome;
import javax.ejb.FinderException;
-public interface TimerEntityHome extends EJBHome
-{
+public interface TimerEntityHome extends EJBHome {
public TimerEntity create() throws CreateException, RemoteException;
public TimerEntity findByPrimaryKey(Long timerId) throws FinderException, RemoteException;
- public Collection findByNameAndTokenId(String name, Long tokenId) throws FinderException, RemoteException;
+ public Collection<TimerEntity> findByNameAndTokenId(String name, Long tokenId)
+ throws FinderException, RemoteException;
- public Collection findByProcessInstanceId(Long processInstanceId) throws FinderException, RemoteException;
+ public Collection<TimerEntity> findByProcessInstanceId(Long processInstanceId)
+ throws FinderException, RemoteException;
}
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -138,7 +138,7 @@
{
try
{
- String resource = lookup("java:comp/env/JbpmCfgResource");
+ String resource = lookup(String.class, "java:comp/env/JbpmCfgResource");
jbpmConfiguration = resource != null ? JbpmConfiguration.getInstance(resource)
: JbpmConfiguration.getInstance();
}
@@ -149,12 +149,12 @@
}
}
- private static <T> T lookup(String name) throws NamingException
+ private static <T> T lookup(Class<T> type, String name) throws NamingException
{
Context initial = new InitialContext();
try
{
- return (T) initial.lookup(name);
+ return type.cast(initial.lookup(name));
}
finally
{
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -23,7 +23,6 @@
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.util.Arrays;
import java.util.List;
import javax.jms.Destination;
@@ -71,21 +70,20 @@
}
lockOwner = Long.toString(jobId);
if (job.isExclusive()) {
- List exclusiveJobs = jobSession.findExclusiveJobs(lockOwner, job.getProcessInstance());
+ List<Job> exclusiveJobs = jobSession.findExclusiveJobs(lockOwner, job.getProcessInstance());
// lock exclusive jobs
- int jobCount = exclusiveJobs.size();
- if (jobCount == 0) {
+ if (exclusiveJobs.isEmpty()) {
// may happen if isolation level is below repeatable read
log.debug(job + " was locked during attempt to lock other jobs");
return null;
}
- long[] exclusiveJobIds = new long[jobCount];
- for (int i = 0; i < jobCount; i++) {
- Job exclusiveJob = (Job) exclusiveJobs.get(i);
+ long[] exclusiveJobIds = new long[exclusiveJobs.size()];
+ int i = 0;
+ for (Job exclusiveJob : exclusiveJobs) {
exclusiveJob.setLockOwner(lockOwner);
- exclusiveJobIds[i] = exclusiveJob.getId();
+ exclusiveJobIds[i++] = exclusiveJob.getId();
}
- log.debug("locking jobs " + Arrays.toString(exclusiveJobIds));
+ log.debug("locking jobs " + exclusiveJobIds);
// execute exclusive jobs in separate transaction
postJobsExecution(jbpmContext, exclusiveJobIds);
}
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -22,7 +22,6 @@
package org.jbpm.ejb.impl;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
import org.apache.commons.logging.Log;
@@ -48,9 +47,8 @@
public Object execute(JbpmContext jbpmContext) throws Exception {
log.debug("executing jobs " + Arrays.toString(jobIds));
- List jobs = jbpmContext.getJobSession().loadJobs(jobIds);
- for (Iterator i = jobs.iterator(); i.hasNext();) {
- Job job = (Job) i.next();
+ List<Job> jobs = jbpmContext.getJobSession().loadJobs(jobIds);
+ for (Job job : jobs) {
job.execute(jbpmContext);
}
return null;
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,7 +1,6 @@
package org.jbpm.ejb.impl;
import java.util.Collection;
-import java.util.Iterator;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
@@ -22,16 +21,15 @@
import org.jbpm.job.Timer;
import org.jbpm.scheduler.ejbtimer.ExecuteTimerCommand;
import org.jbpm.scheduler.ejbtimer.TimerInfo;
+import org.jbpm.util.CollectionUtil;
/**
* Entity bean that interacts with the EJB timer service to schedule jBPM {@linkplain Timer timers}.
- *
* <h3>Environment</h3>
- *
* <p>
- * The environment entries and resources available for customization are summarized in the table below.
+ * The environment entries and resources available for customization are summarized in the table
+ * below.
* </p>
- *
* <table border="1">
* <tr>
* <th>Name</th>
@@ -41,7 +39,8 @@
* <tr>
* <td><code>ejb/LocalCommandServiceBean</code></td>
* <td>EJB Reference</td>
- * <td>Link to the local {@linkplain CommandServiceBean session bean} that executes timers on a separate jBPM context.</td>
+ * <td>Link to the local {@linkplain CommandServiceBean session bean} that executes timers on a
+ * separate jBPM context.</td>
* </tr>
* </table>
*
@@ -49,8 +48,7 @@
* @author Alejandro Guizar
* @author Fady Matar
*/
-public abstract class TimerEntityBean implements EntityBean, TimedObject
-{
+public abstract class TimerEntityBean implements EntityBean, TimedObject {
private EntityContext entityContext;
private LocalCommandService commandService;
@@ -77,49 +75,39 @@
public abstract void setDiscriminator(String discriminator);
- public void ejbActivate()
- {
- try
- {
+ public void ejbActivate() {
+ try {
Context initial = new InitialContext();
- LocalCommandServiceHome commandServiceHome = (LocalCommandServiceHome)initial.lookup("java:comp/env/ejb/LocalCommandServiceBean");
+ LocalCommandServiceHome commandServiceHome = (LocalCommandServiceHome) initial.lookup("java:comp/env/ejb/LocalCommandServiceBean");
commandService = commandServiceHome.create();
}
- catch (NamingException e)
- {
+ catch (NamingException e) {
throw new EJBException("failed to retrieve command service home", e);
}
- catch (CreateException e)
- {
+ catch (CreateException e) {
throw new EJBException("command service creation failed", e);
}
}
- public void ejbPassivate()
- {
+ public void ejbPassivate() {
commandService = null;
}
- public void ejbRemove()
- {
+ public void ejbRemove() {
commandService = null;
}
- public void ejbLoad()
- {
+ public void ejbLoad() {
}
- public void ejbStore()
- {
+ public void ejbStore() {
}
- public void setEntityContext(EntityContext entityContext)
- {
+ public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}
- public void unsetEntityContext()
- {
+ public void unsetEntityContext() {
entityContext = null;
}
@@ -128,49 +116,41 @@
*
* @throws CreateException
*/
- public Long ejbCreate() throws CreateException
- {
+ public Long ejbCreate() throws CreateException {
throw new CreateException("direct creation of timer entities is prohibited");
}
- public void ejbPostCreate()
- {
+ public void ejbPostCreate() {
}
- public void ejbTimeout(javax.ejb.Timer ejbTimer)
- {
+ public void ejbTimeout(javax.ejb.Timer ejbTimer) {
log.debug(ejbTimer + " fired");
- TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
- Timer timer = (Timer)commandService.execute(new ExecuteTimerCommand(timerInfo.getTimerId()));
+ TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+ Timer timer = (Timer) commandService.execute(new ExecuteTimerCommand(timerInfo.getTimerId()));
// if the timer has repeat
- if (timer.getRepeat() != null)
- {
+ if (timer.getRepeat() != null) {
// create a new timer
log.debug("scheduling timer for repeat on " + timer.getDueDate());
createTimer(timer);
}
}
- public void createTimer(org.jbpm.job.Timer timer)
- {
+ public void createTimer(org.jbpm.job.Timer timer) {
TimerService timerService = entityContext.getTimerService();
javax.ejb.Timer ejbTimer = timerService.createTimer(timer.getDueDate(), new TimerInfo(timer));
log.debug("created " + ejbTimer);
}
- public void cancelTimer(org.jbpm.job.Timer timer)
- {
+ public void cancelTimer(org.jbpm.job.Timer timer) {
long timerId = timer.getId();
- Collection timers = entityContext.getTimerService().getTimers();
+ Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+ .getTimers(), javax.ejb.Timer.class);
log.debug("retrieved " + timers.size() + " ejb timer(s) by id " + timerId);
int count = 0;
- for (Iterator i = timers.iterator(); i.hasNext();)
- {
- javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
- TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
- if (timerInfo.getTimerId() == timerId)
- {
+ for (javax.ejb.Timer ejbTimer : timers) {
+ TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+ if (timerInfo.getTimerId() == timerId) {
ejbTimer.cancel();
++count;
}
@@ -178,18 +158,20 @@
log.debug("canceled " + count + " ejb timer(s) by id " + timerId);
}
- public void cancelTimersByName(String timerName, Token token)
- {
- Collection timers = entityContext.getTimerService().getTimers();
- log.debug("retrieved " + timers.size() + " ejb timer(s) by name '" + timerName + "' for " + token);
+ public void cancelTimersByName(String timerName, Token token) {
+ Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+ .getTimers(), javax.ejb.Timer.class);
+ log.debug("retrieved "
+ + timers.size()
+ + " ejb timer(s) by name '"
+ + timerName
+ + "' for "
+ + token);
int count = 0;
- for (Iterator i = timers.iterator(); i.hasNext();)
- {
- javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
- TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
- if (timerInfo.matchesName(timerName, token))
- {
+ for (javax.ejb.Timer ejbTimer : timers) {
+ TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+ if (timerInfo.matchesName(timerName, token)) {
ejbTimer.cancel();
++count;
}
@@ -197,18 +179,15 @@
log.debug("canceled " + count + " ejb timer(s) by name '" + timerName + "' for " + token);
}
- public void cancelTimersForProcessInstance(ProcessInstance processInstance)
- {
- Collection timers = entityContext.getTimerService().getTimers();
+ public void cancelTimersForProcessInstance(ProcessInstance processInstance) {
+ Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+ .getTimers(), javax.ejb.Timer.class);
log.debug("retrieved " + timers.size() + " timer(s) for " + processInstance);
int count = 0;
- for (Iterator i = timers.iterator(); i.hasNext();)
- {
- javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
- TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
- if (timerInfo.matchesProcessInstance(processInstance))
- {
+ for (javax.ejb.Timer ejbTimer : timers) {
+ TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+ if (timerInfo.matchesProcessInstance(processInstance)) {
ejbTimer.cancel();
++count;
}
Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,7 +1,6 @@
package org.jbpm.scheduler.ejbtimer;
import java.util.Collection;
-import java.util.Iterator;
import javax.ejb.FinderException;
@@ -63,12 +62,11 @@
public void deleteTimersByName(String timerName, Token token) {
try {
- Collection timerEntities = timerEntityHome.findByNameAndTokenId(timerName, new Long(token.getId()));
+ Collection<LocalTimerEntity> timerEntities = timerEntityHome.findByNameAndTokenId(timerName, new Long(token.getId()));
log.debug("found " + timerEntities.size() + " timer entities by name '" + timerName + "' for " + token);
- for (Iterator i = timerEntities.iterator(); i.hasNext();) {
- LocalTimerEntity timerEntity = (LocalTimerEntity) i.next();
- timerEntity.cancelTimersByName(timerName, token);
- }
+ for (LocalTimerEntity timerEntity : timerEntities) {
+ timerEntity.cancelTimersByName(timerName, token);
+ }
}
catch (FinderException e) {
log.error("failed to retrieve timer entities by name '" + timerName + "' for " + token, e);
@@ -78,12 +76,11 @@
public void deleteTimersByProcessInstance(ProcessInstance processInstance) {
try {
- Collection timerEntities = timerEntityHome.findByProcessInstanceId(new Long(processInstance.getId()));
+ Collection<LocalTimerEntity> timerEntities = timerEntityHome.findByProcessInstanceId(new Long(processInstance.getId()));
log.debug("found " + timerEntities.size() + " timer entities for " + processInstance);
- for (Iterator i = timerEntities.iterator(); i.hasNext();) {
- LocalTimerEntity timerEntity = (LocalTimerEntity) i.next();
- timerEntity.cancelTimersForProcessInstance(processInstance);
- }
+ for (LocalTimerEntity timerEntity : timerEntities) {
+ timerEntity.cancelTimersForProcessInstance(processInstance);
+ }
}
catch (FinderException e) {
log.error("failed to retrieve timer entities for " + processInstance, e);
Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java 2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java 2009-01-17 12:41:08 UTC (rev 3665)
@@ -21,6 +21,10 @@
*/
package org.jbpm.enterprise.jta;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
@@ -98,8 +102,8 @@
}
private long deployProcess() throws Exception {
- ProcessDefinition definition = (ProcessDefinition) commandService
- .execute(new DeployProcessCommand("<process-definition name='tx'>"
+ ProcessDefinition definition = (ProcessDefinition) commandService.execute(new DeployProcessCommand(
+ "<process-definition name='tx'>"
+ " <start-state name='start'>"
+ " <transition to='midway' />"
+ " </start-state>"
@@ -112,8 +116,7 @@
}
private long launchProcess(long definitionId) throws Exception {
- ProcessInstance instance = (ProcessInstance) commandService
- .execute(new StartProcessInstanceCommand().processDefinitionId(definitionId));
+ ProcessInstance instance = (ProcessInstance) commandService.execute(new StartProcessInstanceCommand().processDefinitionId(definitionId));
return instance.getId();
}
@@ -131,13 +134,32 @@
}
private boolean hasEnded(long instanceId) throws Exception {
- ProcessInstance instance = (ProcessInstance) commandService
- .execute(new GetProcessInstanceCommand(instanceId));
+ ProcessInstance instance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
+ instanceId));
return instance.hasEnded();
}
private void deleteProcess(long definitionId) throws Exception {
- commandService.execute(new DeleteProcessDefinitionCommand(definitionId));
+ Command command = new DeleteProcessDefinitionCommand(definitionId);
+ // CleanUpProcessJob races against DeleteProcessDefinitionCommand
+ // JMS has built-in retry logic
+ Context initial = new InitialContext();
+ try {
+ ConnectionFactory jmsConnectionfactory = (ConnectionFactory) initial.lookup("java:comp/env/jms/JbpmConnectionFactory");
+ Destination commandQueue = (Destination) initial.lookup("java:comp/env/jms/CommandQueue");
+
+ Connection jmsConnection = jmsConnectionfactory.createConnection();
+ try {
+ Session jmsSession = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ jmsSession.createProducer(commandQueue).send(jmsSession.createObjectMessage(command));
+ }
+ finally {
+ jmsConnection.close();
+ }
+ }
+ finally {
+ initial.close();
+ }
}
private static LocalCommandServiceHome getCommandServiceHome() throws NamingException {
Copied: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF (from rev 3601, jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF)
Deleted: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/jboss-web.xml 2009-01-08 01:42:07 UTC (rev 3601)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml 2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE jboss-web PUBLIC
- "-//JBoss//DTD Web Application 2.4//EN"
- "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd" >
-<jboss-web>
-
- <resource-ref>
- <res-ref-name>jdbc/JbpmDataSource</res-ref-name>
- <jndi-name>java:/JbpmDS</jndi-name>
- </resource-ref>
-
- <resource-ref>
- <res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
- <jndi-name>java:JmsXA</jndi-name>
- </resource-ref>
-
- <ejb-ref>
- <ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
- <jndi-name>java:ejb/CommandServiceBean</jndi-name>
- </ejb-ref>
-
- <ejb-ref>
- <ejb-ref-name>ejb/TimerEntityBean</ejb-ref-name>
- <jndi-name>java:ejb/TimerEntityBean</jndi-name>
- </ejb-ref>
-
- <message-destination-ref>
- <message-destination-ref-name>jms/JobQueue</message-destination-ref-name>
- <jndi-name>queue/JbpmJobQueue</jndi-name>
- </message-destination-ref>
-</jboss-web>
\ No newline at end of file
Copied: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml (from rev 3633, jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/jboss-web.xml)
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml 2009-01-17 12:41:08 UTC (rev 3665)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jboss-web PUBLIC
+ "-//JBoss//DTD Web Application 2.4//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd" >
+<jboss-web>
+
+ <resource-ref>
+ <res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
+ <jndi-name>java:JmsXA</jndi-name>
+ </resource-ref>
+
+ <ejb-ref>
+ <ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
+ <jndi-name>java:jbpm/CommandServiceBean</jndi-name>
+ </ejb-ref>
+
+ <message-destination-ref>
+ <message-destination-ref-name>jms/CommandQueue</message-destination-ref-name>
+ <jndi-name>queue/JbpmCommandQueue</jndi-name>
+ </message-destination-ref>
+
+</jboss-web>
\ No newline at end of file
Modified: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/web.xml 2009-01-08 01:42:07 UTC (rev 3601)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml 2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,49 +1,29 @@
<?xml version="1.0"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
-
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector</url-pattern>
</servlet-mapping>
-
<ejb-ref>
<ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>org.jbpm.ejb.RemoteCommandServiceHome</home>
<remote>org.jbpm.ejb.RemoteCommandService</remote>
</ejb-ref>
-
- <ejb-ref>
- <ejb-ref-name>ejb/TimerEntityBean</ejb-ref-name>
- <ejb-ref-type>Entity</ejb-ref-type>
- <home>org.jbpm.ejb.TimerEntityHome</home>
- <remote>org.jbpm.ejb.TimerEntity</remote>
- </ejb-ref>
-
<resource-ref>
- <res-ref-name>jdbc/JbpmDataSource</res-ref-name>
- <res-type>javax.sql.DataSource</res-type>
- <res-auth>Container</res-auth>
- </resource-ref>
-
- <resource-ref>
<res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-
<message-destination-ref>
- <message-destination-ref-name>jms/JobQueue</message-destination-ref-name>
+ <message-destination-ref-name>jms/CommandQueue</message-destination-ref-name>
<message-destination-type>javax.jms.Queue</message-destination-type>
<message-destination-usage>Produces</message-destination-usage>
</message-destination-ref>
-
</web-app>
More information about the jbpm-commits
mailing list