You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2019/02/11 14:15:22 UTC
svn commit: r1853377 - in /openwebbeans/meecrowave/trunk:
meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/
meecrowave-core/src/main/java/org/apache/meecrowave/
meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/ me...
Author: rmannibucau
Date: Mon Feb 11 14:15:22 2019
New Revision: 1853377
URL: http://svn.apache.org/viewvc?rev=1853377&view=rev
Log:
MEECROWAVE-182 MEECROWAVE-181 antijarlocking and global context customizers
Modified:
openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
Modified: openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java?rev=1853377&r1=1853376&r2=1853377&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java Mon Feb 11 14:15:22 2019
@@ -109,6 +109,7 @@ public class MeecrowaveConfiguration imp
private Integer webSessionTimeout;
private String webSessionCookieConfig;
private boolean tomcatJspDevelopment;
+ private boolean antiJarLocking;
// configurable cause when set to Local arquillian bypass some protocol configuration cause of container default
private String arquillianProtocol = "Servlet 3.1";
@@ -811,4 +812,12 @@ public class MeecrowaveConfiguration imp
public void setWebSessionCookieConfig(final String webSessionCookieConfig) {
this.webSessionCookieConfig = webSessionCookieConfig;
}
+
+ public boolean isAntiJarLocking() {
+ return antiJarLocking;
+ }
+
+ public void setAntiJarLocking(final boolean antiJarLocking) {
+ this.antiJarLocking = antiJarLocking;
+ }
}
Modified: openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java?rev=1853377&r1=1853376&r2=1853377&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java Mon Feb 11 14:15:22 2019
@@ -51,6 +51,7 @@ import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -97,7 +98,6 @@ import org.apache.catalina.core.Standard
import org.apache.catalina.session.ManagerBase;
import org.apache.catalina.session.StandardManager;
import org.apache.catalina.startup.Catalina;
-import org.apache.meecrowave.tomcat.MeecrowaveContextConfig;
import org.apache.catalina.startup.Tomcat;
import org.apache.coyote.http2.Http2Protocol;
import org.apache.meecrowave.api.StartListening;
@@ -118,6 +118,7 @@ import org.apache.meecrowave.runner.cli.
import org.apache.meecrowave.service.ValueTransformer;
import org.apache.meecrowave.tomcat.CDIInstanceManager;
import org.apache.meecrowave.tomcat.LoggingAccessLogPattern;
+import org.apache.meecrowave.tomcat.MeecrowaveContextConfig;
import org.apache.meecrowave.tomcat.NoDescriptorRegistry;
import org.apache.meecrowave.tomcat.OWBJarScanner;
import org.apache.meecrowave.tomcat.ProvidedLoader;
@@ -190,7 +191,11 @@ public class Meecrowave implements AutoC
final ProvidedLoader loader = new ProvidedLoader(classLoader, configuration.isTomcatWrapLoader());
final Consumer<Context> builtInCustomizer = c -> {
c.setLoader(loader);
+ if (configuration.antiJarLocking && StandardContext.class.isInstance(c)) {
+ StandardContext.class.cast(c).setAntiResourceLocking(true);
+ }
configuration.getInitializers().forEach(i -> c.addServletContainerInitializer(i, emptySet()));
+ configuration.getGlobalContextConfigurers().forEach(it -> it.accept(c));
};
return deployWebapp(new DeploymentMeta(meta.context, meta.docBase, ofNullable(meta.consumer).map(c -> (Consumer<Context>) ctx -> {
builtInCustomizer.accept(ctx);
@@ -719,6 +724,14 @@ public class Meecrowave implements AutoC
.forEach(c -> c.accept(tomcat));
configuration.instanceCustomizers.forEach(c -> c.accept(tomcat));
+ StreamSupport.stream(ServiceLoader.load(Meecrowave.ContextCustomizer.class).spliterator(), false)
+ .peek(i -> {
+ if (MeecrowaveAwareContextCustomizer.class.isInstance(i)) {
+ MeecrowaveAwareContextCustomizer.class.cast(i).setMeecrowave(this);
+ }
+ })
+ .forEach(configuration::addGlobalContextCustomizer);
+
beforeStart();
@@ -1381,6 +1394,12 @@ public class Meecrowave implements AutoC
@CliOption(name = "servlet-container-initializer", description = "ServletContainerInitializer instances.")
private Collection<ServletContainerInitializer> initializers = new ArrayList<>();
+ @CliOption(name = "tomcat-antijarlocking", description = "Should anti-jar-locking be activated on StandardContext.")
+ private boolean antiJarLocking;
+
+ @CliOption(name = "tomcat-context-configurer", description = "Configurers for all webapps. The Consumer<Context> instances will be applied to all deployments.")
+ private Collection<Consumer<Context>> contextConfigurers;
+
public Builder() { // load defaults
extensions.put(ValueTransformers.class, new ValueTransformers());
StreamSupport.stream(ServiceLoader.load(Meecrowave.ConfigurationCustomizer.class).spliterator(), false)
@@ -1400,6 +1419,18 @@ public class Meecrowave implements AutoC
}));
}
+ public boolean isAntiJarLocking() {
+ return antiJarLocking;
+ }
+
+ public void setAntiJarLocking(final boolean antiJarLocking) {
+ this.antiJarLocking = antiJarLocking;
+ }
+
+ public Collection<Consumer<Context>> getGlobalContextConfigurers() {
+ return ofNullable(contextConfigurers).orElseGet(Collections::emptySet);
+ }
+
public boolean isTomcatJspDevelopment() {
return tomcatJspDevelopment;
}
@@ -2116,6 +2147,13 @@ public class Meecrowave implements AutoC
configurationCustomizer.accept(this);
}
+ public void addGlobalContextCustomizer(final Consumer<Context> contextConfigurer) {
+ if (contextConfigurers == null) {
+ contextConfigurers = new ArrayList<>();
+ }
+ contextConfigurers.add(contextConfigurer);
+ }
+
public void addServletContextInitializer(final ServletContainerInitializer initializer) {
initializers.add(initializer);
}
@@ -2654,6 +2692,13 @@ public class Meecrowave implements AutoC
public interface InstanceCustomizer extends Consumer<Tomcat> {
}
+ public interface ContextCustomizer extends Consumer<Context> {
+ }
+
+ public interface MeecrowaveAwareContextCustomizer extends ContextCustomizer {
+ void setMeecrowave(Meecrowave meecrowave);
+ }
+
// since it is too early to have CDI and lookup the instance we must set it manually
public interface MeecrowaveAwareInstanceCustomizer extends InstanceCustomizer {
void setMeecrowave(Meecrowave meecrowave);
Modified: openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java?rev=1853377&r1=1853376&r2=1853377&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java Mon Feb 11 14:15:22 2019
@@ -100,6 +100,15 @@ public class MeecrowaveExtension {
private Integer webSessionTimeout;
private String webSessionCookieConfig;
private boolean tomcatJspDevelopment;
+ private boolean antiJarLocking;
+
+ public boolean isAntiJarLocking() {
+ return antiJarLocking;
+ }
+
+ public void setAntiJarLocking(final boolean antiJarLocking) {
+ this.antiJarLocking = antiJarLocking;
+ }
public boolean isTomcatJspDevelopment() {
return tomcatJspDevelopment;
Modified: openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java?rev=1853377&r1=1853376&r2=1853377&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java Mon Feb 11 14:15:22 2019
@@ -246,6 +246,10 @@ public class MeecrowaveTask extends Defa
@Input
@Optional
+ private boolean antiJarLocking = true;
+
+ @Input
+ @Optional
private List<File> modules;
@Input
@@ -1232,4 +1236,12 @@ public class MeecrowaveTask extends Defa
public void setTomcatJspDevelopment(final boolean tomcatJspDevelopment) {
this.tomcatJspDevelopment = tomcatJspDevelopment;
}
+
+ public boolean isAntiJarLocking() {
+ return antiJarLocking;
+ }
+
+ public void setAntiJarLocking(final boolean antiJarLocking) {
+ this.antiJarLocking = antiJarLocking;
+ }
}
Modified: openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java?rev=1853377&r1=1853376&r2=1853377&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java Mon Feb 11 14:15:22 2019
@@ -91,6 +91,9 @@ public class MeecrowaveRunMojo extends A
@Parameter(property = "meecrowave.useTomcatDefaults", defaultValue = "true")
private boolean useTomcatDefaults;
+ @Parameter(property = "meecrowave.antiJarLocking", defaultValue = "false")
+ private boolean antiJarLocking;
+
@Parameter
private Map<String, String> properties;