Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.0.4
-
None
-
Operating System: other
Platform: Other
-
36927
Description
I separated this request from 35774 as it seems to provide a viable and easy
solution to a big number of ClassLoader-related problems of using JCL in shared
environments. The solution relies on having an option (configured via system
properties) to disable TCCL usage and only use LogFactory's ClassLoader. When
TCCL is disabled, logger implementation and caching should be performed in the
JCL's ClassLoader only (cache will be reduced to a single record). This would
remove any memory leak issues as well as other inconsitencies (see 35774 for
some samples).
There're two main scenarios how JCL is used in the shared environment: a)
deployed in the shared class loader (shared for Tomcat and UCL for JBoss), b)
deployed in the application's class loader in the child-first ClassLoader
setup. In both cases this solution works well and disabled TCCL could even be a
reasonable default (though it depends on other uses). In case of deployment
within application's classloader (case [b]), two versions of JCL can coexist
redirecting logs for the application's classes to application's LogFactory
instance and shared classes to shared LogFactory.