Sto eseguendo un processo in un thread separato con un timeout, utilizzando un ExecutorService e un Future (codice di esempio here) (il thread "spawning" si svolge in un Aspetto AOP).Propagating ThreadLocal su un nuovo thread recuperato da un ExecutorService
Ora, il thread principale è una richiesta Resteasy. Resteasy usa una o più variabili ThreadLocal per memorizzare alcune informazioni di contesto che ho bisogno di recuperare ad un certo punto nella mia chiamata al metodo Rest. Il problema è che poiché il thread Resteasy è in esecuzione in un nuovo thread, le variabili ThreadLocal sono arelost.
Quale sarebbe il modo migliore per "propagare" qualsiasi variabile ThreadLocal utilizzata da Resteasy sul nuovo thread? Sembra che Resteasy usi più di una variabile ThreadLocal per tenere traccia delle informazioni sul contesto e vorrei trasferire "ciecamente" tutte le informazioni sul nuovo thread.
Ho esaminato la sottoclasse ThreadPoolExecutor
e utilizzando il metodo beforeExecute per passare il thread corrente al pool, ma non sono riuscito a trovare un modo per passare le variabili ThreadLocal al pool.
Qualche suggerimento?
Grazie
Potrebbe riscrivere un po ', secondo comma? Mi confonde. Inoltre, cosa c'è di sbagliato in beforeExecute? Non riuscivi a farlo funzionare correttamente o ti rendi conto che non è adatto alle tue esigenze? – toto2