I am looking for some advice on how to structure large server side processes that need to run at a given point everyday. I have a year or so experience using EJB3 on JBoss 4.2.2(I know, but its not my decision to change it no matter how often I suggest upgrading) but so far have only had the need to use simple client-server requests.
I have found that the Quartz scheduler can be used for "cron like" tasks, so applying this to a message bean will allow me to start my daily batch process off. However, my main concern is that starting a large process, that will in turn have a large transaction, may cause my transactions to time out. Obviously I don't want to just keep setting the transaction time-out limit higher and higher as it will only hide the problem not solve it.
Applying @TransactionAttribute annotations can help me to some degree but I will lose my ability to roll back any changes if the process fails.
The initial plan was to use the NOT_SUPPOTED annotation to do the work and add a REQUIRES_NEW annotation to any method where data is acquired, changed or committed.
Does this have any major drawbacks?
Can I created multiple threaded processes in a message bean to help improve performance?
I know that nobody will be able to give me a definitive answer, but a bit of direction from somebody with experience would be greatly appreciated to break up the endless Google research.