Один простой способ, который я могу придумать, - это сохранить карту со ссылкой на Thread в качестве «ключа» и объектом Transaction в качестве «значения». Для потока без транзакции, созданной в прошлом, такого ключа на карте не будет, и поэтому реализация UserTransaction может принять решение об исключении.
Любая строка кода может знать, какой это поток по Thread.currentThread ().
Надеюсь, это поможет.
Спасибо,
Нитин