We have a custom class loader that implements the IConnect interface. The class loader allows us to submit a request into TRIRIGA. It is set up according to the following IBM documentation (“Configuring servlet proxies“).
We have noticed an issue where sometimes, when user A is creating a request using the class loader, and at the same time, user B is calling TRIRIGA using SOAP calls (e.g. TRIRIGA CAD Integrator), the class loader assumes that it was user B making the call instead of A. We are easily able to replicate the issue using the steps below:
- 1. User A repeatedly submits request using the class loader.
- 2. User B uses the SOAP UI to make a simple runNamedQuery SOAP call.
- 3. Request created by User A will have User B listed as the Assignee and Auto Recorded By.
This is resulting in a lot of issues, because users are seeing requests in their queue that they never even created.
The issue is that the Connector for Business Applications (CBA) session management logic is not cleaning the thread local values after CBA completes the process. This leads to a situation where the custom class loader can pick up a thread used by a SOAP request at a later point, and the thread local variables will have the incorrect session values. The fix is to clean the thread locals after they are used by a SOAP request in CBA. We resolved an issue where custom class loader calls and CBA SOAP requests that were running simultaneously occasionally caused session user conflicts.