You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ra...@apache.org on 2019/02/03 00:14:00 UTC
[tomee] 01/04: TOMEE-2408 - Added configuration to enable / disable
MP scanning.
This is an automated email from the ASF dual-hosted git repository.
radcortez pushed a commit to branch TOMEE-2408
in repository https://gitbox.apache.org/repos/asf/tomee.git
commit bb478e2722dc1a42b87cf3c81d84500ff198b4b6
Author: Roberto Cortez <ra...@yahoo.com>
AuthorDate: Sat Feb 2 20:07:35 2019 +0000
TOMEE-2408 - Added configuration to enable / disable MP scanning.
---
.../apache/openejb/config/DeploymentLoader.java | 13 +++----------
.../java/org/apache/tomee/installer/Installer.java | 4 ++--
.../microprofile/TomEEMicroProfileListener.java | 22 ++++++++++++++++++++++
.../microprofile/config/TomEEConfigSource.java | 17 ++++++++++++++++-
4 files changed, 43 insertions(+), 13 deletions(-)
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
index 9a09802..d68649c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
@@ -26,7 +26,6 @@ import org.apache.openejb.cdi.CompositeBeans;
import org.apache.openejb.classloader.ClassLoaderConfigurer;
import org.apache.openejb.classloader.WebAppEnricher;
import org.apache.openejb.config.event.AfterContainerUrlScanEvent;
-import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
import org.apache.openejb.config.event.BeforeDeploymentEvent;
import org.apache.openejb.config.sys.Resources;
import org.apache.openejb.core.EmptyResourcesClassLoader;
@@ -62,7 +61,6 @@ import org.apache.xbean.finder.UrlSet;
import org.apache.xbean.finder.archive.ClassesArchive;
import org.apache.xbean.finder.filter.Filter;
import org.apache.xbean.finder.filter.Filters;
-import org.apache.xbean.finder.filter.PatternFilter;
import java.io.BufferedInputStream;
import java.io.File;
@@ -118,9 +116,6 @@ public class DeploymentLoader implements DeploymentFilterable {
private static String ALTDD = SystemInstance.get().getOptions().get(OPENEJB_ALTDD_PREFIX, (String) null);
private volatile List<URL> containerUrls = null;
- private static final String OPENEJB_CONTAINER_INCLUDES = "openejb.scan.webapp.container.includes";
- private static final String OPENEJB_CONTAINER_EXCLUDES = "openejb.scan.webapp.container.excludes";
-
@Deprecated // use load(File, ExternalConfiguration)
public AppModule load(final File jarFile) throws OpenEJBException {
return load(jarFile, null);
@@ -1102,15 +1097,13 @@ public class DeploymentLoader implements DeploymentFilterable {
private void ensureContainerUrls() {
if (containerUrls == null) {
- if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "true"))) {
+ if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "false"))) {
synchronized (this) {
if (containerUrls == null) {
try {
UrlSet urlSet = new UrlSet(ParentClassLoaderFinder.Helper.get());
urlSet = URLs.cullSystemJars(urlSet);
- final PatternFilter containerIncludes = new PatternFilter(SystemInstance.get().getProperty(OPENEJB_CONTAINER_INCLUDES, ""));
- final PatternFilter containerExcludes = new PatternFilter(SystemInstance.get().getProperty(OPENEJB_CONTAINER_EXCLUDES, ""));
- urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet, containerIncludes, containerExcludes);
+ urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
containerUrls = urlSet.getUrls();
final boolean skipContainerFolders = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container.skip-folder", "true"));
@@ -1135,7 +1128,7 @@ public class DeploymentLoader implements DeploymentFilterable {
}
}
} else {
- containerUrls = Collections.emptyList();
+ containerUrls = new ArrayList<>();
}
}
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index bac2c9c..ed06036 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -792,8 +792,8 @@ public class Installer implements InstallerInterface {
systemPropertiesWriter.write("# javax.xml.soap.MetaFactory = com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl\n");
systemPropertiesWriter.write("#\n");
- systemPropertiesWriter.write("# Which paths / libraries should be scanned?\n");
- systemPropertiesWriter.write("openejb.scan.webapp.container = true\n");
+ systemPropertiesWriter.write("# MicroProfile\n");
+ systemPropertiesWriter.write("tomee.mp.scan = none\n");
} catch (final IOException e) {
// ignored, this file is far to be mandatory
diff --git a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
index 1f349e5..17867fc 100644
--- a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
+++ b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
@@ -23,6 +23,7 @@ import org.apache.geronimo.microprofile.metrics.jaxrs.CdiMetricsEndpoints;
import org.apache.geronimo.microprofile.openapi.jaxrs.OpenAPIEndpoint;
import org.apache.openejb.assembler.classic.WebAppInfo;
import org.apache.openejb.config.event.AfterContainerUrlScanEvent;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.observer.Observes;
import org.apache.openejb.observer.event.BeforeEvent;
import org.apache.tomee.catalina.event.AfterApplicationCreated;
@@ -35,6 +36,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
+import java.util.stream.Stream;
public class TomEEMicroProfileListener {
private static final String[] MICROPROFILE_LIBS_IMPLS_PREFIXES = new String[]{
@@ -49,8 +51,28 @@ public class TomEEMicroProfileListener {
"cxf-rt-rs-mp-client",
};
+ private static final String[] MICROPROFILE_EXTENSIONS = new String[]{
+ "org.apache.geronimo.config.cdi.ConfigExtension",
+ "org.apache.safeguard.impl.cdi.SafeguardExtension",
+ "org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension",
+ "org.apache.geronimo.microprofile.impl.health.cdi.GeronimoHealthExtension",
+ "org.apache.geronimo.microprofile.metrics.cdi.MetricsExtension",
+ "org.apache.geronimo.microprofile.opentracing.microprofile.cdi.OpenTracingExtension",
+ "org.apache.geronimo.microprofile.openapi.cdi.GeronimoOpenAPIExtension",
+ "org.apache.cxf.microprofile.client.cdi.RestClientExtension",
+ };
+
@SuppressWarnings("Duplicates")
public void enrichContainerWithMicroProfile(@Observes final AfterContainerUrlScanEvent afterContainerUrlScanEvent) {
+ final String mpScan = SystemInstance.get().getOptions().get("tomee.mp.scan", "all");
+
+ if (mpScan.equals("none")) {
+ Stream.of(MICROPROFILE_EXTENSIONS).forEach(
+ extension -> SystemInstance.get().setProperty(extension + ".active", "false"));
+
+ return;
+ }
+
final List<URL> containerUrls = afterContainerUrlScanEvent.getContainerUrls();
final Paths paths = new Paths(new File(System.getProperty("openejb.home")));
for (final String prefix : MICROPROFILE_LIBS_IMPLS_PREFIXES) {
diff --git a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
index 2f87cbf..9ca9614 100644
--- a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
+++ b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
@@ -24,6 +24,7 @@ import org.eclipse.microprofile.config.spi.ConfigSource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Stream;
import static java.util.Arrays.asList;
@@ -42,9 +43,15 @@ public class TomEEConfigSource implements ConfigSource {
.split(","));
if (mpIgnoredApps.stream().anyMatch(s -> s.equalsIgnoreCase(appContextOrWeb.getId()))) {
- configuration.put("geronimo.opentracing.filter.active", "false");
+ openTracingFilterActive(false);
}
}
+
+ final String mpScan = SystemInstance.get().getOptions().get("tomee.mp.scan", "all");
+ if (mpScan.equals("none")) {
+ openTracingFilterActive(false);
+ openTracingFilterActive(false);
+ }
}
@Override
@@ -61,4 +68,12 @@ public class TomEEConfigSource implements ConfigSource {
public String getName() {
return TomEEConfigSource.class.getSimpleName();
}
+
+ public void openTracingFilterActive(final boolean active) {
+ configuration.put("geronimo.opentracing.filter.active", Boolean.toString(active));
+ }
+
+ public void metricsJaxRsActive(final boolean active) {
+ configuration.put("geronimo.metrics.jaxrs.activated", Boolean.toString(active));
+ }
}