Querying a list of jobs on a server using EJBs
Your @Stateless service contains a shared state. It looks weird for me.
You never modify a state of jobs, you always create a new object

this.jobs = Collections.synchronizedSet(new HashSet&lt;String&gt;());


Could you please clarify why ?
From synchronization standpoint you have a race condition in setJobs method, so it should be synchronized.
Now, since your write operation (setJobs method) is protected by the intrinsic lock, all read operations should be also protected by the same lock to ensure data visibility. Make isJobCancelled synchronized too.