Author: andygumbrecht
Date: Mon Jul 21 14:58:53 2014
New Revision: 1612301

URL: http://svn.apache.org/r1612301
Log:
Apply trunk changes that apply locally.

Added:
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
      - copied unchanged from r1611717, 
tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/AdditionalLibsTest.java
    
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebBeansContextCreated.java
      - copied unchanged from r1612083, 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebBeansContextCreated.java
Removed:
    
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/cdi/
    
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/resources/META-INF/services/
Modified:
    tomee/tomee/branches/tomee-1.7.x/   (props changed)
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
    tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
    
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
    
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
    
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
    
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
    
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
    
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
    
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java

Propchange: tomee/tomee/branches/tomee-1.7.x/
------------------------------------------------------------------------------
  Merged 
/tomee/tomee/trunk:r1611717,1611720,1611927,1611955,1612083-1612084,1612087-1612088

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
 Mon Jul 21 14:58:53 2014
@@ -342,6 +342,27 @@ public class Setup {
         Files.delete(destination);
     }
 
+    public static void addTomEELibraries(final File tomeeHome, final String 
additionalLibs) {
+        if (additionalLibs == null) {
+            return;
+        }
+        final String libs = additionalLibs.trim();
+        if (libs.isEmpty()) {
+            return;
+        }
+
+        final File libFolder = new File(tomeeHome, "lib");
+        for (final String lib : libs.split("\n")) {
+            final String location = ProvisioningUtil.realLocation(lib.trim());
+            final File from = new File(location);
+            try {
+                org.apache.openejb.loader.IO.copy(from, new File(libFolder, 
from.getName()));
+            } catch (final IOException e) {
+                throw new IllegalStateException(e);
+            }
+        }
+    }
+
     private static class DirectFileOnlyFilter implements FileFilter {
         private final File accepted;
 

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml 
(original)
+++ tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/pom.xml 
Mon Jul 21 14:58:53 2014
@@ -163,6 +163,13 @@
       <version>3.1</version>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>org.apache.sirona</groupId>
+      <artifactId>sirona-web</artifactId>
+      <version>0.2-incubating</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
 Mon Jul 21 14:58:53 2014
@@ -39,6 +39,7 @@ public class RemoteTomEEConfiguration ex
     private String conf;
     private String bin;
     private String lib;
+    private String additionalLibs;
     private boolean cleanOnStartUp;
     private boolean debug;
     private int debugPort = 5005;
@@ -88,6 +89,15 @@ public class RemoteTomEEConfiguration ex
     public void setType(final String type) {
         this.type = type;
     }
+    
+    public String getAdditionalLibs() {
+        return additionalLibs;
+    }
+
+    @Multiline
+    public void setAdditionalLibs(final String additionalLibs) {
+        this.additionalLibs = additionalLibs;
+    }
 
     public String getArtifactName() {
 

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 Mon Jul 21 14:58:53 2014
@@ -202,6 +202,7 @@ public class RemoteTomEEContainer extend
         Setup.synchronizeFolder(tomeeHome, configuration.getConf(), "conf");
         Setup.synchronizeFolder(tomeeHome, configuration.getBin(), "bin");
         Setup.synchronizeFolder(tomeeHome, configuration.getLib(), "lib");
+        Setup.addTomEELibraries(tomeeHome, configuration.getAdditionalLibs());
 
         Setup.configureServerXml(tomeeHome, configuration);
 

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-remote/src/test/resources/arquillian.xml
 Mon Jul 21 14:58:53 2014
@@ -26,6 +26,11 @@
                <property name="stopPort">-1</property>
                <property name="ajpPort">-1</property>
                <property name="dir">target/apache-tomee-remote</property>
+               <property name="additionalLibs">
+                 mvn:org.apache.sirona:sirona-core:0.2-incubating
+                 mvn:org.apache.sirona:sirona-aop:0.2-incubating
+                 mvn:org.apache.sirona:sirona-web:0.2-incubating
+               </property>
                <property 
name="appWorkingDir">target/arquillian-test-working-dir</property>
                <property name="properties">
                   openejb.classloader.forced-load=org.apache.openejb

Modified: 
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
 Mon Jul 21 14:58:53 2014
@@ -147,6 +147,7 @@ public class ThreadSingletonServiceImpl 
                 webBeansContext = new WebappWebBeansContext(services, 
properties, appContext.getWebBeansContext());
                 
startupObject.getWebContext().setWebbeansContext(webBeansContext);
             }
+            SystemInstance.get().fireEvent(new 
WebBeansContextCreated(webBeansContext));
             
OpenEJBTransactionService.class.cast(services.get(TransactionService.class)).setWebBeansContext(webBeansContext);
 
             // do it only here to get the webbeanscontext

Modified: 
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
 Mon Jul 21 14:58:53 2014
@@ -19,19 +19,60 @@ package org.apache.openejb.server.cxf.rs
 import org.apache.cxf.Bus;
 import org.apache.cxf.binding.BindingFactoryManager;
 import org.apache.cxf.jaxrs.JAXRSBindingFactory;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+import 
org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.cdi.WebBeansContextCreated;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.observer.Observes;
+import org.apache.openejb.rest.AbstractRestThreadLocalProxy;
 import org.apache.openejb.rest.RESTResourceFinder;
+import org.apache.openejb.rest.ThreadLocalContextManager;
 import org.apache.openejb.server.ServiceException;
 import org.apache.openejb.server.cxf.transport.HttpTransportFactory;
 import org.apache.openejb.server.cxf.transport.util.CxfUtil;
 import org.apache.openejb.server.rest.RESTService;
 import org.apache.openejb.server.rest.RsHttpListener;
-
+import org.apache.openejb.spi.ContainerSystem;
+import org.apache.webbeans.annotation.AnyLiteral;
+import org.apache.webbeans.annotation.EmptyAnnotationLiteral;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.BeanManagerImpl;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.util.AnnotationLiteral;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Request;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Providers;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
 import java.net.Socket;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Properties;
+import java.util.Set;
+
+import static java.util.Arrays.asList;
 
 public class CxfRSService extends RESTService {
 
@@ -53,6 +94,26 @@ public class CxfRSService extends RESTSe
         return NAME;
     }
 
+    public void integrateCDIAndJaxRsInjections(@Observes final 
WebBeansContextCreated event) {
+        contextCDIIntegration(event.getContext());
+    }
+
+    private void contextCDIIntegration(final WebBeansContext wbc) {
+        final BeanManagerImpl beanManagerImpl = wbc.getBeanManagerImpl();
+        beanManagerImpl.addAdditionalQualifier(Context.class);
+        beanManagerImpl.addInternalBean(new 
ContextBean<SecurityContext>(SecurityContext.class, 
ThreadLocalContextManager.SECURITY_CONTEXT));
+        beanManagerImpl.addInternalBean(new 
ContextBean<UriInfo>(UriInfo.class, ThreadLocalContextManager.URI_INFO));
+        beanManagerImpl.addInternalBean(new 
ContextBean<HttpServletRequest>(HttpServletRequest.class, 
ThreadLocalContextManager.HTTP_SERVLET_REQUEST));
+        beanManagerImpl.addInternalBean(new 
ContextBean<HttpServletResponse>(HttpServletResponse.class, 
ThreadLocalContextManager.HTTP_SERVLET_RESPONSE));
+        beanManagerImpl.addInternalBean(new 
ContextBean<HttpHeaders>(HttpHeaders.class, 
ThreadLocalContextManager.HTTP_HEADERS));
+        beanManagerImpl.addInternalBean(new 
ContextBean<Request>(Request.class, ThreadLocalContextManager.REQUEST));
+        beanManagerImpl.addInternalBean(new 
ContextBean<ServletRequest>(ServletRequest.class, 
ThreadLocalContextManager.SERVLET_REQUEST));
+        beanManagerImpl.addInternalBean(new 
ContextBean<ServletContext>(ServletContext.class, 
ThreadLocalContextManager.SERVLET_CONTEXT));
+        beanManagerImpl.addInternalBean(new 
ContextBean<ServletConfig>(ServletConfig.class, 
ThreadLocalContextManager.SERVLET_CONFIG));
+        beanManagerImpl.addInternalBean(new 
ContextBean<Providers>(Providers.class, ThreadLocalContextManager.PROVIDERS));
+        beanManagerImpl.addInternalBean(new 
ContextBean<ContextResolver>(ContextResolver.class, 
ThreadLocalContextManager.CONTEXT_RESOLVER));
+    }
+
     @Override
     public void init(final Properties properties) throws Exception {
         super.init(properties);
@@ -105,4 +166,97 @@ public class CxfRSService extends RESTSe
     protected RsHttpListener createHttpListener() {
         return new CxfRsHttpListener(httpTransportFactory, getWildcard());
     }
+
+    private static class ContextLiteral extends 
EmptyAnnotationLiteral<Context> implements Context {
+        private static final long serialVersionUID = 1L;
+
+        public static final AnnotationLiteral<Context> INSTANCE = new 
ContextLiteral();
+    }
+
+    private static class ContextBean<T> implements Bean<T> {
+        private final Class<T> type;
+        private final Set<Type> types;
+        private final Set<Annotation> qualifiers;
+        private final T proxy;
+
+        public ContextBean(final Class<T> type, final 
AbstractRestThreadLocalProxy<T> proxy) {
+            this.type = type;
+            this.proxy =
+                (T) 
Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new 
Class<?>[]{type, Serializable.class}, new DelegateHandler(proxy));
+            this.types = new HashSet<Type>(asList(Object.class, type));
+            this.qualifiers = new 
HashSet<Annotation>(asList(ContextLiteral.INSTANCE, AnyLiteral.INSTANCE));
+        }
+
+        @Override
+        public Set<Type> getTypes() {
+            return types;
+        }
+
+        @Override
+        public Set<Annotation> getQualifiers() {
+            return qualifiers;
+        }
+
+        @Override
+        public Class<? extends Annotation> getScope() {
+            return ApplicationScoped.class;
+        }
+
+        @Override
+        public String getName() {
+            return null;
+        }
+
+        @Override
+        public boolean isNullable() {
+            return false;
+        }
+
+        @Override
+        public Set<InjectionPoint> getInjectionPoints() {
+            return Collections.<InjectionPoint>emptySet();
+        }
+
+        @Override
+        public Class<?> getBeanClass() {
+            return type;
+        }
+
+        @Override
+        public Set<Class<? extends Annotation>> getStereotypes() {
+            return Collections.<Class<? extends Annotation>>emptySet();
+        }
+
+        @Override
+        public boolean isAlternative() {
+            return false;
+        }
+
+        @Override
+        public T create(final CreationalContext<T> tCreationalContext) {
+            return proxy;
+        }
+
+        @Override
+        public void destroy(final T t, final CreationalContext<T> 
tCreationalContext) {
+            // no-op
+        }
+    }
+
+    private static class DelegateHandler<T> implements InvocationHandler {
+        private final AbstractRestThreadLocalProxy<T> proxy;
+
+        public DelegateHandler(final AbstractRestThreadLocalProxy<T> proxy) {
+            this.proxy = proxy;
+        }
+
+        @Override
+        public Object invoke(final Object ignored, final Method method, final 
Object[] args) throws Throwable {
+            try {
+                return method.invoke(proxy.get(), args);
+            } catch (final InvocationTargetException ite) {
+                throw ite.getCause();
+            }
+        }
+    }
 }

Modified: 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
 Mon Jul 21 14:58:53 2014
@@ -39,6 +39,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Iterator;
+import java.util.LinkedList;
 
 public class LazyStopWebappClassLoader extends WebappClassLoader {
     private static final Logger LOGGER = 
Logger.getInstance(LogCategory.OPENEJB, 
LazyStopWebappClassLoader.class.getName());
@@ -48,9 +49,10 @@ public class LazyStopWebappClassLoader e
     public static final String TOMEE_WEBAPP_FIRST = "tomee.webapp-first";
 
     private boolean restarting;
-    private boolean forceStopPhase = 
Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase",
 "false"));
+    private final boolean forceStopPhase = 
Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase",
 "false"));
     private ClassLoaderConfigurer configurer;
     private final int hashCode;
+    private Collection<File> additionalRepos;
 
     public LazyStopWebappClassLoader() {
         j2seClassLoader = getSystemClassLoader();
@@ -77,13 +79,18 @@ public class LazyStopWebappClassLoader e
         }
     }
 
+    public Collection<File> getAdditionalRepos() {
+        initAdditionalRepos();
+        return additionalRepos;
+    }
+
     @Override
     public Class<?> loadClass(final String name) throws ClassNotFoundException 
{
         if ("org.apache.openejb.hibernate.OpenEJBJtaPlatform".equals(name)
-                || 
"org.apache.openejb.jpa.integration.hibernate.PrefixNamingStrategy".equals(name)
-                || 
"org.apache.openejb.jpa.integration.eclipselink.PrefixSessionCustomizer".equals(name)
-                || 
"org.apache.openejb.eclipselink.JTATransactionController".equals(name)
-                || 
"org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)) {
+            || 
"org.apache.openejb.jpa.integration.hibernate.PrefixNamingStrategy".equals(name)
+            || 
"org.apache.openejb.jpa.integration.eclipselink.PrefixSessionCustomizer".equals(name)
+            || 
"org.apache.openejb.eclipselink.JTATransactionController".equals(name)
+            || "org.apache.tomee.mojarra.TomEEInjectionProvider".equals(name)) 
{
             // don't load them from system classloader (breaks all in embedded 
mode and no sense in other cases)
             synchronized (this) {
                 final ClassLoader old = j2seClassLoader;
@@ -158,17 +165,12 @@ public class LazyStopWebappClassLoader e
         return restarting;
     }
 
-    // embeddeding implementation of sthg (JPA, JSF) can lead to classloading 
issues if we don't enrich the webapp
-    // with our integration jars
-    // typically the class will try to be loaded by the common classloader
-    // but the interface implemented or the parent class
-    // will be in the webapp
-    @Override
-    public void start() throws LifecycleException {
-        super.start(); // do it first otherwise we can't use this as 
classloader
-
-        // mainly for tomee-maven-plugin
+    public synchronized void initAdditionalRepos() {
+        if (additionalRepos != null) {
+            return;
+        }
         if (CONTEXT.get() != null) {
+            additionalRepos = new LinkedList<File>();
             final String root = 
CONTEXT.get().getServletContext().getRealPath("/");
             if (root != null) {
                 final String externalRepositories = 
SystemInstance.get().getProperty("tomee." + new File(root).getName() + 
".externalRepositories");
@@ -177,16 +179,35 @@ public class LazyStopWebappClassLoader e
                     for (final String additional : 
externalRepositories.split(",")) {
                         final String trim = additional.trim();
                         if (!trim.isEmpty()) {
-                            try { // not addURL to look here first
-                                super.addRepository(new 
File(trim).toURI().toURL().toExternalForm());
-                            } catch (final MalformedURLException e) {
-                                LOGGER.error(e.getMessage());
-                            }
+                            final File file = new File(trim);
+                            additionalRepos.add(file);
                         }
                     }
                 }
             }
         }
+    }
+
+    // embeddeding implementation of sthg (JPA, JSF) can lead to classloading 
issues if we don't enrich the webapp
+    // with our integration jars
+    // typically the class will try to be loaded by the common classloader
+    // but the interface implemented or the parent class
+    // will be in the webapp
+    @Override
+    public void start() throws LifecycleException {
+        super.start(); // do it first otherwise we can't use this as 
classloader
+
+        // mainly for tomee-maven-plugin
+        initAdditionalRepos();
+        if (additionalRepos != null) {
+            for (final File f : additionalRepos) {
+                try { // not addURL to look here first
+                    super.addRepository(f.toURI().toURL().toExternalForm());
+                } catch (final MalformedURLException e) {
+                    LOGGER.error(e.getMessage());
+                }
+            }
+        }
 
         // add configurer enrichments
         if (configurer != null) {

Modified: 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/AdditionalDocBase.java
 Mon Jul 21 14:58:53 2014
@@ -18,7 +18,10 @@ package org.apache.tomee.catalina.naming
 
 import org.apache.naming.resources.FileDirContext;
 
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
 import java.io.File;
+import java.util.Date;
 
 // a normal FileDirContext just unwrapping tomcat prefix
 // to simulate a normal webapp dir and not a jar one
@@ -28,6 +31,7 @@ public class AdditionalDocBase extends F
     private static final String PREFIX = "/META-INF/resources";
     private static final int PREFIX_LENGTH = PREFIX.length();
     private static final String WEB_INF_CLASSES = "/WEB-INF/classes";
+    private static final boolean RESPECT_HEADERS = 
Boolean.getBoolean("tomee.AdditionalDocBase.respect-headers");
 
     @Override
     protected File file(final String name) {
@@ -39,4 +43,37 @@ public class AdditionalDocBase extends F
         }
         return super.file(name);
     }
+
+    @Override
+    protected Attributes doGetAttributes(final String name, final String[] 
attrIds) throws NamingException {
+        if (RESPECT_HEADERS) {
+            return super.doGetAttributes(name, attrIds);
+        }
+        final File file = file(name);
+        if (file == null) {
+            return null;
+        }
+        return new ForceRefeshAttributes(file);
+    }
+
+    private class ForceRefeshAttributes extends FileResourceAttributes {
+        public ForceRefeshAttributes(final File file) {
+            super(file);
+        }
+
+        @Override
+        public String getETag() {
+            return null;
+        }
+
+        @Override
+        public Date getLastModifiedDate() {
+            return new Date();
+        }
+
+        @Override
+        public long getLastModified() {
+            return System.currentTimeMillis();
+        }
+    }
 }

Modified: 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/resources/EmptyDirContext.java
 Mon Jul 21 14:58:53 2014
@@ -18,8 +18,10 @@ package org.apache.tomee.catalina.naming
 
 import org.apache.catalina.core.StandardContext;
 import org.apache.naming.resources.FileDirContext;
+import org.apache.tomee.catalina.LazyStopWebappClassLoader;
 
 import java.io.File;
+import java.util.Collection;
 
 // we need a FileDirContext (so doesn't work with not exploded wars) for boot 
time
 // note lifecycle is a quick one mainly used internally, other listeners are 
not intended to be used
@@ -50,6 +52,14 @@ public class EmptyDirContext extends Fil
         if (shouldLookup(name)) {
             return super.file(name);
         }
+        if ("/WEB-INF/classes".equals(name)) {
+            if (context.getLoader() != null && 
LazyStopWebappClassLoader.class.isInstance(context.getLoader().getClassLoader()))
 {
+                final Collection<File> repos = 
LazyStopWebappClassLoader.class.cast(context.getLoader().getClassLoader()).getAdditionalRepos();
+                if (repos != null && !repos.isEmpty()) {
+                    return repos.iterator().next();
+                }
+            }
+        }
         return null;
     }
 

Modified: 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
 Mon Jul 21 14:58:53 2014
@@ -41,15 +41,16 @@ public class Installer implements Instal
 
     private static final boolean listenerInstalled;
     private static final boolean agentInstalled;
+
     static {
         final Options opts = SystemInstance.get().getOptions();
         // is the OpenEJB listener installed
         listenerInstalled = 
"OpenEJBListener".equals(opts.get("openejb.embedder.source", ""))
-                || "ServerListener".equals(opts.get("openejb.embedder.source", 
""));
+            || "ServerListener".equals(opts.get("openejb.embedder.source", 
""));
 
         // is the OpenEJB javaagent installed
         agentInstalled = InstallerTools.invokeStaticNoArgMethod(
-                "org.apache.openejb.javaagent.Agent", "getInstrumentation") != 
null;
+            "org.apache.openejb.javaagent.Agent", "getInstrumentation") != 
null;
     }
 
     public static boolean isListenerInstalled() {
@@ -152,21 +153,21 @@ public class Installer implements Instal
 
         // add our listener
         final String roleUserTags =
-                "  <role rolename=\"tomee-admin\" />\n" +
-                        "  <user username=\"tomee\" password=\"tomee\" 
roles=\"tomee-admin,manager-gui\" />\n";
+            "  <role rolename=\"tomee-admin\" />\n" +
+                "  <user username=\"tomee\" password=\"tomee\" 
roles=\"tomee-admin,manager-gui\" />\n";
         final String content;
         if (!securityActivated) {
             content =
-                    "  <!-- Activate those lines to get access to TomEE GUI 
-->\n" +
-                            "  <!--\n" +
-                            roleUserTags +
-                            "  -->\n" +
-                            "</tomcat-users>\n";
+                "  <!-- Activate those lines to get access to TomEE GUI -->\n" 
+
+                    "  <!--\n" +
+                    roleUserTags +
+                    "  -->\n" +
+                    "</tomcat-users>\n";
         } else {
             content =
-                    "  <!-- Activate those lines to get access to TomEE GUI\n 
-->" +
-                            roleUserTags +
-                            "</tomcat-users>\n";
+                "  <!-- Activate those lines to get access to TomEE GUI\n -->" 
+
+                    roleUserTags +
+                    "</tomcat-users>\n";
 
         }
         final String newTomcatUsers = 
tomcatUsersXml.replace("</tomcat-users>", content);
@@ -197,22 +198,27 @@ public class Installer implements Instal
         }
     }
 
+    private void removeTomcatLibJar(final String name) {
+        final File jar = new File(paths.getCatalinaLibDir(), name);
+        removeJar(jar);
+    }
+
     private void commentDeploymentDir() {
         final File tomeeXml = new File(paths.getCatalinaConfDir(), 
"tomee.xml");
         if (!tomeeXml.exists()) {
             Installers.writeAll(tomeeXml,
-                    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                            "<tomee>\n" +
-                            "  <!-- see 
http://tomee.apache.org/containers-and-resources.html -->\n\n" +
-                            "  <!-- activate next line to be able to deploy 
applications in apps -->\n" +
-                            "  <!-- <Deployments dir=\"apps\" /> -->\n" +
-                            "</tomee>\n", alerts);
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                    "<tomee>\n" +
+                    "  <!-- see 
http://tomee.apache.org/containers-and-resources.html -->\n\n" +
+                    "  <!-- activate next line to be able to deploy 
applications in apps -->\n" +
+                    "  <!-- <Deployments dir=\"apps\" /> -->\n" +
+                    "</tomee>\n", alerts);
         }
     }
 
     private void addTomEELinkToTomcatHome() {
         final File home = paths.getHome();
-        if(!home.exists()) {
+        if (!home.exists()) {
             return;
         }
         final String indeJsp = Installers.readAll(home, alerts);
@@ -226,10 +232,10 @@ public class Installer implements Instal
         }
 
         final String newIndeJsp = indeJsp.replaceFirst("<div id=\"actions\">",
-                "<div id=\\\"actions\\\">\r\n" +
-                        "                    <div class=\"button\">\n" +
-                        "                        <a class=\"container shadow\" 
href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
-                        "                    </div>");
+            "<div id=\\\"actions\\\">\r\n" +
+                "                    <div class=\"button\">\n" +
+                "                        <a class=\"container shadow\" 
href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
+                "                    </div>");
         Installers.writeAll(home, newIndeJsp, alerts);
     }
 
@@ -253,7 +259,7 @@ public class Installer implements Instal
                     alerts.addInfo("Copy " + file.getName() + " to lib");
                 } catch (final IOException e) {
                     alerts.addError("Unable to " + file.getName() + " to 
Tomcat lib directory.  This will need to be " +
-                            "performed manually.", e);
+                        "performed manually.", e);
                 }
             }
         }
@@ -269,7 +275,7 @@ public class Installer implements Instal
 
         final File jaxbApi = paths.findOpenEJBJar("geronimo-jaxb_2.2_spec");
         copyClasses(paths.getJavaEEAPIJar(), jaxbApi, new File(endorsed, 
"jaxb-api.jar"), "javax/xml/bind/.*",
-                Arrays.asList("javax/xml/bind/ContextFinder.class", 
"javax/xml/bind/DatatypeConverter.class"));
+            Arrays.asList("javax/xml/bind/ContextFinder.class", 
"javax/xml/bind/DatatypeConverter.class"));
         removeJar(jaxbApi);
 
         // don't put jaxb-impl in endorsed since it relies on the jvm itself
@@ -381,11 +387,6 @@ public class Installer implements Instal
         }
     }
 
-    private void removeTomcatLibJar(final String name) {
-        final File jar = new File(paths.getCatalinaLibDir(), name);
-        removeJar(jar);
-    }
-
     public void installListener() {
         installListener("org.apache.tomee.loader.OpenEJBListener");
     }
@@ -436,12 +437,12 @@ public class Installer implements Instal
         String newServerXml = null;
         try {
             newServerXml = Installers.replace(serverXmlOriginal,
-                    "<Server",
-                    "<Server",
-                    ">",
-                    ">\r\n" +
-                            "  <!-- TomEE plugin for Tomcat -->\r\n" +
-                            "  <Listener className=\"" + listener + "\" />");
+                "<Server",
+                "<Server",
+                ">",
+                ">\r\n" +
+                    "  <!-- TomEE plugin for Tomcat -->\r\n" +
+                    "  <Listener className=\"" + listener + "\" />");
         } catch (final IOException e) {
             alerts.addError("Error while adding listener to server.xml file", 
e);
         }
@@ -509,12 +510,12 @@ public class Installer implements Instal
         // add our magic bits to the catalina sh file
         String openejbJavaagentPath = 
paths.getCatalinaHomeDir().toURI().relativize(javaagentJar.toURI()).getPath();
         final String newCatalinaSh = catalinaShOriginal.replace("# ----- 
Execute The Requested Command",
-                "# Add OpenEJB javaagent\n" +
-                        "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath + 
" ]; then\n" +
-                        "  JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" + 
openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
-                        "fi\n" +
-                        "\n" +
-                        "# ----- Execute The Requested Command");
+            "# Add OpenEJB javaagent\n" +
+                "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath + " ]; 
then\n" +
+                "  JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" + 
openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
+                "fi\n" +
+                "\n" +
+                "# ----- Execute The Requested Command");
 
         // overwrite the catalina.sh file
         if (Installers.writeAll(paths.getCatalinaShFile(), newCatalinaSh, 
alerts)) {
@@ -522,14 +523,14 @@ public class Installer implements Instal
         }
 
         boolean isCatalinaShExecutable = 
paths.getCatalinaShFile().canExecute();
-        if(!isCatalinaShExecutable) {
+        if (!isCatalinaShExecutable) {
             try {
                 isCatalinaShExecutable = 
paths.getCatalinaShFile().setExecutable(true);
             } catch (final SecurityException e) {
                 alerts.addWarning("Cannot change CatalinaSh executable 
attribute.");
             }
         }
-        if(!isCatalinaShExecutable) {
+        if (!isCatalinaShExecutable) {
             alerts.addWarning("CatalinaSh is not executable.");
         }
 
@@ -559,12 +560,12 @@ public class Installer implements Instal
         // add our magic bits to the catalina bat file
         openejbJavaagentPath = openejbJavaagentPath.replace('/', '\\');
         final String newCatalinaBat = catalinaBatOriginal.replace("rem ----- 
Execute The Requested Command",
-                "rem Add OpenEJB javaagent\r\n" +
-                        "if not exist \"%CATALINA_HOME%\\" + 
openejbJavaagentPath + "\" goto noOpenEJBJavaagent\r\n" +
-                        "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" + 
openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
-                        ":noOpenEJBJavaagent\r\n" +
-                        "\r\n" +
-                        "rem ----- Execute The Requested Command");
+            "rem Add OpenEJB javaagent\r\n" +
+                "if not exist \"%CATALINA_HOME%\\" + openejbJavaagentPath + 
"\" goto noOpenEJBJavaagent\r\n" +
+                "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" + 
openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
+                ":noOpenEJBJavaagent\r\n" +
+                "\r\n" +
+                "rem ----- Execute The Requested Command");
 
         // overwrite the catalina.bat file
         if (Installers.writeAll(paths.getCatalinaBatFile(), newCatalinaBat, 
alerts)) {
@@ -579,9 +580,9 @@ public class Installer implements Instal
      * of tomcat. if there is already a conf/logging.properties file available
      * then this method appends the contents of openejb logging.properties file
      * to the exisiting properties file.
-     *
+     * <p/>
      * Replace web.xml to set jasper in production mode instead of dev mode.
-     *
+     * <p/>
      * NOTE:- If the existing conf/logging.properties file already has some 
openejb specific
      * configuration, then this method will just leave the logging.properties 
file alone
      */
@@ -621,59 +622,59 @@ public class Installer implements Instal
         // now we are using tomcat one of jdk one by default
         //
         final String openejbLoggingProps = 
"################################\r\n" +
-                "# OpenEJB/TomEE specific loggers\r\n" +
-                "################################\r\n" +
-                "#\r\n" +
-                "# ACTIVATE LEVEL/HANDLERS YOU WANT\r\n" +
-                "# IF YOU ACTIVATE 5tomee.org.apache.juli.FileHandler\r\n" +
-                "# ADD IT TO handlers LINE LIKE:\r\n" +
-                "#\r\n" +
-                "# handlers = 1catalina.org.apache.juli.FileHandler, 
2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 
4host-manager.org.apache.juli.FileHandler, 5tomee.org.apache.juli.FileHandler, 
java.util.logging.ConsoleHandler\r\n" +
-                "#\r\n" +
-                "# LEVELS:\r\n" +
-                "# =======\r\n" +
-                "#\r\n" +
-                "# OpenEJB.level             = WARNING\r\n" +
-                "# OpenEJB.options.level     = INFO\r\n" +
-                "# OpenEJB.server.level      = INFO\r\n" +
-                "# OpenEJB.startup.level     = INFO\r\n" +
-                "# OpenEJB.startup.service.level = WARNING\r\n" +
-                "# OpenEJB.startup.config.level = INFO\r\n" +
-                "# OpenEJB.hsql.level        = INFO\r\n" +
-                "# CORBA-Adapter.level       = WARNING\r\n" +
-                "# Transaction.level         = WARNING\r\n" +
-                "# org.apache.activemq.level = SEVERE\r\n" +
-                "# org.apache.geronimo.level = SEVERE\r\n" +
-                "# openjpa.level             = WARNING\r\n" +
-                "# OpenEJB.cdi.level         = INFO\r\n" +
-                "# org.apache.webbeans.level = INFO\r\n" +
-                "# org.apache.openejb.level = FINE\r\n" +
-                "#\r\n" +
-                "# HANDLERS:\r\n" +
-                "# =========\r\n" +
-                "#\r\n" +
-                "# OpenEJB.handlers             = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.options.handlers     = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.server.handlers      = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.startup.handlers     = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.startup.service.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.startup.config.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.hsql.handlers        = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# CORBA-Adapter.handlers       = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# Transaction.handlers         = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# org.apache.activemq.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# org.apache.geronimo.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# openjpa.handlers             = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# OpenEJB.cdi.handlers         = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# org.apache.webbeans.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "# org.apache.openejb.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
-                "#\r\n" +
-                "# TOMEE HANDLER SAMPLE:\r\n" +
-                "# =====================\r\n" +
-                "#\r\n" +
-                "# 5tomee.org.apache.juli.FileHandler.level = FINEST\r\n" +
-                "# 5tomee.org.apache.juli.FileHandler.directory = 
${catalina.base}/logs\r\n" +
-                "# 5tomee.org.apache.juli.FileHandler.prefix = tomee.\r\n";
+            "# OpenEJB/TomEE specific loggers\r\n" +
+            "################################\r\n" +
+            "#\r\n" +
+            "# ACTIVATE LEVEL/HANDLERS YOU WANT\r\n" +
+            "# IF YOU ACTIVATE 5tomee.org.apache.juli.FileHandler\r\n" +
+            "# ADD IT TO handlers LINE LIKE:\r\n" +
+            "#\r\n" +
+            "# handlers = 1catalina.org.apache.juli.FileHandler, 
2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 
4host-manager.org.apache.juli.FileHandler, 5tomee.org.apache.juli.FileHandler, 
java.util.logging.ConsoleHandler\r\n" +
+            "#\r\n" +
+            "# LEVELS:\r\n" +
+            "# =======\r\n" +
+            "#\r\n" +
+            "# OpenEJB.level             = WARNING\r\n" +
+            "# OpenEJB.options.level     = INFO\r\n" +
+            "# OpenEJB.server.level      = INFO\r\n" +
+            "# OpenEJB.startup.level     = INFO\r\n" +
+            "# OpenEJB.startup.service.level = WARNING\r\n" +
+            "# OpenEJB.startup.config.level = INFO\r\n" +
+            "# OpenEJB.hsql.level        = INFO\r\n" +
+            "# CORBA-Adapter.level       = WARNING\r\n" +
+            "# Transaction.level         = WARNING\r\n" +
+            "# org.apache.activemq.level = SEVERE\r\n" +
+            "# org.apache.geronimo.level = SEVERE\r\n" +
+            "# openjpa.level             = WARNING\r\n" +
+            "# OpenEJB.cdi.level         = INFO\r\n" +
+            "# org.apache.webbeans.level = INFO\r\n" +
+            "# org.apache.openejb.level = FINE\r\n" +
+            "#\r\n" +
+            "# HANDLERS:\r\n" +
+            "# =========\r\n" +
+            "#\r\n" +
+            "# OpenEJB.handlers             = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.options.handlers     = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.server.handlers      = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.startup.handlers     = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.startup.service.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.startup.config.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.hsql.handlers        = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# CORBA-Adapter.handlers       = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# Transaction.handlers         = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# org.apache.activemq.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# org.apache.geronimo.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# openjpa.handlers             = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# OpenEJB.cdi.handlers         = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# org.apache.webbeans.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "# org.apache.openejb.handlers = 
5tomee.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler\r\n" +
+            "#\r\n" +
+            "# TOMEE HANDLER SAMPLE:\r\n" +
+            "# =====================\r\n" +
+            "#\r\n" +
+            "# 5tomee.org.apache.juli.FileHandler.level = FINEST\r\n" +
+            "# 5tomee.org.apache.juli.FileHandler.directory = 
${catalina.base}/logs\r\n" +
+            "# 5tomee.org.apache.juli.FileHandler.prefix = tomee.\r\n";
         final File loggingPropsFile = new File(confDir, "logging.properties");
         String newLoggingProps = null;
         if (!loggingPropsFile.exists()) {
@@ -683,8 +684,8 @@ public class Installer implements Instal
             if (!loggingPropsOriginal.toLowerCase().contains("openejb")) {
                 // append our properties
                 newLoggingProps = loggingPropsOriginal +
-                        "\r\n\r\n" +
-                        openejbLoggingProps + "\r\n";
+                    "\r\n\r\n" +
+                    openejbLoggingProps + "\r\n";
             }
         }
         if (newLoggingProps != null) {

Modified: 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java?rev=1612301&r1=1612300&r2=1612301&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/SslTomEETest.java
 Mon Jul 21 14:58:53 2014
@@ -40,7 +40,12 @@ public class SslTomEETest {
             try {
                 keyToolClass = Class.forName("sun.security.tools.KeyTool");
             } catch (final ClassNotFoundException e) {
-                keyToolClass = Class.forName("com.ibm.crypto.tools.KeyTool");
+                try {
+                    // in jdk8, the tool changed ...
+                    keyToolClass = 
Class.forName("sun.security.tools.keytool.Main");
+                } catch (final ClassNotFoundException cnfe) {
+                    keyToolClass = 
Class.forName("com.ibm.crypto.tools.KeyTool");
+                }
             }
 
             final String[] args = {


Reply via email to