Para la primera pregunta, no hay problema siempre que elimine las variables de ThreadLocal al final de cada llamada. Esto es importante porque los contenedores (servlet o ejb) típicamente subprocesos del usuario y, por lo tanto, reutilización de subprocesos, esto tiene dos efectos: una "llamada" puede ver información de subprocesos proveniente de una llamada anterior, y si elimina una aplicación del contenedor sin detener la JVM es posible que algunas clases no se recojan como basura porque aún se hace referencia a ellas por una cadena de contenedores. Así que coloque datos en un threadlocal en un bloque try/finally y elimínelos en la parte finally.
Aquí está un post que muestra una manera de manejar el problema: ThreadLocal in web applications
Para la segunda pregunta como datos es ThreadLocal no vendrá con una llamada remota, hay que añadir un parámetro para las interfaces, extraer ThreadLocal datos sobre un lado y se recrean en el otro lado ...
Gracias.Básicamente estoy agregando capacidades multilingües a una aplicación ee existente, sin tener que modificar gran parte del código. Estableceré el idioma información en la sesión HTTP y luego usar esa información en la sesión HTTP para establecer el valor en 'ThreadLocal'. Entonces tendrá que identificar un lugar en la aplicación (HTTPFilter quizás) que se llama antes de cada solicitud y establecer el valor en 'ThreadLocal 'de HTTPSession. Esto asegurará que esté disponible en EJB, que eventualmente se pasará como un parámetro de base de datos. –
Esto asegurará que incluso si no lo elimino, se sobrescribirá cada vez. Gracias por tu respuesta. –