You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/04/19 18:08:43 UTC
svn commit: r1588668 - in /tomee/tomee/trunk:
container/openejb-loader/src/main/java/org/apache/openejb/loader/
tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/
tomee/tomee-loader/src/main/java/org/apache/tomee/loader/
Author: rmannibucau
Date: Sat Apr 19 16:08:42 2014
New Revision: 1588668
URL: http://svn.apache.org/r1588668
Log:
making provisioning working from first boot
Modified:
tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java
Modified: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java?rev=1588668&r1=1588667&r2=1588668&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/ProvisioningUtil.java Sat Apr 19 16:08:42 2014
@@ -331,7 +331,7 @@ public class ProvisioningUtil {
private static File copy(final File file, final File lib) throws IOException {
final File dest = new File(lib, file.getName());
if (dest.exists()) {
- return null;
+ return dest;
}
IO.copy(file, dest);
return dest;
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=1588668&r1=1588667&r2=1588668&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 Sat Apr 19 16:08:42 2014
@@ -28,8 +28,11 @@ import org.apache.openejb.loader.SystemI
import org.apache.openejb.util.OpenEjbVersion;
import org.apache.tomee.loader.TomcatHelper;
-import java.io.IOException;
+import java.io.File;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
@@ -98,8 +101,8 @@ public class ServerListener implements L
// System.setProperty("tomcat.version", "x.y.z.w");
// System.setProperty("tomcat.built", "mmm dd yyyy hh:mm:ss");
// set the System properties, tomcat.version, tomcat.built
+ final ClassLoader classLoader = ServerListener.class.getClassLoader();
try {
- final ClassLoader classLoader = ServerListener.class.getClassLoader();
final Properties tomcatServerInfo = IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"), new Properties());
String serverNumber = tomcatServerInfo.getProperty("server.number");
@@ -124,10 +127,19 @@ public class ServerListener implements L
}
// manage additional libraries
- try {
- ProvisioningUtil.addAdditionalLibraries();
- } catch (final IOException e) {
- // ignored
+ 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);
+ }
+ addUrl.invoke(ucl, f.toURI().toURL());
+ }
+ } catch (final Exception e) {
+ LOGGER.log(Level.SEVERE, e.getMessage(), e);
+ }
}
final TomcatLoader loader = new TomcatLoader();
Modified: tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java?rev=1588668&r1=1588667&r2=1588668&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java (original)
+++ tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHook.java Sat Apr 19 16:08:42 2014
@@ -19,7 +19,12 @@ package org.apache.tomee.loader;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.Properties;
+import java.util.logging.Level;
+
import org.apache.openejb.loader.Embedder;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.ProvisioningUtil;
@@ -121,8 +126,8 @@ class TomcatHook {
// System.setProperty("tomcat.version", "x.y.z.w");
// System.setProperty("tomcat.built", "mmm dd yyyy hh:mm:ss");
// set the System properties, tomcat.version, tomcat.built
+ ClassLoader classLoader = TomcatHook.class.getClassLoader();
try {
- ClassLoader classLoader = TomcatHook.class.getClassLoader();
Properties tomcatServerInfo = IO.readProperties(classLoader.getResourceAsStream("org/apache/catalina/util/ServerInfo.properties"), new Properties());
String serverNumber = tomcatServerInfo.getProperty("server.number");
@@ -151,10 +156,19 @@ class TomcatHook {
}
// manage additional libraries
- try {
- ProvisioningUtil.addAdditionalLibraries();
- } catch (IOException e) {
- // ignored
+ 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);
+ }
+ addUrl.invoke(ucl, f.toURI().toURL());
+ }
+ } catch (final Exception e) {
+ e.printStackTrace(); // shouldn't block
+ }
}
// set the embedder