У меня есть переменная InheritableThreadLocal, которую я хочу передать другому дочернему потоку, выделенному пулом потоков контейнера EJB в результате вызова Async для общедоступного метода EJB. Родительский вызывающий абонент, инициирующий вызов Async, является ресурсом REST, который является автономным EJB. InheritableThreadLocal передает значение дочернему потоку только тогда, когда дочерний поток создается новым. Как только поток создается в пуле, он никогда не разрушает Thread до тех пор, пока сервер не отскочит.Передача переменной ThreadLocal в контейнер EJB Пул потоков
Учитывая приведенные выше факты, дочерняя нить для моего дела исходит из Threadpool, поддерживаемого контейнером EJB. Значение передачи InheritableThreadLocal для дочернего потока только тогда, когда Resource запускается в первый раз после запуска сервера или если новый поток, только что созданный в Threadpool, выделяется как дочерний поток. Во всех остальных случаях я получаю начальное значение, которое было назначено дочернему потоку из пула, когда Thread был создан и выделен в первый раз.
Я запускаю свой код в IBM WebSphere и передавая значение ThreadLocal в качестве параметра метода в вызове Async, не является опцией.
Как я могу переназначить значение ThreadLocal, чтобы для каждого запуска я мог получить текущее значение, назначенное дочернему потоку?
Я нашел приведенную ниже ссылку, которая несколько похожа, но для моего случая ThreadPool является тем, что обеспечивается контейнером EJB.
Propagating ThreadLocal to a new Thread fetched from a ExecutorService
Если вы не получили ответа, позвольте мне предложить добавить некоторые фрагменты кода, чтобы кто-то читал, чтобы убедиться, что они правильно следуют. –