You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/02/26 21:29:03 UTC

svn commit: r1293930 - in /openejb/trunk/openejb: arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/ container/openejb-core/src/main/java/org/apache/openejb/ container/openejb-core/src/main/java/org/apache...

Author: dblevins
Date: Sun Feb 26 20:29:02 2012
New Revision: 1293930

URL: http://svn.apache.org/viewvc?rev=1293930&view=rev
Log:
Use new XBEAN-202 API for selecting sub-finders rather than creating a new finder for each bean.
Added IO.read(URL) and removed duplicates
OPENEJB-1784: Run heavy static initializers in parallel for performance boost

Added:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
Modified:
    openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContext.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/UriResolver.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ConfUtils.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/SafeToolkit.java
    openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
    openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java
    openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImpl.java
    openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java

Modified: openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java (original)
+++ openejb/trunk/openejb/arquillian-tomee/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java Sun Feb 26 20:29:02 2012
@@ -134,7 +134,7 @@ public class TomEEWebappContainer extend
         if (file.exists()) {
             Files.delete(file);
         }
-        InputStream is = resource.openStream();
+        InputStream is = org.apache.openejb.loader.IO.read(resource);
 
         try {
             IO.copy(is, file);

Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java?rev=1293930&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java (added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/Core.java Sun Feb 26 20:29:02 2012
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb;
+
+import java.net.URL;
+import java.util.concurrent.Semaphore;
+
+/**
+* @version $Rev$ $Date$
+*/
+public class Core {
+    static {
+        final String[] classes = {
+                "org.apache.openejb.util.JuliLogStreamFactory",
+                "org.slf4j.LoggerFactory",
+                "org.slf4j.impl.StaticLoggerBinder",
+
+                "org.apache.openejb.config.sys.JaxbJavaee",
+                "org.apache.bval.jsr303.ApacheValidatorFactory",
+                "org.apache.bval.jsr303.ConstraintAnnotationAttributes",
+                "org.apache.bval.jsr303.ConstraintDefaults",
+                "org.apache.bval.jsr303.groups.GroupsComputer",
+                "org.apache.bval.jsr303.xml.ValidationMappingParser",
+                "org.apache.bval.util.PrivilegedActions",
+                "org.apache.geronimo.transaction.manager.TransactionManagerImpl",
+                "org.apache.openejb.InterfaceType",
+                "org.apache.openejb.assembler.classic.Assembler",
+                "org.apache.openejb.assembler.classic.AssemblerTool",
+                "org.apache.openejb.cdi.CdiBuilder",
+                "org.apache.openejb.cdi.ThreadSingletonServiceImpl",
+                "org.apache.openejb.config.AppValidator",
+                "org.apache.openejb.config.AnnotationDeployer",
+                "org.apache.openejb.config.AutoConfig",
+                "org.apache.openejb.config.ConfigurationFactory",
+                "org.apache.openejb.config.MBeanDeployer",
+                "org.apache.openejb.config.PersistenceContextAnnFactory",
+                "org.apache.openejb.core.ServerFederation",
+                "org.apache.openejb.core.ivm.EjbHomeProxyHandler$1",
+                "org.apache.openejb.core.ivm.EjbHomeProxyHandler$MethodType",
+                "org.apache.openejb.core.managed.ManagedContainer$MethodType",
+                "org.apache.openejb.loader.FileUtils",
+                "org.apache.openejb.loader.IO",
+                "org.apache.openejb.loader.SystemInstance",
+                "org.apache.openejb.monitoring.StatsInterceptor",
+                "org.apache.openejb.persistence.JtaEntityManagerRegistry",
+                "org.apache.openejb.util.Duration",
+                "org.apache.openejb.util.Join",
+                "org.apache.openejb.util.JuliLogStreamFactory",
+                "org.apache.openejb.util.LogCategory",
+                "org.apache.openejb.util.Logger",
+                "org.apache.openejb.util.Messages",
+                "org.apache.openejb.util.SafeToolkit",
+                "org.apache.openejb.util.StringTemplate",
+                "org.apache.openejb.util.proxy.ProxyManager",
+                "org.apache.openjpa.enhance.PCRegistry",
+                "org.apache.openjpa.lib.util.Localizer",
+                "org.apache.xbean.naming.reference.SimpleReference",
+                "org.apache.xbean.propertyeditor.PropertyEditors",
+                "org.apache.xbean.propertyeditor.ReferenceIdentityMap",
+                "org.apache.xbean.recipe.ReflectionUtil",
+        };
+
+        final int permits = 2;
+        final Semaphore semaphore = new Semaphore(permits);
+        final ClassLoader loader = OpenEjbContainer.class.getClassLoader();
+
+        for (final String className : classes) {
+            try {
+                semaphore.acquire();
+                final Thread thread = new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            Class.forName(className, true, loader);
+                        } catch (Throwable e) {
+                        } finally {
+                            semaphore.release();
+                        }
+                    }
+                });
+                thread.setDaemon(true);
+                thread.start();
+            } catch (InterruptedException e) {
+                Thread.interrupted();
+            }
+        }
+        try {
+            semaphore.acquire(permits);
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+        }
+    }
+
+    public static void warmup(){}
+
+    public static class Parallel {
+
+        public static void exec(Runnable... runnables) {
+            final int permits = 2;
+            final Semaphore semaphore = new Semaphore(permits);
+
+            for (Runnable runnable : runnables) {
+                try {
+                    semaphore.acquire();
+                    final Thread thread = new Thread();
+                    thread.setDaemon(true);
+                    thread.start();
+                } catch (InterruptedException e) {
+                    Thread.interrupted();
+                }
+            }
+            try {
+                semaphore.acquire(permits);
+            } catch (InterruptedException e) {
+                Thread.interrupted();
+            }
+        }
+    }
+}

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java Sun Feb 26 20:29:02 2012
@@ -75,6 +75,10 @@ import java.util.Set;
  */
 public class OpenEjbContainer extends EJBContainer {
 
+    static {
+        Core.warmup();
+    }
+
     public static final String OPENEJB_EMBEDDED_REMOTABLE = "openejb.embedded.remotable";
     static Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, OpenEjbContainer.class);
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sun Feb 26 20:29:02 2012
@@ -27,6 +27,7 @@ import org.apache.openejb.BeanContext;
 import org.apache.openejb.BeanType;
 import org.apache.openejb.ClassLoaderUtil;
 import org.apache.openejb.Container;
+import org.apache.openejb.Core;
 import org.apache.openejb.DuplicateDeploymentIdException;
 import org.apache.openejb.Injection;
 import org.apache.openejb.JndiConstants;
@@ -374,7 +375,7 @@ public class Assembler extends Assembler
      * @throws Exception
      * @see OpenEjbConfiguration
      */
-    public void buildContainerSystem(OpenEjbConfiguration configInfo) throws Exception {
+    public void buildContainerSystem(final OpenEjbConfiguration configInfo) throws Exception {
 
         ContainerSystemInfo containerSystemInfo = configInfo.containerSystem;
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sun Feb 26 20:29:02 2012
@@ -1900,9 +1900,26 @@ public class AnnotationDeployer implemen
                     // Handled in CheckClasses.java along with other missing classes
                     continue;
                 }
-                final AnnotationFinder finder = new AnnotationFinder(new ClassesArchive(clazz));
 
-                final AnnotationFinder annotationFinder = createFinder(clazz);
+
+                final AnnotationFinder finder;
+                final AnnotationFinder annotationFinder;
+
+                if (ejbModule.getFinder() instanceof AnnotationFinder) {
+                    final AnnotationFinder af = (AnnotationFinder) ejbModule.getFinder();
+
+                    final List<Class<?>> ancestors = ancestors(clazz);
+                    final String[] names = new String[ancestors.size()];
+                    int i = 0;
+                    for (Class<?> ancestor : ancestors) {
+                        names[i++] = ancestor.getName();
+                    }
+                    annotationFinder = af.select(names);
+                    finder = af.select(clazz.getName());
+                } else {
+                    annotationFinder = createFinder(clazz);
+                    finder = new AnnotationFinder(new ClassesArchive(clazz));
+                }
 
                 /*
                  * @PostConstruct

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigUtils.java Sun Feb 26 20:29:02 2012
@@ -162,7 +162,7 @@ public class ConfigUtils {
         ResourceFinder finder = new ResourceFinder("");
         URL defaultConfig = finder.find("default.openejb.conf");
 
-        IO.copy(defaultConfig.openStream(), config);
+        IO.copy(IO.read(defaultConfig), config);
 
         return config;
     }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Sun Feb 26 20:29:02 2012
@@ -39,6 +39,7 @@ import org.apache.openejb.jee.Webservice
 import org.apache.openejb.jee.Webservices;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.loader.FileUtils;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.AnnotationFinder;
 import org.apache.openejb.util.JarExtractor;
@@ -54,6 +55,7 @@ import org.apache.xbean.finder.archive.J
 import org.xml.sax.SAXException;
 
 import javax.xml.bind.JAXBException;
+import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -544,7 +546,7 @@ public class DeploymentLoader implements
         String mainClass = null;
         if (manifestUrl != null) {
             try {
-                final InputStream is = manifestUrl.openStream();
+                final InputStream is = IO.read(manifestUrl);
                 final Manifest manifest = new Manifest(is);
                 mainClass = manifest.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
             } catch (IOException e) {
@@ -1415,7 +1417,7 @@ public class DeploymentLoader implements
     @SuppressWarnings({"unchecked"})
     public static <T> T unmarshal(final Class<T> type, final String descriptor, final URL url) throws OpenEJBException {
         try {
-            return (T) JaxbJavaee.unmarshalJavaee(type, url.openStream());
+            return (T) JaxbJavaee.unmarshalJavaee(type, new BufferedInputStream(url.openStream()));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the " + descriptor + " file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -1514,7 +1516,7 @@ public class DeploymentLoader implements
         final URL manifestUrl = descriptors.get("MANIFEST.MF");
         if (scanPotentialClientModules && manifestUrl != null) {
             // In this case scanPotentialClientModules really means "require application-client.xml"
-            final InputStream is = manifestUrl.openStream();
+            final InputStream is = new BufferedInputStream(manifestUrl.openStream());
             final Manifest manifest = new Manifest(is);
             final String mainClass = manifest.getMainAttributes().getValue(Attributes.Name.MAIN_CLASS);
             if (mainClass != null) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java Sun Feb 26 20:29:02 2012
@@ -17,6 +17,7 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.LogCategory;
@@ -125,7 +126,7 @@ public class EnvEntriesPropertiesDeploye
         if (propsUrl == null) return Collections.emptyMap();
         try {
 
-            InputStream in = propsUrl.openStream();
+            InputStream in = IO.read(propsUrl);
             Properties envEntriesProps = new Properties();
             envEntriesProps.load(in);
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java Sun Feb 26 20:29:02 2012
@@ -61,6 +61,7 @@ import org.apache.openejb.jee.oejb2.WebS
 import org.apache.openejb.jee.oejb3.EjbDeployment;
 import org.apache.openejb.jee.oejb3.EjbLink;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
+import org.apache.openejb.loader.IO;
 
 import javax.xml.bind.JAXBElement;
 import java.io.ByteArrayInputStream;
@@ -95,7 +96,7 @@ public class OpenEjb2Conversion implemen
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbOpenejbJar2.unmarshal(OpenejbJarType.class, ((URL)altDD).openStream(), false);
+                altDD = JaxbOpenejbJar2.unmarshal(OpenejbJarType.class, IO.read(((URL)altDD)), false);
             } catch (Exception e) {
                 // todo warn about not being able to parse sun descriptor
             }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java Sun Feb 26 20:29:02 2012
@@ -17,6 +17,7 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.loader.IO;
 import org.apache.xbean.asm.AnnotationVisitor;
 import org.apache.xbean.asm.ClassReader;
 import org.apache.xbean.asm.FieldVisitor;
@@ -56,7 +57,7 @@ public class PersistenceContextAnnFactor
 
         try {
             URL u = c.getResource("/" + c.getName().replace('.', '/') + ".class");
-            ClassReader r = new ClassReader(u.openStream());
+            ClassReader r = new ClassReader(IO.read(u));
             r.accept(new PersistenceContextReader(), ClassReader.SKIP_DEBUG);
         } catch (IOException e) {
             throw new OpenEJBException("Unable to read class " + c.getName());

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java Sun Feb 26 20:29:02 2012
@@ -44,6 +44,7 @@ import org.apache.openejb.jee.oejb2.Jaxb
 import org.apache.openejb.jee.oejb2.OpenejbJarType;
 import org.apache.openejb.jee.oejb3.JaxbOpenejbJar3;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
@@ -219,7 +220,7 @@ public class ReadDescriptors implements 
         URL url = getUrl(module, "resources.xml");
         if (url != null) {
             try {
-                Resources openejb = JaxbOpenejb.unmarshal(Resources.class, url.openStream());
+                Resources openejb = JaxbOpenejb.unmarshal(Resources.class, IO.read(url));
                 module.initResources(openejb);
 
                 // warn if other entities than resources were declared
@@ -246,7 +247,7 @@ public class ReadDescriptors implements 
         if (url != null) {
             ValidationConfigType validationConfigType;
             try {
-                validationConfigType = JaxbOpenejb.unmarshal(ValidationConfigType.class, url.openStream(), false);
+                validationConfigType = JaxbOpenejb.unmarshal(ValidationConfigType.class, IO.read(url), false);
                 module.setValidationConfig(validationConfigType);
             } catch (Exception e) {
                 logger.warning("can't read " + url.toString() + " to construct a validation factory, it will be ignored");
@@ -419,7 +420,7 @@ public class ReadDescriptors implements 
         } else if (data instanceof URL) {
             URL url = (URL) data;
             try {
-                EntityMappings entitymappings = (EntityMappings) JaxbJavaee.unmarshalJavaee(EntityMappings.class, url.openStream());
+                EntityMappings entitymappings = (EntityMappings) JaxbJavaee.unmarshalJavaee(EntityMappings.class, IO.read(url));
                 ejbModule.getAltDDs().put("openejb-cmp-orm.xml", entitymappings);
             } catch (SAXException e) {
                 throw new OpenEJBException("Cannot parse the openejb-cmp-orm.xml file: " + url.toExternalForm(), e);
@@ -468,7 +469,7 @@ public class ReadDescriptors implements 
     public static ApplicationClient readApplicationClient(URL url) throws OpenEJBException {
         ApplicationClient applicationClient;
         try {
-            applicationClient = (ApplicationClient) JaxbJavaee.unmarshalJavaee(ApplicationClient.class, url.openStream());
+            applicationClient = (ApplicationClient) JaxbJavaee.unmarshalJavaee(ApplicationClient.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the application-client.xml file: "+ url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -484,7 +485,7 @@ public class ReadDescriptors implements 
     public static EjbJar readEjbJar(URL url) throws OpenEJBException {
         try {
             if (isEmptyEjbJar(url)) return new EjbJar();
-            return (EjbJar) JaxbJavaee.unmarshalJavaee(EjbJar.class, url.openStream());
+            return (EjbJar) JaxbJavaee.unmarshalJavaee(EjbJar.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the ejb-jar.xml file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -499,7 +500,7 @@ public class ReadDescriptors implements 
     public static Beans readBeans(URL url) throws OpenEJBException {
         try {
             if (isEmptyBeansXml(url)) return new Beans();
-            return (Beans) JaxbJavaee.unmarshalJavaee(Beans.class, url.openStream());
+            return (Beans) JaxbJavaee.unmarshalJavaee(Beans.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the beans.xml file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -520,7 +521,7 @@ public class ReadDescriptors implements 
     }
 
     private static boolean isEmpty(URL url, final String rootElement) throws IOException, ParserConfigurationException, SAXException {
-        final LengthInputStream in = new LengthInputStream(url.openStream());
+        final LengthInputStream in = new LengthInputStream(IO.read(url));
         InputSource inputSource = new InputSource(in);
 
         SAXParserFactory factory = SAXParserFactory.newInstance();
@@ -547,7 +548,7 @@ public class ReadDescriptors implements 
     public static Webservices readWebservices(URL url) throws OpenEJBException {
         Webservices webservices;
         try {
-            webservices = (Webservices) JaxbJavaee.unmarshalJavaee(Webservices.class, url.openStream());
+            webservices = (Webservices) JaxbJavaee.unmarshalJavaee(Webservices.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the webservices.xml file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -563,7 +564,7 @@ public class ReadDescriptors implements 
     public static HandlerChains readHandlerChains(URL url) throws OpenEJBException {
         HandlerChains handlerChains;
         try {
-            handlerChains = (HandlerChains) JaxbJavaee.unmarshalHandlerChains(HandlerChains.class, url.openStream());
+            handlerChains = (HandlerChains) JaxbJavaee.unmarshalHandlerChains(HandlerChains.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the webservices.xml file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -579,7 +580,7 @@ public class ReadDescriptors implements 
     public static JavaWsdlMapping readJaxrpcMapping(URL url) throws OpenEJBException {
         JavaWsdlMapping wsdlMapping;
         try {
-            wsdlMapping = (JavaWsdlMapping) JaxbJavaee.unmarshalJavaee(JavaWsdlMapping.class, url.openStream());
+            wsdlMapping = (JavaWsdlMapping) JaxbJavaee.unmarshalJavaee(JavaWsdlMapping.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the JaxRPC mapping file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -599,7 +600,7 @@ public class ReadDescriptors implements 
             WSDLReader reader = factory.newWSDLReader();
             reader.setFeature("javax.wsdl.verbose", true);
             reader.setFeature("javax.wsdl.importDocuments", true);
-            WsdlResolver wsdlResolver = new WsdlResolver(new URL(url, ".").toExternalForm(), new InputSource(url.openStream()));
+            WsdlResolver wsdlResolver = new WsdlResolver(new URL(url, ".").toExternalForm(), new InputSource(IO.read(url)));
             definition = reader.readWSDL(wsdlResolver);
         } catch (IOException e) {
             throw new OpenEJBException("Cannot read the wsdl file: " + url.toExternalForm(), e);
@@ -612,10 +613,10 @@ public class ReadDescriptors implements 
     public static Connector readConnector(URL url) throws OpenEJBException {
         Connector connector;
         try {
-            connector = (Connector) JaxbJavaee.unmarshalJavaee(Connector.class, url.openStream());
+            connector = (Connector) JaxbJavaee.unmarshalJavaee(Connector.class, IO.read(url));
         } catch (JAXBException e) {
             try {
-                Connector10 connector10 = (Connector10) JaxbJavaee.unmarshalJavaee(Connector10.class, url.openStream());
+                Connector10 connector10 = (Connector10) JaxbJavaee.unmarshalJavaee(Connector10.class, IO.read(url));
                 connector = Connector.newConnector(connector10);
             } catch (ParserConfigurationException e1) {
                 throw new OpenEJBException("Cannot parse the ra.xml file: " + url.toExternalForm(), e);
@@ -639,7 +640,7 @@ public class ReadDescriptors implements 
     public static WebApp readWebApp(URL url) throws OpenEJBException {
         WebApp webApp;
         try {
-            webApp = (WebApp) JaxbJavaee.unmarshalJavaee(WebApp.class, url.openStream());
+            webApp = (WebApp) JaxbJavaee.unmarshalJavaee(WebApp.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the web.xml file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -655,7 +656,7 @@ public class ReadDescriptors implements 
     public static TldTaglib readTldTaglib(URL url) throws OpenEJBException {
         TldTaglib tldTaglib;
         try {
-            tldTaglib = (TldTaglib) JaxbJavaee.unmarshalTaglib(TldTaglib.class, url.openStream());
+            tldTaglib = (TldTaglib) JaxbJavaee.unmarshalTaglib(TldTaglib.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the JSP tag library definition file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -672,7 +673,7 @@ public class ReadDescriptors implements 
         FacesConfig facesConfig;
         try {
      		facesConfig = (FacesConfig) JaxbJavaee
-    		.unmarshalJavaee(FacesConfig.class, url.openStream());
+    		.unmarshalJavaee(FacesConfig.class, IO.read(url));
         } catch (SAXException e) {
             throw new OpenEJBException("Cannot parse the faces configuration file: " + url.toExternalForm(), e);
         } catch (JAXBException e) {
@@ -708,7 +709,7 @@ public class ReadDescriptors implements 
         }
 
         InputStream get() throws IOException {
-            return url.openStream();
+            return IO.read(url);
         }
     }
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java Sun Feb 26 20:29:02 2012
@@ -78,6 +78,7 @@ import org.apache.openejb.jee.sun.SunWeb
 import org.apache.openejb.jee.sun.Web;
 import org.apache.openejb.jee.sun.WebserviceEndpoint;
 import org.apache.openejb.jee.sun.WsdlPort;
+import org.apache.openejb.loader.IO;
 
 import javax.ejb.Local;
 import javax.ejb.Remote;
@@ -255,7 +256,7 @@ public class SunConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbSun.unmarshal(SunApplication.class, ((URL)altDD).openStream());
+                altDD = JaxbSun.unmarshal(SunApplication.class, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 // todo warn about not being able to parse sun descriptor
             }
@@ -277,7 +278,7 @@ public class SunConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbSun.unmarshal(SunApplicationClient.class, ((URL)altDD).openStream());
+                altDD = JaxbSun.unmarshal(SunApplicationClient.class, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 // todo warn about not being able to parse sun descriptor
             }
@@ -299,7 +300,7 @@ public class SunConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbSun.unmarshal(SunWebApp.class, ((URL)altDD).openStream());
+                altDD = JaxbSun.unmarshal(SunWebApp.class, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 e.printStackTrace();
                 // todo warn about not being able to parse sun descriptor
@@ -322,7 +323,7 @@ public class SunConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbSun.unmarshal(SunEjbJar.class, ((URL)altDD).openStream());
+                altDD = JaxbSun.unmarshal(SunEjbJar.class, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 e.printStackTrace();
                 // todo warn about not being able to parse sun descriptor
@@ -345,7 +346,7 @@ public class SunConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbSun.unmarshal(SunCmpMappings.class, ((URL)altDD).openStream());
+                altDD = JaxbSun.unmarshal(SunCmpMappings.class, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 e.printStackTrace();
                 // todo warn about not being able to parse sun descriptor

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/WlsConversion.java Sun Feb 26 20:29:02 2012
@@ -24,6 +24,7 @@ import org.apache.openejb.jee.oejb3.Open
 import org.apache.openejb.jee.wls.JaxbWls;
 import org.apache.openejb.jee.wls.WeblogicEjbJar;
 import org.apache.openejb.jee.wls.WeblogicEnterpriseBean;
+import org.apache.openejb.loader.IO;
 
 import javax.xml.bind.JAXBElement;
 import java.io.ByteArrayInputStream;
@@ -48,7 +49,7 @@ public class WlsConversion implements Dy
         }
         if (altDD instanceof URL) {
             try {
-                altDD = JaxbWls.unmarshal(type, ((URL)altDD).openStream());
+                altDD = JaxbWls.unmarshal(type, IO.read(((URL)altDD)));
             } catch (Exception e) {
                 e.printStackTrace();
                 // todo warn about not being able to parse sun descriptor

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/sys/JaxbOpenejb.java Sun Feb 26 20:29:02 2012
@@ -57,6 +57,9 @@ import java.util.Set;
 import java.util.TreeSet;
 
 public abstract class JaxbOpenejb {
+
+    private static final SAXParserFactory SAX_PARSER_FACTORY = SAXParserFactory.newInstance();
+
     @SuppressWarnings({"unchecked"})
     public static <T> T create(Class<T> type) {
         if (type == null) throw new NullPointerException("type is null");
@@ -137,7 +140,7 @@ public abstract class JaxbOpenejb {
                 finder = new ResourceFinder("META-INF/", JaxbOpenejb.class.getClassLoader());
                 url = finder.find(resourceName);
             }
-            in = url.openStream();
+            in = IO.read(url);
             ServicesJar servicesJar = parseServicesJar(in);
             return servicesJar;
         } catch (MalformedURLException e) {
@@ -157,7 +160,7 @@ public abstract class JaxbOpenejb {
     private static ServicesJar parseServicesJar(InputStream in) throws ParserConfigurationException, SAXException, IOException {
         InputSource inputSource = new InputSource(in);
 
-        SAXParserFactory factory = SAXParserFactory.newInstance();
+        SAXParserFactory factory = SAX_PARSER_FACTORY;
         factory.setNamespaceAware(true);
         factory.setValidating(false);
         SAXParser parser = factory.newSAXParser();
@@ -216,10 +219,10 @@ public abstract class JaxbOpenejb {
         try {
             if (configFile.startsWith("jar:")) {
                 URL url = new URL(configFile);
-                in = url.openStream();
+                in = IO.read(url);
             } else if (configFile.startsWith("file:")) {
                 URL url = new URL(configFile);
-                in = url.openStream();
+                in = IO.read(url);
             } else {
                 in = new FileInputStream(configFile);
             }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContext.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/LocalInitialContext.java Sun Feb 26 20:29:02 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.core;
 
+import org.apache.openejb.Core;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.Injection;
 import org.apache.openejb.InjectionProcessor;
@@ -44,6 +45,10 @@ import java.util.List;
  */
 public class LocalInitialContext extends ContextWrapper {
 
+    static {
+        Core.warmup();
+    }
+
     public static final String OPENEJB_EMBEDDED_REMOTABLE = "openejb.embedded.remotable";
     static Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, LocalInitialContext.class);
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java Sun Feb 26 20:29:02 2012
@@ -22,6 +22,7 @@ import org.apache.xbean.asm.ClassReader;
 import org.apache.xbean.asm.Opcodes;
 import org.apache.xbean.asm.commons.EmptyVisitor;
 
+import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -103,6 +104,9 @@ public class TempClassLoader extends URL
 //        ( && !name.startsWith("javax.faces.") )||
         String resourceName = name.replace('.', '/') + ".class";
         InputStream in = getResourceAsStream(resourceName);
+        if (!(in instanceof BufferedInputStream)) {
+            in = new BufferedInputStream(in);
+        }
         if (in == null) {
             throw new ClassNotFoundException(name);
         }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IvmContext.java Sun Feb 26 20:29:02 2012
@@ -242,7 +242,7 @@ public class IvmContext implements Conte
                 Enumeration<URL> resources = classLoader.getResources("jndi.properties");
                 while (urlPackagePrefixes == null && resources.hasMoreElements()) {
                     URL resource = resources.nextElement();
-                    InputStream in = resource.openStream();
+                    InputStream in = IO.read(resource);
                     urlPackagePrefixes = getUrlPackagePrefixes(in);
                 }
             } catch (IOException ignored) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/UriResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/UriResolver.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/UriResolver.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/UriResolver.java Sun Feb 26 20:29:02 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.core.webservices;
 
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.Base64;
 
 import java.io.File;
@@ -128,7 +129,7 @@ public class UriResolver {
                     }
                     is =  huc.getInputStream();
                 } catch (ClassCastException ex) {
-                    is = url.openStream();
+                    is = IO.read(url);
                 }
             } else if (baseUriStr != null) {
                 URI base;
@@ -149,7 +150,7 @@ public class UriResolver {
                     try {
                         baseFile = new File(base);
                         if (baseFile.exists()) {
-                            is = base.toURL().openStream();
+                            is = IO.read(base.toURL());
                             uri = base;
                         } else {
                             tryClasspath(base.toString().startsWith("file:")
@@ -223,7 +224,7 @@ public class UriResolver {
 
         url = new URL(uriStr);
         try {
-            is = url.openStream();
+            is = IO.read(url);
             try {
                 uri = url.toURI();
             } catch (URISyntaxException ex) {
@@ -260,7 +261,7 @@ public class UriResolver {
                 }
 
             }
-            is = url.openStream();
+            is = IO.read(url);
         }
     }
 
@@ -268,7 +269,7 @@ public class UriResolver {
         try {
             url = new URL(uriStr);
             uri = new URI(url.toString());
-            is = url.openStream();
+            is = IO.read(url);
         } catch (MalformedURLException e) {
             // do nothing
         } catch (URISyntaxException e) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceBootstrap.java Sun Feb 26 20:29:02 2012
@@ -18,6 +18,7 @@ package org.apache.openejb.persistence;
 
 import org.apache.openejb.core.TempClassLoader;
 import org.apache.openejb.javaagent.Agent;
+import org.apache.openejb.loader.IO;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -96,7 +97,7 @@ public class PersistenceBootstrap {
                 String urlPath = url.toExternalForm();
                 debug("found " + urlPath);
                 try {
-                    InputStream in = url.openStream();
+                    InputStream in = IO.read(url);
                     try {
                         collectUnits(in, units, args);
                     } catch (Throwable e) {
@@ -194,7 +195,7 @@ public class PersistenceBootstrap {
             URL resource = classLoader.getResource("PersistenceBootstrap.properties");
             if (resource != null) {
                 debug("found PersistenceBootstrap.properties file");
-                InputStream in = resource.openStream();
+                InputStream in = IO.read(resource);
                 try {
                     properties.load(in);
                 } finally {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ConfUtils.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ConfUtils.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ConfUtils.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ConfUtils.java Sun Feb 26 20:29:02 2012
@@ -100,7 +100,7 @@ public class ConfUtils {
 
         if (file.exists() && !overwrite) return file;
 
-        IO.copy(resource.openStream(), file);
+        IO.copy(IO.read(resource), file);
 
         return file;
     }

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/Log4jLogStreamFactory.java Sun Feb 26 20:29:02 2012
@@ -179,7 +179,7 @@ public class Log4jLogStreamFactory imple
         final Properties properties = new Properties();
         InputStream in = null;
         try {
-            in = resource.openStream();
+            in = IO.read(resource);
             properties.load(in);
         } catch (Throwable e) {
             //Ignore
@@ -209,7 +209,7 @@ public class Log4jLogStreamFactory imple
         FileOutputStream out = null;
 
         try {
-            in = resource.openStream();
+            in = IO.read(resource);
             final Properties props = new Properties();
             props.load(in);
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/SafeToolkit.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/SafeToolkit.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/SafeToolkit.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/SafeToolkit.java Sun Feb 26 20:29:02 2012
@@ -36,13 +36,13 @@ public class SafeToolkit {
     }
 
     private Class forName(String className) throws OpenEJBException {
-        Class clazz = null;
         try {
-            clazz = Class.forName(className);
+            final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            return loader.loadClass(className);
         } catch (ClassNotFoundException cnfe) {
             OpenEJBErrorHandler.classNotFound(systemLocation, className);
+            return null;
         }
-        return clazz;
     }
 
     public Object newInstance(String className) throws OpenEJBException {

Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java Sun Feb 26 20:29:02 2012
@@ -22,6 +22,7 @@ import org.apache.openejb.jee.JAXBContex
 import org.apache.openejb.jee.oejb2.GeronimoEjbJarType;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.jee.jpa.EntityMappings;
+import org.apache.openejb.loader.IO;
 import org.custommonkey.xmlunit.Diff;
 import org.xml.sax.SAXException;
 
@@ -115,7 +116,7 @@ public class OpenEjb2ConversionTest exte
             XMLUnit.setNormalizeWhitespace(true);
             XMLUnit.setNormalize(true);
 
-            isr = new InputStreamReader(getClass().getClassLoader().getResource(expectedFile).openStream());
+            isr = new InputStreamReader(IO.read(getClass().getClassLoader().getResource(expectedFile)));
             final org.w3c.dom.Document actualDoc = XMLUnit.buildDocument(XMLUnit.newTestParser(), new StringReader(actual));
             final org.w3c.dom.Document expectedDoc = XMLUnit.buildDocument(XMLUnit.newControlParser(), isr);
 

Modified: openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java (original)
+++ openejb/trunk/openejb/container/openejb-loader/src/main/java/org/apache/openejb/loader/IO.java Sun Feb 26 20:29:02 2012
@@ -147,7 +147,7 @@ public class IO {
 
     public static String slurp(URL url) throws IOException {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
-        copy(url.openStream(), out);
+        copy(read(url), out);
         return new String(out.toByteArray());
     }
 
@@ -271,4 +271,8 @@ public class IO {
     public static InputStream read(byte[] content) {
         return new ByteArrayInputStream(content);
     }
+
+    public static InputStream read(URL url) throws IOException {
+        return url.openStream();
+    }
 }
\ No newline at end of file

Modified: openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImpl.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImpl.java (original)
+++ openejb/trunk/openejb/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImpl.java Sun Feb 26 20:29:02 2012
@@ -19,6 +19,7 @@ package org.apache.openejb.tck.impl;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.cdi.ThreadSingletonServiceImpl;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.tck.OpenEJBTckDeploymentRuntimeException;
 import org.apache.openejb.tck.util.ZipUtil;
@@ -226,7 +227,7 @@ public class ContainersImpl implements C
                 InputStream src = zin;
 
                 if (resources.containsKey(entryName)) {
-                    src = resources.get(entryName).openStream();
+                    src = IO.read(resources.get(entryName));
                 }
                 resources.remove(entryName);
 
@@ -236,7 +237,7 @@ public class ContainersImpl implements C
 
             for (Map.Entry<String, URL> entry : resources.entrySet()) {
                 zout.putNextEntry(new ZipEntry(entry.getKey()));
-                InputStream in = entry.getValue().openStream();
+                InputStream in = IO.read(entry.getValue());
                 ZipUtil.copy(in, zout);
                 in.close();
             }

Modified: openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java?rev=1293930&r1=1293929&r2=1293930&view=diff
==============================================================================
--- openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java (original)
+++ openejb/trunk/openejb/utils/openejb-provisionning/src/main/java/org/apache/openejb/resolver/Resolver.java Sun Feb 26 20:29:02 2012
@@ -17,6 +17,7 @@
 package org.apache.openejb.resolver;
 
 import org.apache.openejb.loader.FileUtils;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.LocationResolver;
 import org.apache.openejb.resolver.maven.Handler;
 import org.apache.openejb.resolver.maven.Parser;
@@ -46,7 +47,7 @@ public class Resolver implements Locatio
                             throw new Exception("Failed to create: " + parentFile);
                         }
                     }
-                    FileUtils.copy(new FileOutputStream(file), url.openStream());
+                    FileUtils.copy(new FileOutputStream(file), IO.read(url));
                 } catch (Exception e) {
                     if (file.exists()) {
                         if (!file.delete()) {