NOTE This decision can be deferred until Spring 3.1 ships with the iBatis 3.x configuration support. The iBatis 3.x support will be tackled in this issue
Spring provides a fully fledged infrastructure to run JAVA based application in a standalone and JEE server environment with special support for the most common application servers like Websphere, Weblogic. The most important infrastructure implementation and their benefits for Activiti will be outlines below.
Some JEE Application servers disallow the creation of native Threads while running a application inside the server. It is mandatory to use the vendor specific APIs to create "managed" threads. Spring has an built-in abstraction Task abstraction that allows to run tasks (which are essentially Runnables) with different implementations like a java.util.concurrent.Executor for standalone environments and a CommonJ based implementation for Websphere and Weblogic.
Activiti uses native Threads like org.activiti.impl.jobexecutor.JobAcquisitionThread which must be converted to a Runnable instance. There is also a new abstraction needed to run Runnable instances with different implementations (for the beginning a java.util.concurrent.Executor one and a Spring based one).