Yes, creating a new LocalTaskService instance inside each method where I use it does seem to do the trick, so it does seem to be the source of the concurrency error. At least based on some quick testing, I seem to be able to construct it using a singleton instance of org.jbpm.task.service.TaskService. Next step is to optimize a bit by creating only one per request as you suggested.
Any other similar issues I should be looking out for? I am still trying to figure out a good workaround for the StatefulKnowledgeSession thread safety issue. I'm a bit concerned that all these thread safety issues, as the app I am working on is expected to eventually scale up fairly high.
Thanks,
Jon