You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/07/25 00:40:37 UTC
svn commit: r1613316 [1/3] - in /tomee/tomee/trunk: ./
container/openejb-core/src/main/java/org/apache/openejb/assembler/
container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/
container/openejb-core/src/main/java/org/apache/openejb...
Author: rmannibucau
Date: Thu Jul 24 22:40:36 2014
New Revision: 1613316
URL: http://svn.apache.org/r1613316
Log:
TOMEE-1278 tomcat 8.0.x
Added:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
- copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
- copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/scan/EmptyScanner.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/
- copied from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/JULLogger.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/LoggerFactory.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/NoopLogger.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/
tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/
tomee/tomee/trunk/tomee/tomee-juli/src/main/resources/META-INF/services/org.apache.juli.logging.Log
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
- copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Log4jLog.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
- copied, changed from r1612877, tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/log/Slf4jLog.java
Removed:
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/BackportUtil.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/naming/
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/common/TomcatVersion.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/juli/
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/TomEELogConfigurer.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Log4jLog.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Log4jLogFactory.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Slf4jLog.java
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/Slf4jLogFactory.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/EmbeddedJarScanner.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/resources/
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml
tomee/tomee/trunk/pom.xml
tomee/tomee/trunk/tck/cdi-tomee/pom.xml
tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml
tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
tomee/tomee/trunk/tomee/pom.xml
tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatThreadContextListener.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/DeployMessage.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cluster/UndeployMessage.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/remote/TomEERemoteWebapp.java
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
tomee/tomee/trunk/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
tomee/tomee/trunk/tomee/tomee-jaxrs/src/test/java/org/apache/tomee/jaxrs/ReloadingLoaderTest.java
tomee/tomee/trunk/tomee/tomee-juli/pom.xml
tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/AsyncConsoleHandler.java
tomee/tomee/trunk/tomee/tomee-loader/pom.xml
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEJarScanner.java
tomee/tomee/trunk/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomcatHelper.java
tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java
tomee/tomee/trunk/tomee/tomee-webaccess/pom.xml
tomee/tomee/trunk/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java
tomee/tomee/trunk/utils/webdeployer/src/main/java/org/apache/tomee/catalina/deployer/WebappDeployer.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java Thu Jul 24 22:40:36 2014
@@ -36,6 +36,7 @@ import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
@@ -241,6 +242,7 @@ public class DeployerEjb implements Depl
assembler.createApplication(appInfo);
if (SAVE_DEPLOYMENTS || "true".equalsIgnoreCase(properties.getProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, "false"))) {
+ appInfo.properties.setProperty("save-deployment","true");
saveDeployment(file, true);
}
@@ -360,24 +362,24 @@ public class DeployerEjb implements Depl
@Override
public void undeploy(final String moduleId) throws UndeployException, NoSuchApplicationException {
- try {
- assembler.destroyApplication(moduleId);
- } catch (final NoSuchApplicationException nsae) {
- try {
- assembler.destroyApplication(realLocation(moduleId));
- } catch (final Exception e) {
- try {
- assembler.destroyApplication(new File(moduleId).getAbsolutePath());
- } catch (final Exception e2) {
- try {
- assembler.destroyApplication(new File(realLocation(moduleId)).getAbsolutePath());
- } catch (final Exception e3) {
- throw nsae;
- }
+ AppInfo appInfo = assembler.getAppInfo(moduleId);
+ if (appInfo == null) {
+ appInfo = assembler.getAppInfo(realLocation(moduleId));
+ if (appInfo == null) {
+ appInfo = assembler.getAppInfo(new File(moduleId).getAbsolutePath());
+ if (appInfo == null) {
+ appInfo = assembler.getAppInfo(new File(realLocation(moduleId)).getAbsolutePath());
}
}
}
- saveDeployment(new File(moduleId), false);
+ if (appInfo != null) {
+ assembler.destroyApplication(appInfo);
+ if (appInfo.properties.containsKey("save-deployment")) {
+ saveDeployment(new File(moduleId), false);
+ }
+ } else {
+ throw new NoSuchApplicationException(moduleId);
+ }
}
private String contextRoot(final Properties properties, final String jarPath) {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Jul 24 22:40:36 2014
@@ -534,6 +534,10 @@ public class Assembler extends Assembler
}
}
+ public AppInfo getAppInfo(final String path) {
+ return deployedApplications.get(ProvisioningUtil.realLocation(path));
+ }
+
public boolean isDeployed(final String path) {
return deployedApplications.containsKey(ProvisioningUtil.realLocation(path));
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Thu Jul 24 22:40:36 2014
@@ -426,7 +426,7 @@ public class AnnotationDeployer implemen
public AppModule deploy(AppModule appModule) throws OpenEJBException {
if (!appModule.isWebapp() && !appModule.getWebModules().isEmpty()) { // need to scan for jsf stuff at least
try {
- appModule.setEarLibFinder(FinderFactory.createFinder(appModule));
+ appModule.setEarLibFinder(FinderFactory.createFinder(appModule, true));
} catch (final Exception e) {
logger.error("Can't create a finder for ear libs", e);
}
@@ -498,7 +498,7 @@ public class AnnotationDeployer implemen
if (finder == null) {
try {
- finder = FinderFactory.createFinder(clientModule);
+ finder = FinderFactory.createFinder(clientModule, false);
} catch (final MalformedURLException e) {
startupLogger.warning("startup.scrapeFailedForClientModule.url", clientModule.getJarLocation());
return clientModule;
@@ -552,7 +552,7 @@ public class AnnotationDeployer implemen
IAnnotationFinder finder = connectorModule.getFinder();
if (finder == null) {
try {
- finder = FinderFactory.createFinder(connectorModule);
+ finder = FinderFactory.createFinder(connectorModule, false);
connectorModule.setFinder(finder);
} catch (final Exception e) {
// TODO: some sort of error
@@ -1059,7 +1059,7 @@ public class AnnotationDeployer implemen
try {
if (webModule.getFinder() == null) {
- webModule.setFinder(FinderFactory.createFinder(webModule));
+ webModule.setFinder(FinderFactory.createFinder(webModule, true));
}
} catch (final Exception e) {
startupLogger.warning("Unable to scrape for @WebService or @WebServiceProvider annotations. AnnotationFinder failed.", e);
@@ -1277,7 +1277,7 @@ public class AnnotationDeployer implemen
try {
if (ejbModule.getFinder() == null) {
- ejbModule.setFinder(FinderFactory.createFinder(ejbModule));
+ ejbModule.setFinder(FinderFactory.createFinder(ejbModule, true));
}
} catch (final MalformedURLException e) {
startupLogger.warning("startup.scrapeFailedForModule", ejbModule.getJarLocation());
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Thu Jul 24 22:40:36 2014
@@ -93,10 +93,12 @@ import org.apache.openejb.util.URISuppor
import org.apache.openejb.util.URLs;
import org.apache.openejb.util.classloader.URLClassLoaderFirst;
import org.apache.openejb.util.proxy.QueryProxy;
+import org.apache.xbean.finder.IAnnotationFinder;
import org.apache.xbean.finder.MetaAnnotatedClass;
import org.apache.xbean.finder.ResourceFinder;
import javax.ejb.embeddable.EJBContainer;
+import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -917,55 +919,78 @@ public class ConfigurationFactory implem
}
public AppInfo configureApplication(final AppModule appModule) throws OpenEJBException {
- final Collection<Class<?>> extensions = new HashSet<Class<?>>();
- final Collection<String> notLoaded = new HashSet<String>();
+ try {
+ final Collection<Class<?>> extensions = new HashSet<Class<?>>();
+ final Collection<String> notLoaded = new HashSet<String>();
- final List<URL> libs = appModule.getAdditionalLibraries();
- if (libs != null && libs.size() > 0) {
- final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
- extensions.addAll(Extensions.findExtensions(finder));
- notLoaded.addAll(finder.getResourcesNotLoaded());
- }
- for (final EjbModule ejb : appModule.getEjbModules()) {
- try {
- final URI uri = ejb.getModuleUri();
- if (uri.isAbsolute()) {
- final URL url = uri.toURL();
- if (libs != null && !libs.contains(url)) {
- final ResourceFinder finder = new ResourceFinder("META-INF", url);
- extensions.addAll(Extensions.findExtensions(finder));
- notLoaded.addAll(finder.getResourcesNotLoaded());
+ final List<URL> libs = appModule.getAdditionalLibraries();
+ if (libs != null && libs.size() > 0) {
+ final ResourceFinder finder = new ResourceFinder("META-INF", libs.toArray(new URL[libs.size()]));
+ extensions.addAll(Extensions.findExtensions(finder));
+ notLoaded.addAll(finder.getResourcesNotLoaded());
+ }
+ for (final EjbModule ejb : appModule.getEjbModules()) {
+ try {
+ final URI uri = ejb.getModuleUri();
+ if (uri.isAbsolute()) {
+ final URL url = uri.toURL();
+ if (libs != null && !libs.contains(url)) {
+ final ResourceFinder finder = new ResourceFinder("META-INF", url);
+ extensions.addAll(Extensions.findExtensions(finder));
+ notLoaded.addAll(finder.getResourcesNotLoaded());
+ }
}
+ } catch (final IllegalArgumentException iae) {
+ logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), iae);
+ } catch (final MalformedURLException mue) {
+ logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), mue);
+ } catch (final Exception e) {
+ logger.error("can't look for server event listener for module " + ejb.getJarLocation());
}
- } catch (final IllegalArgumentException iae) {
- logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), iae);
- } catch (final MalformedURLException mue) {
- logger.debug("can't look for server event listener for module " + ejb.getModuleUri(), mue);
- } catch (final Exception e) {
- logger.error("can't look for server event listener for module " + ejb.getJarLocation());
}
- }
- for (final WebModule web : appModule.getWebModules()) {
- final List<URL> webLibs = web.getScannableUrls();
- if (webLibs != null && webLibs.size() > 0) {
- final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
- extensions.addAll(Extensions.findExtensions(finder));
- notLoaded.addAll(finder.getResourcesNotLoaded());
+ for (final WebModule web : appModule.getWebModules()) {
+ final List<URL> webLibs = web.getScannableUrls();
+ if (webLibs != null && webLibs.size() > 0) {
+ final ResourceFinder finder = new ResourceFinder("META-INF", webLibs.toArray(new URL[webLibs.size()]));
+ extensions.addAll(Extensions.findExtensions(finder));
+ notLoaded.addAll(finder.getResourcesNotLoaded());
+ }
}
- }
- // add it as early as possible, the ones needing the app classloader will be added later
- Extensions.addExtensions(extensions);
+ // add it as early as possible, the ones needing the app classloader will be added later
+ Extensions.addExtensions(extensions);
- final String location = appModule.getJarLocation();
- logger.info("config.configApp", null != location ? location : appModule.getModuleId());
- deployer.deploy(appModule);
- final AppInfoBuilder appInfoBuilder = new AppInfoBuilder(this);
+ final String location = appModule.getJarLocation();
+ logger.info("config.configApp", null != location ? location : appModule.getModuleId());
+ deployer.deploy(appModule);
+ final AppInfoBuilder appInfoBuilder = new AppInfoBuilder(this);
- final AppInfo info = appInfoBuilder.build(appModule);
- info.eventClassesNeedingAppClassloader.addAll(notLoaded);
+ final AppInfo info = appInfoBuilder.build(appModule);
+ info.eventClassesNeedingAppClassloader.addAll(notLoaded);
- return info;
+ return info;
+ } finally {
+ destroy(appModule.getEarLibFinder());
+ for (final EjbModule ejb : appModule.getEjbModules()) {
+ destroy(ejb.getFinder());
+ }
+ for (final WebModule web : appModule.getWebModules()) {
+ destroy(web.getFinder());
+ }
+ }
+ }
+
+ private static void destroy(final IAnnotationFinder finder) {
+ if (finder == null) {
+ return;
+ }
+ if (AutoCloseable.class.isInstance(finder)) {
+ try {
+ AutoCloseable.class.cast(finder).close();
+ } catch (final Exception e) {
+ // no-op
+ }
+ }
}
private static class DefaultService {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Thu Jul 24 22:40:36 2014
@@ -831,7 +831,7 @@ public class DeploymentLoader implements
webModule.setFinder(finder);
webEjbModule.setFinder(finder);
} else {
- final IAnnotationFinder finder = FinderFactory.createFinder(webModule);
+ final IAnnotationFinder finder = FinderFactory.createFinder(webModule, true);
webModule.setFinder(finder);
webEjbModule.setFinder(finder);
}
@@ -1119,7 +1119,7 @@ public class DeploymentLoader implements
IAnnotationFinder finder;
try {
- finder = FinderFactory.createFinder(appModule);
+ finder = FinderFactory.createFinder(appModule, true);
} catch (final Exception e) {
finder = new FinderFactory.ModuleLimitedFinder(new org.apache.xbean.finder.AnnotationFinder(new WebappAggregatedArchive(appModule.getClassLoader(), appModule.getAltDDs(), xmls)));
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Thu Jul 24 22:40:36 2014
@@ -54,27 +54,27 @@ public class FinderFactory {
return factory != null ? factory : FinderFactory.factory;
}
- public static IAnnotationFinder createFinder(final DeploymentModule module) throws Exception {
- return get().create(module);
+ public static IAnnotationFinder createFinder(final DeploymentModule module, final boolean allowAsync) throws Exception {
+ return get().create(module, allowAsync);
}
- public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url) {
- return newFinder(ClasspathArchive.archive(classLoader, url));
+ public static AnnotationFinder getFinder(final ClassLoader classLoader, final URL url, final boolean allowAsync) {
+ return newFinder(ClasspathArchive.archive(classLoader, url), allowAsync);
}
- public IAnnotationFinder create(final DeploymentModule module) throws Exception {
+ public IAnnotationFinder create(final DeploymentModule module, final boolean allowAsync) throws Exception {
final AnnotationFinder finder;
if (module instanceof WebModule) {
final WebModule webModule = (WebModule) module;
- final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()));
+ final AnnotationFinder annotationFinder = newFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()), allowAsync);
enableFinderOptions(annotationFinder);
finder = annotationFinder;
} else if (module instanceof ConnectorModule) {
final ConnectorModule connectorModule = (ConnectorModule) module;
- finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries())).link();
+ finder = newFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries()), allowAsync).link();
} else if (module instanceof AppModule) {
final Collection<URL> urls = NewLoaderLogic.applyBuiltinExcludes(new UrlSet(AppModule.class.cast(module).getAdditionalLibraries())).getUrls();
- finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls));
+ finder = newFinder(new WebappAggregatedArchive(module.getClassLoader(), module.getAltDDs(), urls), allowAsync);
} else if (module.getJarLocation() != null) {
final String location = module.getJarLocation();
final File file = new File(location);
@@ -93,9 +93,9 @@ public class FinderFactory {
if (module instanceof Module) {
final DebugArchive archive = new DebugArchive(new ConfigurableClasspathArchive((Module) module, url));
- finder = newFinder(archive);
+ finder = newFinder(archive, allowAsync);
} else {
- finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)));
+ finder = newFinder(new DebugArchive(new ConfigurableClasspathArchive(module.getClassLoader(), url)), allowAsync);
}
if ("true".equals(SystemInstance.get().getProperty(FORCE_LINK, module.getProperties().getProperty(FORCE_LINK, "false")))) {
finder.link();
@@ -110,8 +110,8 @@ public class FinderFactory {
return new ModuleLimitedFinder(finder);
}
- private static AnnotationFinder newFinder(final Archive archive) {
- if ("true".equals(SystemInstance.get().getProperty(ASYNC_SCAN, "true"))) {
+ private static AnnotationFinder newFinder(final Archive archive, final boolean allowAsync) {
+ if (allowAsync && "true".equals(SystemInstance.get().getProperty(ASYNC_SCAN, "true"))) {
return new AsynchronousInheritanceAnnotationFinder(archive);
}
return new AnnotationFinder(archive);
@@ -155,21 +155,13 @@ public class FinderFactory {
}
private static void enableSubclassing(final AnnotationFinder annotationFinder) {
- if (enableFindSubclasses()) {
- // for @HandleTypes we need interface impl, impl of abstract classes too
- annotationFinder.enableFindSubclasses();
- annotationFinder.enableFindImplementations();
- }
- }
-
- private static boolean enableFindSubclasses() {
- return SystemInstance.get().getOptions().get(FORCE_LINK, false)
- || !SystemInstance.get().getOptions().get(SKIP_LINK, false)
- && (isTomEE() || isJaxRsInstalled() && SystemInstance.get().getOptions().get(TOMEE_JAXRS_DEPLOY_UNDECLARED_PROP, false));
+ // for @HandleTypes we need interface impl, impl of abstract classes too
+ annotationFinder.enableFindSubclasses();
+ annotationFinder.enableFindImplementations();
}
public static boolean isTomEE() {
- try { // since Tomcat 7.0.47
+ try {
FinderFactory.class.getClassLoader().loadClass("javax.websocket.Endpoint");
return true;
} catch (final Throwable e) {
@@ -186,7 +178,7 @@ public class FinderFactory {
}
}
- public static class ModuleLimitedFinder implements IAnnotationFinder {
+ public static class ModuleLimitedFinder implements IAnnotationFinder, AutoCloseable {
private final IAnnotationFinder delegate;
public ModuleLimitedFinder(final IAnnotationFinder delegate) {
@@ -314,6 +306,13 @@ public class FinderFactory {
return delegate;
}
+ @Override
+ public void close() {
+ if (AsynchronousInheritanceAnnotationFinder.class.isInstance(delegate)) {
+ AsynchronousInheritanceAnnotationFinder.class.cast(delegate).destroy();
+ }
+ }
+
private abstract static class Predicate<T> {
protected final List<String> accepted;
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java Thu Jul 24 22:40:36 2014
@@ -186,12 +186,8 @@ public class NewLoaderLogic {
final String name = filter(file).getName();
- if (includeFilter == null || !includeFilter.accept(name)) {
- if (filter != null && filter.accept(name)) {
- return true;
- } else if (excludeFilter != null && excludeFilter.accept(name)) {
- return true;
- }
+ if (skip(includeFilter, excludeFilter, name)) {
+ return true;
}
} catch (final IllegalArgumentException iae) {
// no-op
@@ -200,6 +196,25 @@ public class NewLoaderLogic {
return false;
}
+ private static boolean skip(final Filter includeFilter, final Filter excludeFilter, final String name) {
+ if (includeFilter == null || !includeFilter.accept(name)) {
+ if (filter != null && filter.accept(name)) {
+ return true;
+ } else if (excludeFilter != null && excludeFilter.accept(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean skip(final String name) {
+ getExclusions();
+ if (filter != null && filter.accept(name)) {
+ return true;
+ }
+ return false;
+ }
+
public static UrlSet applyBuiltinExcludes(final UrlSet urlSet, final Filter includeFilter, final Filter excludeFilter) throws MalformedURLException {
getExclusions(); // force init
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStream.java Thu Jul 24 22:40:36 2014
@@ -204,6 +204,9 @@ public class JuliLogStream implements Lo
if (i < elements.length) {
this.sourceClassName = elements[i].getClassName();
this.sourceMethodName = elements[i].getMethodName();
+ } else if (current != null && current.endsWith("LoggerThread")) {
+ this.sourceClassName = ASYNC_LOG_NAME;
+ this.sourceMethodName = "run";
}
this.sourceInited = true;
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java Thu Jul 24 22:40:36 2014
@@ -273,7 +273,9 @@ public class Logger {
public Logger(final LogCategory category, final LogStream logStream, final String baseName) {
this.category = category;
this.baseName = baseName;
- this.logStream = ("true".equals(SystemInstance.get().getProperty("openejb.log.async", "true")) ? new LogStreamAsync(logStream) : logStream);
+ this.logStream = // tomcat is already async so abuse of it
+ ("true".equals(SystemInstance.get().getProperty("openejb.log.async", "true")) && System.getProperty("catalina.home") == null) ?
+ new LogStreamAsync(logStream) : logStream;
}
public static Logger getInstance(final LogCategory category, final Class clazz) {
Modified: tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/resources/default.exclusions Thu Jul 24 22:40:36 2014
@@ -56,8 +56,11 @@ derbyclient-
derbynet-
dom4j
ecj-
+el-api
eclipselink-
FastInfoset
+fleece-core
+fleece-mapper
fusemq-leveldb-
geronimo-
google-
@@ -207,10 +210,12 @@ tomcat-el
tomcat-i18n
tomcat-jasper
tomcat-jdbc
+tomcat-jni
tomcat-jsp
tomcat-juli
tomcat-tribes
tomcat-servlet
+tomcat-spdy
tomcat-util
tomee-
tools.jar
@@ -221,6 +226,7 @@ webbeans-ee
webbeans-ejb
webbeans-impl
webbeans-spi
+websocket-api
woodstox-core-asl-
ws-commons-util-
wsdl4j-
Modified: tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml (original)
+++ tomee/tomee/trunk/examples/deltaspike-fullstack/pom.xml Thu Jul 24 22:40:36 2014
@@ -100,12 +100,6 @@
<id>apache-m2</id>
<name>Apache M2 Repository</name>
<url>https://repository.apache.org/content/repositories/releases/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
</repository>
</repositories>
Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Thu Jul 24 22:40:36 2014
@@ -106,7 +106,7 @@
<maven-bundle-plugin.version>2.3.7</maven-bundle-plugin.version>
<!-- This is used by a manifest classpath entry -->
- <xbeanVersion>3.18</xbeanVersion>
+ <xbeanVersion>3.19-SNAPSHOT</xbeanVersion>
<!-- OSGi bundles properties -->
<openejb.bundle.activator/>
@@ -125,7 +125,7 @@
<!-- to change easily the javaee api version -->
<javaee-api.version>7.0-SNAPSHOT</javaee-api.version>
- <tomcat.version>7.0.54</tomcat.version>
+ <tomcat.version>8.0.9</tomcat.version>
<cxf.version>3.0.2-SNAPSHOT</cxf.version>
<!--2.6.4 requires wss4j 1.6.8-->
Modified: tomee/tomee/trunk/tck/cdi-tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-tomee/pom.xml (original)
+++ tomee/tomee/trunk/tck/cdi-tomee/pom.xml Thu Jul 24 22:40:36 2014
@@ -31,8 +31,7 @@
<openejb.home>${project.build.directory}${file.separator}apache-tomee-${tomee.classifier}-${tomee.version}
</openejb.home>
<openejb.deployer.jndiname>openejb/DeployerBusinessRemote</openejb.deployer.jndiname>
- <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.ContainersImplTomEE
- </org.jboss.testharness.spi.Containers>
+ <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.ContainersImplTomEE</org.jboss.testharness.spi.Containers>
<suiteXmlFile>src/test/resources/passing.xml</suiteXmlFile>
</properties>
@@ -109,6 +108,12 @@
<artifactId>testng</artifactId>
<scope>test</scope>
</dependency>
+ <dependency> <!-- useless but so cool for debug purposes -->
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <version>${tomcat.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<resources>
@@ -243,8 +248,7 @@
<org.jboss.testharness.standalone>false</org.jboss.testharness.standalone>
<org.jboss.testharness.runIntegrationTests>true</org.jboss.testharness.runIntegrationTests>
<org.jboss.testharness.container.forceRestart>true</org.jboss.testharness.container.forceRestart>
- <org.jboss.testharness.libraryDirectory>${project.build.directory}/dependency/lib
- </org.jboss.testharness.libraryDirectory>
+ <org.jboss.testharness.libraryDirectory>${project.build.directory}/dependency/lib</org.jboss.testharness.libraryDirectory>
<org.jboss.testharness.host>127.0.0.1:${tomee.http.port}</org.jboss.testharness.host>
<!--<org.jboss.testharness.outputDirectory>target</org.jboss.testharness.outputDirectory>-->
<deleteArtifacts>true</deleteArtifacts>
@@ -287,8 +291,7 @@
<profile>
<id>webapp-deployer</id>
<properties>
- <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.FullRestartContainer
- </org.jboss.testharness.spi.Containers>
+ <org.jboss.testharness.spi.Containers>org.apache.openejb.tck.impl.FullRestartContainer</org.jboss.testharness.spi.Containers>
<!--suiteXmlFile>src/test/resources/webapps-passing.xml</suiteXmlFile-->
</properties>
</profile>
Modified: tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml (original)
+++ tomee/tomee/trunk/tck/cdi-tomee/src/test/resources/webapps-failing.xml Thu Jul 24 22:40:36 2014
@@ -19,24 +19,12 @@
<suite name="CDI TCK" verbose="0">
<test name="CDI TCK">
- <!--<packages>-->
- <!--<package name="org.jboss.jsr299.tck.tests.*"/>-->
- <!--<package name="org.jboss.jsr299.tck.interceptors.tests.*"/>-->
- <!--</packages>-->
<classes>
- <!--
- NewEnterpriseBeanTest>AbstractTest.run:244->testNewBeanHasNoObservers:95 null
- EnvInjectionTest>AbstractTest.run:244->testProduceEnvProxy:69 » NullPointer
-
--->
- <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.env.EnvInjectionTest"/>
- <!--
- <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.newBean.NewEnterpriseBeanTest">
- <methods>
- <include name="testNewBeanHasNoObservers"/>
- </methods>
- </class>
- -->
+ <class name="org.jboss.jsr299.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest"/>
+ <class name="org.jboss.jsr299.tck.tests.context.conversation.LongRunningConversationPropagatedByFacesContextTest"/>
+ <class name="org.jboss.jsr299.tck.tests.lookup.manager.ManagerTest"/>
+ <class name="org.jboss.jsr299.tck.tests.lookup.manager.jndi.ManagerTest"/>
+ <class name="org.jboss.jsr299.tck.tests.context.conversation.ManualCidPropagationTest"/>
</classes>
</test>
</suite>
Modified: tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java (original)
+++ tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java Thu Jul 24 22:40:36 2014
@@ -65,7 +65,7 @@ public class ContainersImplTomEE extends
public ContainersImplTomEE() {
System.out.println("ContainersImpl=" + ContainersImplTomEE.class.getName());
- System.out.println("Initialized ContainersImplTomEE " + (++count));
+ System.out.println("Initialized ContainersImplTomEE " + (++count) + ", wait port = " + port);
server = new RemoteServer();
server.setPortStartup(this.port);
}
@@ -154,6 +154,7 @@ public class ContainersImplTomEE extends
public void setup() throws IOException {
System.out.println("Setup called");
server.start(Arrays.asList("-Dopenejb.classloader.forced-load=org.apache.openejb.tck"), "start", true);
+ System.out.println("Started");
}
@Override
Modified: tomee/tomee/trunk/tomee/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/pom.xml (original)
+++ tomee/tomee/trunk/tomee/pom.xml Thu Jul 24 22:40:36 2014
@@ -347,7 +347,7 @@
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat7-websocket</artifactId>
+ <artifactId>tomcat-websocket</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
Modified: tomee/tomee/trunk/tomee/tomee-catalina/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/pom.xml?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/pom.xml Thu Jul 24 22:40:36 2014
@@ -101,7 +101,7 @@
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat7-websocket</artifactId>
+ <artifactId>tomcat-websocket</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Contexts.java Thu Jul 24 22:40:36 2014
@@ -111,10 +111,10 @@ public class Contexts {
}
private static File engineBase(final Context standardContext) {
- String base=System.getProperty(Globals.CATALINA_BASE_PROP);
+ final String base = System.getProperty(Globals.CATALINA_BASE_PROP);
if( base == null ) {
final StandardEngine eng = (StandardEngine) standardContext.getParent().getParent();
- base = eng.getBaseDir();
+ return eng.getCatalinaBase();
}
return new File(base);
}
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/GlobalListenerSupport.java Thu Jul 24 22:40:36 2014
@@ -107,17 +107,11 @@ public class GlobalListenerSupport imple
} else if (Lifecycle.BEFORE_START_EVENT.equals(type)) {
contextListener.beforeStart(standardContext);
} else if (Lifecycle.START_EVENT.equals(type)) {
- if (TomcatHelper.isTomcat7()) {
- standardContext.addParameter("openejb.start.late", "true");
- }
-
+ standardContext.addParameter("openejb.start.late", "true");
contextListener.start(standardContext);
} else if (Lifecycle.AFTER_START_EVENT.equals(type)) {
contextListener.afterStart(standardContext);
-
- if (TomcatHelper.isTomcat7()) {
- standardContext.removeParameter("openejb.start.late");
- }
+ standardContext.removeParameter("openejb.start.late");
} else if (Lifecycle.BEFORE_STOP_EVENT.equals(type)) {
contextListener.beforeStop(standardContext);
} else if (Lifecycle.STOP_EVENT.equals(type)) {
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java Thu Jul 24 22:40:36 2014
@@ -21,10 +21,11 @@ import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.core.StandardContext;
+import org.apache.tomee.catalina.scan.EmptyScanner;
public class IgnoredStandardContext extends StandardContext {
public IgnoredStandardContext() {
- setProcessTlds(false);
+ setJarScanner(new EmptyScanner());
// Tomcat has a stupid rule where a life cycle listener must set
// configured true, or it will treat it as a failed deployment
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopLoader.java Thu Jul 24 22:40:36 2014
@@ -16,7 +16,7 @@
*/
package org.apache.tomee.catalina;
-import org.apache.catalina.Container;
+import org.apache.catalina.Context;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleListener;
@@ -111,13 +111,13 @@ public class LazyStopLoader implements L
}
@Override
- public Container getContainer() {
- return delegate.getContainer();
+ public Context getContext() {
+ return delegate.getContext();
}
@Override
- public void setContainer(final Container container) {
- delegate.setContainer(container);
+ public void setContext(final Context context) {
+ delegate.setContext(context);
}
@Override
@@ -131,11 +131,6 @@ public class LazyStopLoader implements L
}
@Override
- public String getInfo() {
- return delegate.getInfo();
- }
-
- @Override
public boolean getReloadable() {
return delegate.getReloadable();
}
@@ -151,16 +146,6 @@ public class LazyStopLoader implements L
}
@Override
- public void addRepository(final String repository) {
- delegate.addRepository(repository);
- }
-
- @Override
- public String[] findRepositories() {
- return delegate.findRepositories();
- }
-
- @Override
public boolean modified() {
return delegate.modified();
}
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Thu Jul 24 22:40:36 2014
@@ -21,18 +21,10 @@ import org.apache.catalina.Context;
import org.apache.catalina.Wrapper;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardWrapper;
-import org.apache.catalina.deploy.ApplicationListener;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.WebXml;
+import org.apache.catalina.deploy.NamingResourcesImpl;
import org.apache.catalina.realm.DataSourceRealm;
import org.apache.catalina.startup.ContextConfig;
import org.apache.naming.factory.Constants;
-import org.apache.naming.resources.BaseDirContext;
-import org.apache.naming.resources.DirContextURLConnection;
-import org.apache.naming.resources.DirContextURLStreamHandler;
-import org.apache.naming.resources.ProxyDirContext;
-import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.ClassListInfo;
import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
@@ -49,9 +41,11 @@ import org.apache.openejb.loader.SystemI
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.URLs;
-import org.apache.openejb.util.reflection.Reflections;
import org.apache.tomcat.util.bcel.classfile.AnnotationEntry;
import org.apache.tomcat.util.bcel.classfile.ElementValuePair;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.JspPropertyGroup;
+import org.apache.tomcat.util.descriptor.web.WebXml;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomee.catalina.realm.TomEEDataSourceRealm;
import org.apache.tomee.common.NamingUtil;
@@ -90,6 +84,7 @@ public class OpenEJBContextConfig extend
private static final String MYFACES_TOMEEM_CONTAINER_INITIALIZER = "org.apache.tomee.myfaces.TomEEMyFacesContainerInitializer";
private static final String TOMEE_MYFACES_CONTEXT_LISTENER = "org.apache.tomee.myfaces.TomEEMyFacesContextListener";
private static final String ADJUST_DATASOURCE_JNDI_NAMES = SystemInstance.get().getProperty("tomee.resources.adjust-web-xml-jndi-name", "true");
+ private static final String DEFERRED_SYNTAX = SystemInstance.get().getProperty("tomee.webxml.deferred-urls");
private static final File BASE = SystemInstance.get().getBase().getDirectory();
private TomcatWebAppBuilder.StandardContextInfo info;
@@ -252,7 +247,7 @@ public class OpenEJBContextConfig extend
@Override
protected void contextConfig(final Digester digester) {
- final NamingResources resources;
+ final NamingResourcesImpl resources;
if (context != null) {
resources = context.getNamingResources();
} else {
@@ -273,7 +268,7 @@ public class OpenEJBContextConfig extend
return;
}
- final NamingResources resources = context.getNamingResources();
+ final NamingResourcesImpl resources = context.getNamingResources();
if (resources == null) {
return;
}
@@ -339,7 +334,20 @@ public class OpenEJBContextConfig extend
prefix = prefix.substring(1);
}
}
- return new OpenEJBWebXml(prefix);
+ final OpenEJBWebXml webXml = new OpenEJBWebXml(prefix);
+
+ if (DEFERRED_SYNTAX != null) {
+ for (final String s : DEFERRED_SYNTAX.split(",")) {
+ if (!s.isEmpty()) {
+ final JspPropertyGroup propertyGroup = new JspPropertyGroup();
+ propertyGroup.addUrlPattern(s);
+ propertyGroup.setDeferredSyntax("true");
+ webXml.addJspPropertyGroup(propertyGroup);
+ }
+ }
+ }
+
+ return webXml;
}
public class OpenEJBWebXml extends WebXml {
@@ -382,7 +390,7 @@ public class OpenEJBContextConfig extend
final Class<?> myfacesInitializer = Class.forName(MYFACES_TOMEEM_CONTAINER_INITIALIZER, true, classLoader);
final ServletContainerInitializer instance = (ServletContainerInitializer) myfacesInitializer.newInstance();
context.addServletContainerInitializer(instance, getJsfClasses(context));
- context.addApplicationListener(new ApplicationListener(TOMEE_MYFACES_CONTEXT_LISTENER, false)); // cleanup listener
+ context.addApplicationListener(TOMEE_MYFACES_CONTEXT_LISTENER); // cleanup listener
} catch (final Exception ignored) {
// no-op
} catch (final NoClassDefFoundError error) {
@@ -535,33 +543,8 @@ public class OpenEJBContextConfig extend
try {
currentUrlAsFile = URLs.toFile(currentUrl);
} catch (final IllegalArgumentException iae) {
- if ("jndi".equals(currentUrl.getProtocol())) {
- String file = currentUrl.getFile();
- try {
- final URLConnection connection = currentUrl.openConnection();
- if (connection instanceof DirContextURLConnection) {
- final DirContextURLStreamHandler handler = DirContextURLStreamHandler.class.cast(Reflections.get(currentUrl, "handler"));
- final ProxyDirContext dirContext = ProxyDirContext.class.cast(Reflections.get(handler, "context"));
- final String host = String.class.cast(Reflections.get(dirContext, "hostName"));
- final String contextPath = String.class.cast(Reflections.get(dirContext, "contextPath"));
- final Object context = Reflections.get(dirContext, "dirContext");
-
- if (BaseDirContext.class.isInstance(context)) {
- file = file.replace("/" + host + contextPath, BaseDirContext.class.cast(context).getDocBase());
- } else {
- throw new OpenEJBRuntimeException("Context not supported: " + context);
- }
-
- currentUrlAsFile = new File(file);
- } else {
- throw new OpenEJBRuntimeException("can't find webapp [" + webAppInfo.contextRoot + "], connection is not a DirContextURLConnection " + connection);
- }
- } catch (final Exception ex) {
- throw new OpenEJBRuntimeException("can't find webapp [" + webAppInfo.contextRoot + "]", ex);
- }
- } else {
- throw new OpenEJBRuntimeException("protocol not supported '" + currentUrl.getProtocol() + "'");
- }
+ logger.error("Don't know this url: " + currentUrl);
+ return;
}
internalProcessAnnotations(currentUrlAsFile, webAppInfo, fragment);
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingContextListener.java Thu Jul 24 22:40:36 2014
@@ -20,14 +20,7 @@ import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.deploy.ContextEjb;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextLocalEjb;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.ResourceBase;
+import org.apache.catalina.deploy.NamingResourcesImpl;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.assembler.classic.ResourceInfo;
@@ -35,6 +28,13 @@ import org.apache.openejb.assembler.dyna
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.tomcat.util.descriptor.web.ContextEjb;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextLocalEjb;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef;
+import org.apache.tomcat.util.descriptor.web.ContextResourceLink;
+import org.apache.tomcat.util.descriptor.web.ResourceBase;
import javax.naming.Context;
import javax.naming.NamingException;
@@ -58,7 +58,7 @@ public class OpenEJBNamingContextListene
/**
* Associated naming resources.
*/
- private final NamingResources namingResources;
+ private final NamingResourcesImpl namingResources;
public OpenEJBNamingContextListener(final StandardServer standardServer) {
this.standardServer = standardServer;
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBNamingResource.java Thu Jul 24 22:40:36 2014
@@ -16,22 +16,22 @@
*/
package org.apache.tomee.catalina;
-import org.apache.catalina.deploy.ContextEjb;
-import org.apache.catalina.deploy.ContextEnvironment;
-import org.apache.catalina.deploy.ContextLocalEjb;
-import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.ContextResourceEnvRef;
-import org.apache.catalina.deploy.ContextResourceLink;
-import org.apache.catalina.deploy.ContextService;
-import org.apache.catalina.deploy.MessageDestinationRef;
-import org.apache.catalina.deploy.NamingResources;
-import org.apache.catalina.deploy.ResourceBase;
+import org.apache.catalina.deploy.NamingResourcesImpl;
+import org.apache.tomcat.util.descriptor.web.ContextEjb;
+import org.apache.tomcat.util.descriptor.web.ContextEnvironment;
+import org.apache.tomcat.util.descriptor.web.ContextLocalEjb;
+import org.apache.tomcat.util.descriptor.web.ContextResource;
+import org.apache.tomcat.util.descriptor.web.ContextResourceEnvRef;
+import org.apache.tomcat.util.descriptor.web.ContextResourceLink;
+import org.apache.tomcat.util.descriptor.web.ContextService;
+import org.apache.tomcat.util.descriptor.web.MessageDestinationRef;
+import org.apache.tomcat.util.descriptor.web.ResourceBase;
import org.apache.tomee.common.NamingUtil;
import java.util.ArrayList;
import java.util.Collection;
-public class OpenEJBNamingResource extends NamingResources {
+public class OpenEJBNamingResource extends NamingResourcesImpl {
private static final String JAVA_PREFIX = "java:";
private boolean isTomcatResource;
@@ -41,7 +41,7 @@ public class OpenEJBNamingResource exten
// no-op
}
- public OpenEJBNamingResource(final NamingResources namingResources) {
+ public OpenEJBNamingResource(final NamingResourcesImpl namingResources) {
if (namingResources != null) {
isTomcatResource = true;
for (final ContextResource resource : namingResources.findResources()) {
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ServerListener.java Thu Jul 24 22:40:36 2014
@@ -27,13 +27,13 @@ import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.OpenEjbVersion;
-import org.apache.tomee.TomEELogConfigurer;
import org.apache.tomee.loader.TomcatHelper;
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -167,8 +167,6 @@ public class ServerListener implements L
loader.initialize(properties);
- TomEELogConfigurer.configureLogs();
-
listenerInstalled.set(true);
} catch (final Exception e) {
LOGGER.log(Level.SEVERE, "TomEE Listener can't start OpenEJB", e);
@@ -201,6 +199,12 @@ public class ServerListener implements L
field.setAccessible(true);
final String version = OpenEjbVersion.get().getVersion();
final String tomeeVersion = (Integer.parseInt(Character.toString(version.charAt(0))) - 3) + version.substring(1, version.length());
+ final int modifiers = field.getModifiers();
+ if (Modifier.isFinal(modifiers)) {
+ final Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, modifiers & ~Modifier.FINAL);
+ }
field.set(null, value.substring(0, slash) + " (TomEE)" + value.substring(slash) + " (" + tomeeVersion + ")");
} catch (final Exception e) {
// no-op
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/SimpleTomEETcpCluster.java Thu Jul 24 22:40:36 2014
@@ -21,14 +21,12 @@ import org.apache.catalina.ha.ClusterLis
import org.apache.catalina.ha.tcp.SimpleTcpCluster;
import org.apache.tomee.catalina.cluster.TomEEClusterListener;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
public class SimpleTomEETcpCluster extends SimpleTcpCluster {
public SimpleTomEETcpCluster(final SimpleTcpCluster from) {
- clusterListeners = new ArrayList<ClusterListener>(Arrays.asList(from.findClusterListeners()));
+ clusterListeners.addAll(Arrays.asList(from.findClusterListeners()));
setClusterName(from.getClusterName());
setContainer(from.getContainer());
@@ -45,12 +43,6 @@ public class SimpleTomEETcpCluster exten
for (final Valve valve : from.getValves()) {
addValve(valve);
}
-
- final Iterator<String> propertyNames = from.getPropertyNames();
- while (propertyNames.hasNext()) {
- final String next = propertyNames.next();
- setProperty(next, from.getProperty(next));
- }
}
@Override
Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java?rev=1613316&r1=1613315&r2=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java Thu Jul 24 22:40:36 2014
@@ -34,11 +34,6 @@ public class TomEERealm extends Combined
private final ThreadLocal<Request> requests = new ThreadLocal<Request>();
@Override
- public String getInfo() {
- return INFO;
- }
-
- @Override
public Principal authenticate(final String username, final String password) {
return logInTomEE(super.authenticate(username, password));
}
Copied: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java (from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java?p2=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java&p1=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java&r1=1612877&r2=1613316&rev=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java Thu Jul 24 22:40:36 2014
@@ -18,16 +18,28 @@ package org.apache.tomee.catalina;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
+import org.apache.catalina.LifecycleState;
+import org.apache.catalina.WebResourceRoot;
+import org.apache.catalina.WebResourceSet;
import org.apache.catalina.loader.WebappClassLoader;
+import org.apache.catalina.webresources.DirResourceSet;
+import org.apache.catalina.webresources.FileResourceSet;
+import org.apache.catalina.webresources.JarResourceSet;
+import org.apache.catalina.webresources.JarWarResourceSet;
+import org.apache.catalina.webresources.StandardRoot;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.classloader.ClassLoaderConfigurer;
+import org.apache.openejb.classloader.CompositeClassLoaderConfigurer;
import org.apache.openejb.classloader.WebAppEnricher;
import org.apache.openejb.config.NewLoaderLogic;
+import org.apache.openejb.config.QuickJarsTxtParser;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.URLs;
import org.apache.openejb.util.classloader.URLClassLoaderFirst;
+import org.apache.openejb.util.reflection.Reflections;
import java.io.File;
import java.io.IOException;
@@ -40,9 +52,11 @@ import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
-public class LazyStopWebappClassLoader extends WebappClassLoader {
- private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, LazyStopWebappClassLoader.class.getName());
+public class TomEEWebappClassLoader extends WebappClassLoader {
+ private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomEEWebappClassLoader.class.getName());
private static final ThreadLocal<ClassLoaderConfigurer> INIT_CONFIGURER = new ThreadLocal<ClassLoaderConfigurer>();
private static final ThreadLocal<Context> CONTEXT = new ThreadLocal<Context>();
@@ -53,13 +67,14 @@ public class LazyStopWebappClassLoader e
private ClassLoaderConfigurer configurer;
private final int hashCode;
private Collection<File> additionalRepos;
+ private volatile ClassLoader j2seClassLoader;
- public LazyStopWebappClassLoader() {
+ public TomEEWebappClassLoader() {
j2seClassLoader = getSystemClassLoader();
hashCode = construct();
}
- public LazyStopWebappClassLoader(final ClassLoader parent) {
+ public TomEEWebappClassLoader(final ClassLoader parent) {
super(parent);
j2seClassLoader = getSystemClassLoader();
hashCode = construct();
@@ -130,8 +145,30 @@ public class LazyStopWebappClassLoader e
}
@Override
- protected boolean validate(final String name) { // static validation, mainly container stuff
- return !URLClassLoaderFirst.shouldSkip(name);
+ public void setResources(final WebResourceRoot resources) {
+ this.resources = resources;
+ if (StandardRoot.class.isInstance(resources)) {
+ final List<WebResourceSet> jars = (List<WebResourceSet>) Reflections.get(resources, "jarResources");
+ if (jars != null && !jars.isEmpty()) {
+ final Iterator<WebResourceSet> jarIt = jars.iterator();
+ while (jarIt.hasNext()) {
+ final WebResourceSet set = jarIt.next();
+ if (set.getBaseUrl() == null) {
+ continue;
+ }
+ final File file = URLs.toFile(set.getBaseUrl());
+ try {
+ if (file.exists() && (!TomEEClassLoaderEnricher.validateJarFile(file) || !jarIsAccepted(file))) {
+ // need to remove this resource
+ LOGGER.warning("Removing " + file.getAbsolutePath() + " since it is offending");
+ jarIt.remove();
+ }
+ } catch (final IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
}
@Override
@@ -140,7 +177,7 @@ public class LazyStopWebappClassLoader e
}
public void internalStop() throws LifecycleException {
- if (isStarted()) {
+ if (getState().isAvailable()) {
// reset classloader because of tomcat classloaderlogmanager
// to be sure we reset the right loggers
final ClassLoader loader = Thread.currentThread().getContextClassLoader();
@@ -175,7 +212,6 @@ public class LazyStopWebappClassLoader e
if (root != null) {
final String externalRepositories = SystemInstance.get().getProperty("tomee." + new File(root).getName() + ".externalRepositories");
if (externalRepositories != null) {
- setSearchExternalFirst(true);
for (final String additional : externalRepositories.split(",")) {
final String trim = additional.trim();
if (!trim.isEmpty()) {
@@ -202,7 +238,7 @@ public class LazyStopWebappClassLoader e
if (additionalRepos != null) {
for (final File f : additionalRepos) {
try { // not addURL to look here first
- super.addRepository(f.toURI().toURL().toExternalForm());
+ super.addURL(f.toURI().toURL());
} catch (final MalformedURLException e) {
LOGGER.error(e.getMessage());
}
@@ -222,6 +258,14 @@ public class LazyStopWebappClassLoader e
for (final URL url : SystemInstance.get().getComponent(WebAppEnricher.class).enrichment(this)) {
super.addURL(url);
}
+
+ // WEB-INF/jars.xml
+ final File war = Contexts.warPath(CONTEXT.get());
+ final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
+ final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
+ if (configurerTxt != null) {
+ configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
+ }
}
public void addURL(final URL url) {
@@ -230,11 +274,6 @@ public class LazyStopWebappClassLoader e
}
}
- @Override
- protected boolean validateJarFile(final File file) throws IOException {
- return super.validateJarFile(file) && TomEEClassLoaderEnricher.validateJarFile(file) && jarIsAccepted(file);
- }
-
private boolean jarIsAccepted(final File file) {
if (configurer == null) {
return true;
@@ -257,7 +296,7 @@ public class LazyStopWebappClassLoader e
@Override
public InputStream getResourceAsStream(final String name) {
- if (!isStarted()) {
+ if (!getState().isAvailable()) {
return null;
}
return super.getResourceAsStream(name);
@@ -265,7 +304,7 @@ public class LazyStopWebappClassLoader e
@Override
public Enumeration<URL> getResources(final String name) throws IOException {
- if (!isStarted()) {
+ if (!getState().isAvailable()) {
return null;
}
Copied: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java (from r1612877, tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java?p2=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java&p1=tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java&r1=1612877&r2=1613316&rev=1613316&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ProvisioningWebappLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java Thu Jul 24 22:40:36 2014
@@ -18,14 +18,12 @@ package org.apache.tomee.catalina;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
-import org.apache.catalina.loader.VirtualWebappLoader;
+import org.apache.catalina.loader.WebappLoader;
import org.apache.openejb.ClassLoaderUtil;
import org.apache.openejb.classloader.ClassLoaderConfigurer;
import org.apache.openejb.classloader.CompositeClassLoaderConfigurer;
import org.apache.openejb.config.QuickJarsTxtParser;
-import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.reflection.Reflections;
import java.io.File;
@@ -42,7 +40,7 @@ import java.io.File;
* />
* </Context>
*/
-public class ProvisioningWebappLoader extends VirtualWebappLoader {
+public class TomEEWebappLoader extends WebappLoader {
public static final boolean SKIP_BACKGROUND_PROCESS = "true".equals(SystemInstance.get().getProperty("tomee.classloader.skip-background-process", "false"));
@Override
@@ -52,13 +50,13 @@ public class ProvisioningWebappLoader ex
}
final ClassLoader classloader = super.getClassLoader();
- if (classloader instanceof LazyStopWebappClassLoader) {
- final LazyStopWebappClassLoader lazyStopWebappClassLoader = (LazyStopWebappClassLoader) classloader;
- lazyStopWebappClassLoader.restarting();
+ if (classloader instanceof TomEEWebappClassLoader) {
+ final TomEEWebappClassLoader tomEEWebappClassLoader = (TomEEWebappClassLoader) classloader;
+ tomEEWebappClassLoader.restarting();
try {
super.backgroundProcess();
} finally {
- lazyStopWebappClassLoader.restarted();
+ tomEEWebappClassLoader.restarted();
}
} else {
super.backgroundProcess();
@@ -75,45 +73,29 @@ public class ProvisioningWebappLoader ex
@Override
protected void startInternal() throws LifecycleException {
- // standard tomcat part
- final StringBuilder builder = new StringBuilder();
- final String classpath = String.class.cast(Reflections.get(this, "virtualClasspath"));
- if (classpath != null && !classpath.isEmpty()) {
- for (final String s : String.class.cast(classpath).split(";")) {
- builder.append(ProvisioningUtil.realLocation(s)).append(";");
- }
- }
+ final Context context = getContext();
- ClassLoaderConfigurer configurer = ClassLoaderUtil.configurer(getContainer().getName());
+ ClassLoaderConfigurer configurer = ClassLoaderUtil.configurer(context.getName());
// WEB-INF/jars.xml
- if (Context.class.isInstance(getContainer())) {
- final File war = Contexts.warPath(Context.class.cast(getContainer()));
- final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
- final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
- if (configurerTxt != null) {
- configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
- }
- }
-
- // clean up builder and set classpath to delegate to parent init
- String cp = builder.toString();
- if (cp.endsWith(";")) {
- cp = cp.substring(0, cp.length() - 1);
+ final File war = Contexts.warPath(Context.class.cast(context));
+ final File jarsXml = new File(war, "WEB-INF/" + QuickJarsTxtParser.FILE_NAME);
+ final ClassLoaderConfigurer configurerTxt = QuickJarsTxtParser.parse(jarsXml);
+ if (configurerTxt != null) {
+ configurer = new CompositeClassLoaderConfigurer(configurer, configurerTxt);
}
- Reflections.set(this, "virtualClasspath", cp);
- LazyStopWebappClassLoader.initContext(configurer);
- LazyStopWebappClassLoader.initContext(Context.class.cast(getContainer()));
+ TomEEWebappClassLoader.initContext(configurer);
+ TomEEWebappClassLoader.initContext(context);
try {
super.startInternal();
} finally {
- LazyStopWebappClassLoader.cleanContext();
+ TomEEWebappClassLoader.cleanContext();
}
}
@Override
public String toString() {
- return "Provisioning" + super.toString();
+ return "TomEE" + super.toString();
}
}