Thank you for your answer.
I did as mentionned this:
Thread.sleep(5000);
ksession.dispose();
For a process that last around 1s. It works but has some drawbacks:
1) I have to be sure about the maximum duration of a process and it is impossible for some process.
2) Since the duration are approximative, I have to add some margins. I still get the exception if I dispose just before the end node.
3) The process ends later than it should.
However, this timer issue seems not to happen when launched in jBPM-console.