Olá Pessoal,
Andei lendo algumas referencias sobre ThreadLocal e vi inclusive que existe um plugin para o Vraptor para identificar o uso do mesmo, ou seja não é bem vindo 
Vi que algumas pessoas, inclusive o Guilherme Silveira não recomenda o uso, daí eu pergunto seria o uso indiscriminado, ou uso geral mesmo?
Por exemplo, imagine a situação onde eu tenha que passar dados entre camadas (Exemplo toda alteracao no banco de dados precisa gravar o usuario logado):
Cenário:
Controller -> Service -> DAO
Não vamos entrar em detalhe se eu preciso ou nao da camada Service, vamos assumir que sim eu preciso.
No controller eu vou chamar o Service, método atualizarCliente que por sua vez chama o DAO atualizarCliente
Assinaturas sem uso de ThreadLocal
Service - atualizarCliente(Cliente cliente, Usuario usuario)
DAO - atualizarCliente(Cliente cliente, Usuario usuario)
Se eu utilizar ThreadLocal eu poderia eliminar a passagem do Usuario como parâmetro.
Se formos levar em consideracao poucos metodos nao seria problematico, mas para muitas classes e muitos metodos acaba poluindo. O que acham?
Qual seria uma solucao mais elegante sem o uso de ThreadLocal?
Obrigado