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