Piotr Karwasz created LOG4J2-3427:
-------------------------------------
Summary: ServiceLoader usage in a servlet environment
Key: LOG4J2-3427
URL: https://issues.apache.org/jira/browse/LOG4J2-3427
Project: Log4j 2
Issue Type: Improvement
Reporter: Piotr Karwasz
Assignee: Piotr Karwasz
It is fair to assume that a servlet container like Tomcat might contain
multiple copies of Log4j 2.x:
* a copy of Log4j 2.x can be used as logging provider for the entire server,
* each web application can contain another copy of Log4j 2.x
One of the shortcomings of {{ServiceLoader}} is that it detects services in
both the web application's and server's classloader, but only those in the web
application are usable: those in the server's classloader can not extend the
service class contained in the application's classloader.
A typical usage of {{ServiceLoader}} to find all instances of a certain service
can therefore end up in a {{{}ServiceConfigurationError{}}}. Those are caught
in Log4j 2.x, but usually end up in all services (also the viable ones) being
{*}discarded{*}.
Hence a tool is necessary to only discard those services, which are contained
in the server's classloader.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)