public class JndiContextSelector extends Object implements NamedContextSelector
java:comp/env
context. In
EJBs, each enterprise bean (albeit not each application) has its own context relative to the
java:comp/env
context. An env-entry
in a deployment descriptor provides the information to
the JNDI context. Once the env-entry
is set, a repository selector can query the JNDI application
context to look up the value of the entry. The logging context of the web-application will depend on the value the
env-entry. The JNDI context which is looked up by this class is java:comp/env/log4j/context-name
.
Here is an example of an env-entry
:
<env-entry> <description>JNDI logging context name for this app</description> <env-entry-name>log4j/context-name</env-entry-name> <env-entry-value>aDistinctiveLoggingContextName</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
If multiple applications use the same logging context name, then they will share the same logging context.
You can also specify the URL for this context's configuration resource. This repository selector (ContextJNDISelector) will use this resource to automatically configure the log4j repository.
<env-entry> <description>URL for configuring log4j context</description> <env-entry-name>log4j/configuration-resource</env-entry-name> <env-entry-value>urlOfConfigurationResource</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
It usually good practice for configuration resources of distinct applications to have distinct names. However, if this is not possible Naming
Constructor and Description |
---|
JndiContextSelector() |
Modifier and Type | Method and Description |
---|---|
LoggerContext |
getContext(String fqcn,
ClassLoader loader,
boolean currentContext)
Returns the LoggerContext.
|
LoggerContext |
getContext(String fqcn,
ClassLoader loader,
boolean currentContext,
URI configLocation)
Returns the LoggerContext.
|
List<LoggerContext> |
getLoggerContexts()
Returns a List of all the available LoggerContexts.
|
LoggerContext |
locateContext(String name,
Object externalContext,
URI configLocation)
Locate the LoggerContext with the specified name.
|
void |
removeContext(LoggerContext context)
Remove any references to the LoggerContext.
|
LoggerContext |
removeContext(String name)
Locate the LoggerContext with the specified name using the default configuration.
|
public JndiContextSelector()
public LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext)
ContextSelector
getContext
in interface ContextSelector
fqcn
- The fully qualified class name of the caller.loader
- ClassLoader to use or null.currentContext
- If true returns the current Context, if false returns the Context appropriate
for the caller if a more appropriate Context can be determined.public LoggerContext getContext(String fqcn, ClassLoader loader, boolean currentContext, URI configLocation)
ContextSelector
getContext
in interface ContextSelector
fqcn
- The fully qualified class name of the caller.loader
- ClassLoader to use or null.currentContext
- If true returns the current Context, if false returns the Context appropriate
for the caller if a more appropriate Context can be determined.configLocation
- The location of the configuration for the LoggerContext.public LoggerContext locateContext(String name, Object externalContext, URI configLocation)
NamedContextSelector
locateContext
in interface NamedContextSelector
name
- The LoggerContext name.externalContext
- The external context to associate with the LoggerContext.configLocation
- The location of the configuration.public void removeContext(LoggerContext context)
ContextSelector
removeContext
in interface ContextSelector
context
- The context to remove.public LoggerContext removeContext(String name)
NamedContextSelector
removeContext
in interface NamedContextSelector
name
- The LoggerContext name.public List<LoggerContext> getLoggerContexts()
ContextSelector
getLoggerContexts
in interface ContextSelector
Copyright © 1999-2021 Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.