Author: rmannibucau
Date: Thu May 22 18:58:07 2014
New Revision: 1596940
URL: http://svn.apache.org/r1596940
Log:
TOMEE-1220 jars.txt in conf/ for container enrichment
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/classloader/ProvisioningClassLoaderConfigurer.java
Thu May 22 18:58:07 2014
@@ -49,8 +49,6 @@ import java.util.Set;
* Note: if a line doesn't start with '+' it is considered as an addition
*/
public class ProvisioningClassLoaderConfigurer implements
ClassLoaderConfigurer {
- private static final Logger LOGGER =
Logger.getInstance(LogCategory.OPENEJB,
ProvisioningClassLoaderConfigurer.class);
-
// just some default if one is not set
private URL[] added = new URL[0];
private Filter excluded = FalseFilter.INSTANCE;
@@ -122,7 +120,7 @@ public class ProvisioningClassLoaderConf
}
} catch (final Exception e) {
- LOGGER.error("Can't read " + configFile, e);
+ Logger.getInstance(LogCategory.OPENEJB,
ProvisioningClassLoaderConfigurer.class).error("Can't read " + configFile, e);
} finally {
IO.close(reader);
}
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
Thu May 22 18:58:07 2014
@@ -17,9 +17,7 @@
package org.apache.openejb.util;
-import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.SimpleLayout;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.openejb.cdi.logging.Log4jLoggerFactory;
import org.apache.openejb.loader.FileUtils;
@@ -101,8 +99,17 @@ public class Log4jLogStreamFactory imple
DOMConfigurator.configure(log4jXml.toURI().toURL());
} else {
- // install our logging.properties file into the conf
dir
- installLoggingPropertiesFile(loggingPropertiesFile);
+ // needs
mvn:org.apache.logging.log4j:log4j-1.2-api:2.0-rc1,
+ // typically container will contain:
+ //
+ // mvn:org.apache.logging.log4j:log4j-api:2.0-rc1
+ // mvn:org.apache.logging.log4j:log4j-core:2.0-rc1
+ // mvn:org.apache.logging.log4j:log4j-1.2-api:2.0-rc1
+ final File log4j2Xml = new File(confDir, "log4j2.xml");
+ if (!log4j2Xml.exists()) {
+ // install our logging.properties file into the
conf dir
+
installLoggingPropertiesFile(loggingPropertiesFile);
+ } // else ignore, DOMConfigurator is just a mock doing
nothing so don't call it and don't install defaults
}
}
}
@@ -168,9 +175,13 @@ public class Log4jLogStreamFactory imple
private org.apache.log4j.Logger getFallabckLogger() {
final org.apache.log4j.Logger logger =
org.apache.log4j.Logger.getLogger("OpenEJB.logging");
+ /* will break log4j support and not that needed since we'll get the
same by default just not with a nice layout
+ which is good when something is wrong
+
final SimpleLayout simpleLayout = new SimpleLayout();
final ConsoleAppender newAppender = new ConsoleAppender(simpleLayout);
logger.addAppender(newAppender);
+ */
return logger;
}
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
Thu May 22 18:58:07 2014
@@ -22,6 +22,8 @@ import org.apache.catalina.LifecycleEven
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.util.ServerInfo;
+import org.apache.openejb.classloader.ClassLoaderConfigurer;
+import org.apache.openejb.config.QuickJarsTxtParser;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
@@ -31,7 +33,9 @@ import org.apache.tomee.loader.TomcatHel
import java.io.File;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Properties;
@@ -127,24 +131,38 @@ public class ServerListener implements L
// no-op
}
+ final TomcatLoader loader = new TomcatLoader();
+ loader.initSystemInstance(properties);
+
// manage additional libraries
if (URLClassLoader.class.isInstance(classLoader)) {
final URLClassLoader ucl =
URLClassLoader.class.cast(classLoader);
try {
final Method addUrl =
URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
- for (final File f :
ProvisioningUtil.addAdditionalLibraries()) {
- if (!addUrl.isAccessible()) { // set it lazily
- addUrl.setAccessible(true);
+ final boolean acc = addUrl.isAccessible();
+ try {
+ for (final File f :
ProvisioningUtil.addAdditionalLibraries()) {
+ addUrl(ucl, addUrl, f.toURI().toURL());
+ }
+
+ final File globalJaxrsTxt =
SystemInstance.get().getConf(QuickJarsTxtParser.FILE_NAME);
+ final ClassLoaderConfigurer configurer =
QuickJarsTxtParser.parse(globalJaxrsTxt);
+ if (configurer != null) {
+ for (final URL f :
configurer.additionalURLs()) {
+ addUrl(ucl, addUrl, f);
+ }
}
- addUrl.invoke(ucl, f.toURI().toURL());
+ } finally {
+ addUrl.setAccessible(acc);
}
} catch (final Exception e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e);
}
+ } else {
+ LOGGER.finer("container classloader is not an URL one so
can't check provisining: " + classLoader);
}
- final TomcatLoader loader = new TomcatLoader();
- loader.init(properties);
+ loader.initialize(properties);
TomEELogConfigurer.configureLogs();
@@ -156,6 +174,13 @@ public class ServerListener implements L
}
}
+ private static void addUrl(final URLClassLoader ucl, final Method addUrl,
final URL url) throws IllegalAccessException, InvocationTargetException,
MalformedURLException {
+ if (!addUrl.isAccessible()) { // set it lazily
+ addUrl.setAccessible(true);
+ }
+ addUrl.invoke(ucl, url);
+ }
+
private synchronized void installServerInfo() {
if (SystemInstance.get().getOptions().get("tomee.keep-server-info",
false)) {
return;
Modified:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1596940&r1=1596939&r2=1596940&view=diff
==============================================================================
---
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
(original)
+++
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
Thu May 22 18:58:07 2014
@@ -110,20 +110,22 @@ public class TomcatLoader implements Loa
private static final List<ServerService> services = new
ArrayList<ServerService> ();
/**
- * Â {@inheritDoc}
+ * this method will be split in two to be able to use SystemInstance in
between both invocations
+ * ie use configuration before effective boot
*/
+ @Deprecated
public void init(Properties properties) throws Exception {
+ initSystemInstance(properties);
+ initialize(properties);
+ }
+ public void initSystemInstance(final Properties properties) throws
Exception {
// Enable System EJBs like the MEJB and DeployerEJB
initDefaults(properties);
// Loader maybe the first thing executed in a new classloader
// so we must attempt to initialize the system instance.
SystemInstance.init(properties);
-
- Warmup.warmup(); // better than static (we are sure we don't hit it
too eagerly) and doesn't cost more since uses static block
-
- initialize(properties);
}
public void initDefaults(Properties properties) {
@@ -136,6 +138,8 @@ public class TomcatLoader implements Loa
}
public void initialize(Properties properties) throws Exception {
+ Warmup.warmup(); // better than static (we are sure we don't hit it
too eagerly) and doesn't cost more since uses static block
+
//Install Log
OptionsLog.install();