HI,
1. Of course, it will be easier, but you cant retrieve the threadpoolexecutor of a WAS.
We are using a WAS because of the organization policy, but I am not convinced that this is safer/robust/scalable than a tomcat.
4. Two point for this :
Considering the use of Thread.sleep() / scheduling of task
If you a have only a limited number of threads to work with - 10, 3 will be allocated to retrieve the jobs and 7 will process the jobs.
If the queue is full, the 3 retrieving job will be sleeping instead of processing jobs.
Regulation of the load
I do not know - because I do not have testing enough - if the regulation will be better.
I have studied your "queue based async executor" of v6, and I think this a really good solution.
Indeed, we plan to use it : we want to split the execution of job by process to mitigate the risk.
Architecture will be something like :
* one oracle DB
* one server to retrieve jobs
* As many queues/JMS as processes definition
* at least one job executor per queues.
The only things that bother me, is that there is not enough abstraction, and the standard implementation & the jms executor one does not share the same interfaces/abstract class.
On the other hand, I understand the legacy and the need that the engine can be started with the less configuration possible.