I have a Seam component that will receive a large amount of incoming data, process it and insert or update the database. The method that gets called once the file has been posted (using s:fileUpload) is annotated @Asynchronous, so it will be executed in its own thread and context. The entire file must be processed in one single transaction, it cannot be splitted in several smaller transactions in any way. Also, I do require transaction-support since it must be possible to roll back all changes if a part of the file cannot be processed.
Now, this data import may take a quite a long time. Usually several hours. Currently the transaction times out, which I guess can be solved using the @TransationTimeout-value. But is this really the best way to solve this? Should I use jBPM instead and how would I do then? Or is there any other method for solving this?