Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2014-06-16 21:48:39 +0000
committerJoakim Erdfelt2014-06-17 17:42:04 +0000
commit5fa564efa8bce42ab726de93b1c3ffc317ab4f74 (patch)
treee042227c5a995240500b34bce4c5d6b27b137670 /jetty-start
parentbca7e75d9f0a1d0af376b4243d3ea3a4ab736e94 (diff)
downloadorg.eclipse.jetty.project-5fa564efa8bce42ab726de93b1c3ffc317ab4f74.tar.gz
org.eclipse.jetty.project-5fa564efa8bce42ab726de93b1c3ffc317ab4f74.tar.xz
org.eclipse.jetty.project-5fa564efa8bce42ab726de93b1c3ffc317ab4f74.zip
437395 - Start / Properties in template sections should be default applied for enabled modules
+ Initial edits to support loading of Module [INI-TEMPLATE] section as default values for the enabled module.
Diffstat (limited to 'jetty-start')
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Main.java16
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Module.java19
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java4
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java90
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Props.java16
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java55
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java4
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java4
-rw-r--r--jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java92
-rw-r--r--jetty-start/src/test/resources/usecases/home/modules/jsp-impl/apache-jsp.mod10
-rw-r--r--jetty-start/src/test/resources/usecases/home/modules/jsp-impl/glassfish-jsp.mod8
-rw-r--r--jetty-start/src/test/resources/usecases/home/modules/jsp.mod16
12 files changed, 264 insertions, 70 deletions
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
index 8859cff7d2..22e7a46233 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
@@ -389,10 +389,10 @@ public class Main
}
boolean transitive = module.isEnabled() && (module.getSources().size() == 0);
- boolean has_ini_lines = module.getInitialise().size() > 0;
+ boolean hasDefinedDefaults = module.getDefaultConfig().size() > 0;
// If it is not enabled or is transitive with ini template lines or toplevel and doesn't exist
- if (!module.isEnabled() || (transitive && has_ini_lines) || (topLevel && !FS.exists(startd_ini) && !appendStartIni))
+ if (!module.isEnabled() || (transitive && hasDefinedDefaults) || (topLevel && !FS.exists(startd_ini) && !appendStartIni))
{
// File BufferedWriter
BufferedWriter writer = null;
@@ -430,7 +430,7 @@ public class Main
out.println("--module=" + name);
args.parse("--module=" + name,source);
modules.enable(name,Collections.singletonList(source));
- for (String line : module.getInitialise())
+ for (String line : module.getDefaultConfig())
{
out.println(line);
args.parse(line,source);
@@ -490,10 +490,9 @@ public class Main
// Process dependencies
module.expandProperties(args.getProperties());
- modules.registerParentsIfMissing(baseHome,args,module);
+ modules.registerParentsIfMissing(module);
modules.buildGraph();
-
// process new ini modules
if (topLevel)
{
@@ -573,9 +572,9 @@ public class Main
// ------------------------------------------------------------
// 3) Module Registration
- Modules modules = new Modules();
+ Modules modules = new Modules(baseHome,args);
StartLog.debug("Registering all modules");
- modules.registerAll(baseHome, args);
+ modules.registerAll();
// ------------------------------------------------------------
// 4) Active Module Resolution
@@ -584,7 +583,7 @@ public class Main
List<String> msources = args.getSources(enabledModule);
modules.enable(enabledModule,msources);
}
-
+
StartLog.debug("Building Module Graph");
modules.buildGraph();
@@ -600,6 +599,7 @@ public class Main
// 6) Resolve Extra XMLs
args.resolveExtraXmls(baseHome);
+ // ------------------------------------------------------------
// 9) Resolve Property Files
args.resolvePropertyFiles(baseHome);
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
index 2df1b05e64..17a3317f80 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java
@@ -96,7 +96,7 @@ public class Module
/** List of xml configurations for this Module */
private List<String> xmls;
/** List of ini template lines */
- private List<String> initialise;
+ private List<String> defaultConfig;
/** List of library options for this Module */
private List<String> libs;
/** List of files for this Module */
@@ -213,9 +213,14 @@ public class Module
return fileRef;
}
- public List<String> getInitialise()
+ public List<String> getDefaultConfig()
{
- return initialise;
+ return defaultConfig;
+ }
+
+ public boolean hasDefaultConfig()
+ {
+ return (defaultConfig != null) && (defaultConfig.size() > 0);
}
public List<String> getLibs()
@@ -274,7 +279,7 @@ public class Module
parentEdges = new HashSet<>();
childEdges = new HashSet<>();
xmls = new ArrayList<>();
- initialise = new ArrayList<>();
+ defaultConfig = new ArrayList<>();
libs = new ArrayList<>();
files = new ArrayList<>();
jvmArgs = new ArrayList<>();
@@ -328,7 +333,7 @@ public class Module
{
if ("INI-TEMPLATE".equals(sectionType))
{
- initialise.add(line);
+ defaultConfig.add(line);
}
}
else
@@ -344,8 +349,9 @@ public class Module
case "FILES":
files.add(line);
break;
+ case "DEFAULTS":
case "INI-TEMPLATE":
- initialise.add(line);
+ defaultConfig.add(line);
break;
case "LIB":
libs.add(line);
@@ -404,4 +410,5 @@ public class Module
str.append(']');
return str.toString();
}
+
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java b/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java
index 7c612a7140..2d207727ac 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java
@@ -212,9 +212,9 @@ public class ModuleGraphWriter
}
}
- if (!module.getInitialise().isEmpty())
+ if (!module.getDefaultConfig().isEmpty())
{
- List<String> inis = module.getInitialise();
+ List<String> inis = module.getDefaultConfig();
writeModuleDetailHeader(out,"INI Template",inis.size());
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
index 61330ac754..d6d5de592a 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java
@@ -38,6 +38,9 @@ import java.util.regex.Pattern;
*/
public class Modules implements Iterable<Module>
{
+ private final BaseHome baseHome;
+ private final StartArgs args;
+
private Map<String, Module> modules = new HashMap<>();
/*
* modules that may appear in the resolved graph but are undefined in the module system
@@ -47,6 +50,12 @@ public class Modules implements Iterable<Module>
private Set<String> missingModules = new HashSet<String>();
private int maxDepth = -1;
+
+ public Modules(BaseHome basehome, StartArgs args)
+ {
+ this.baseHome = basehome;
+ this.args = args;
+ }
private Set<String> asNameSet(Set<Module> moduleSet)
{
@@ -106,8 +115,10 @@ public class Modules implements Iterable<Module>
/**
* Using the provided dependencies, build the module graph
*/
- public void buildGraph()
+ public void buildGraph() throws FileNotFoundException, IOException
{
+ normalizeDependencies();
+
// Connect edges
for (Module module : modules.values())
{
@@ -118,9 +129,13 @@ public class Modules implements Iterable<Module>
if (parent == null)
{
if (parentName.contains("${"))
+ {
StartLog.debug("module not found [%s]%n",parentName);
+ }
else
+ {
StartLog.warn("module not found [%s]%n",parentName);
+ }
}
else
{
@@ -250,7 +265,7 @@ public class Modules implements Iterable<Module>
}
}
- public void enable(String name, List<String> sources)
+ public void enable(String name, List<String> sources) throws IOException
{
if (name.contains("*"))
{
@@ -276,16 +291,49 @@ public class Modules implements Iterable<Module>
}
}
- private void enableModule(Module module, List<String> sources)
+ private void enableModule(Module module, List<String> sources) throws IOException
{
+ if (module.isEnabled())
+ {
+ // already enabled, skip
+ return;
+ }
+
StartLog.debug("Enabling module: %s (via %s)",module.getName(),Main.join(sources,", "));
module.setEnabled(true);
+ args.parseModule(module);
+ module.expandProperties(args.getProperties());
if (sources != null)
{
module.addSources(sources);
}
+
+ // enable any parents that haven't been enabled (yet)
+ for(String name: module.getParentNames())
+ {
+ Module parent = modules.get(name);
+ if (name == null)
+ {
+ // parent module doesn't exist, yet
+ Path file = baseHome.getPath("modules/" + name + ".mod");
+ if (FS.canReadFile(file))
+ {
+ parent = registerModule(file);
+ updateParentReferencesTo(parent);
+ }
+ else
+ {
+ StartLog.debug("Missing module definition: [ Mod: %s | File: %s ]",name,file);
+ missingModules.add(name);
+ }
+ }
+ if (parent != null)
+ {
+ enableModule(parent,sources);
+ }
+ }
}
-
+
private void findChildren(Module module, Set<Module> ret)
{
ret.add(module);
@@ -372,32 +420,35 @@ public class Modules implements Iterable<Module>
return module;
}
- public void registerParentsIfMissing(BaseHome basehome, StartArgs args, Module module) throws IOException
+ public void registerParentsIfMissing(Module module) throws IOException
{
Set<String> parents = new HashSet<>(module.getParentNames());
for (String name : parents)
{
if (!modules.containsKey(name))
{
- Path file = basehome.getPath("modules/" + name + ".mod");
+ Path file = baseHome.getPath("modules/" + name + ".mod");
if (FS.canReadFile(file))
{
- Module parent = registerModule(basehome,args,file);
+ Module parent = registerModule(file);
updateParentReferencesTo(parent);
- registerParentsIfMissing(basehome, args, parent);
+ registerParentsIfMissing(parent);
}
}
}
}
- public void registerAll(BaseHome basehome, StartArgs args) throws IOException
+ public void registerAll() throws IOException
{
- for (Path path : basehome.getPaths("modules/*.mod"))
+ for (Path path : baseHome.getPaths("modules/*.mod"))
{
- registerModule(basehome,args,path);
+ registerModule(path);
}
-
- // load missing post-expanded dependent modules
+ }
+
+ // load missing post-expanded dependent modules
+ private void normalizeDependencies() throws FileNotFoundException, IOException
+ {
boolean done = false;
while (!done)
{
@@ -419,30 +470,29 @@ public class Modules implements Iterable<Module>
for (String missingParent : missingParents)
{
- Path file = basehome.getPath("modules/" + missingParent + ".mod");
+ Path file = baseHome.getPath("modules/" + missingParent + ".mod");
if (FS.canReadFile(file))
{
- Module module = registerModule(basehome,args,file);
+ Module module = registerModule(file);
updateParentReferencesTo(module);
}
else
{
- StartLog.debug("Missing module definition: [ Mod: %s | File: %s]",missingParent,file);
+ StartLog.debug("Missing module definition: [ Mod: %s | File: %s ]",missingParent,file);
missingModules.add(missingParent);
}
}
}
}
- private Module registerModule(BaseHome basehome, StartArgs args, Path file) throws FileNotFoundException, IOException
+ private Module registerModule(Path file) throws FileNotFoundException, IOException
{
if (!FS.canReadFile(file))
{
throw new IOException("Cannot read file: " + file);
}
- StartLog.debug("Registering Module: %s",basehome.toShortForm(file));
- Module module = new Module(basehome,file);
- module.expandProperties(args.getProperties());
+ StartLog.debug("Registering Module: %s",baseHome.toShortForm(file));
+ Module module = new Module(baseHome,file);
return register(module);
}
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
index 7d35aaaf4c..3875a4de9f 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java
@@ -61,6 +61,22 @@ public final class Props implements Iterable<Prop>
this(key,value,origin);
this.overrides = overrides;
}
+
+ @Override
+ public String toString()
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("Prop [key=");
+ builder.append(key);
+ builder.append(", value=");
+ builder.append(value);
+ builder.append(", origin=");
+ builder.append(origin);
+ builder.append(", overrides=");
+ builder.append(overrides);
+ builder.append("]");
+ return builder.toString();
+ }
}
public static final String ORIGIN_SYSPROP = "<system-property>";
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
index 43df38122a..0363f4fa7d 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java
@@ -648,6 +648,18 @@ public class StartArgs
public void parse(final String rawarg, String source)
{
+ parse(rawarg,source,true);
+ }
+
+ /**
+ * Parse a single line of argument.
+ *
+ * @param rawarg the raw argument to parse
+ * @param source the origin of this line of argument
+ * @param replaceProps true if properties in this parse replace previous ones, false to not replace.
+ */
+ private void parse(final String rawarg, String source, boolean replaceProps)
+ {
if (rawarg == null)
{
return;
@@ -810,11 +822,11 @@ public class StartArgs
{
case 2:
System.setProperty(assign[0],assign[1]);
- setProperty(assign[0],assign[1],source);
+ setProperty(assign[0],assign[1],source,replaceProps);
break;
case 1:
System.setProperty(assign[0],"");
- setProperty(assign[0],"",source);
+ setProperty(assign[0],"",source,replaceProps);
break;
default:
break;
@@ -840,11 +852,14 @@ public class StartArgs
String key = arg.substring(0,idx);
String value = arg.substring(idx + 1);
- if (propertySource.containsKey(key))
+ if (replaceProps)
{
- StartLog.warn("Property %s in %s already set in %s",key,source,propertySource.get(key));
+ if (propertySource.containsKey(key))
+ {
+ StartLog.warn("Property %s in %s already set in %s",key,source,propertySource.get(key));
+ }
+ propertySource.put(key,source);
}
- propertySource.put(key,source);
if ("OPTION".equals(key) || "OPTIONS".equals(key))
{
@@ -857,7 +872,7 @@ public class StartArgs
StartLog.warn(warn.toString());
}
- setProperty(key,value,source);
+ setProperty(key,value,source,replaceProps);
return;
}
@@ -886,6 +901,17 @@ public class StartArgs
throw new UsageException(ERR_BAD_ARG,"Unrecognized argument: \"%s\" in %s",arg,source);
}
+ public void parseModule(Module module)
+ {
+ if(module.hasDefaultConfig())
+ {
+ for(String line: module.getDefaultConfig())
+ {
+ parse(line,module.getFilesystemRef(),false);
+ }
+ }
+ }
+
public void resolveExtraXmls(BaseHome baseHome) throws IOException
{
// Find and Expand XML files
@@ -921,7 +947,7 @@ public class StartArgs
this.allModules = allModules;
}
- private void setProperty(String key, String value, String source)
+ private void setProperty(String key, String value, String source, boolean replaceProp)
{
// Special / Prevent override from start.ini's
if (key.equals("jetty.home"))
@@ -938,7 +964,19 @@ public class StartArgs
}
// Normal
- properties.setProperty(key,value,source);
+ if (replaceProp)
+ {
+ // always override
+ properties.setProperty(key,value,source);
+ }
+ else
+ {
+ // only set if unset
+ if (!properties.containsKey(key))
+ {
+ properties.setProperty(key,value,source);
+ }
+ }
}
public void setRun(boolean run)
@@ -961,4 +999,5 @@ public class StartArgs
builder.append("]");
return builder.toString();
}
+
}
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java
index 1d2e8ba1d0..d822601eec 100644
--- a/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java
@@ -159,8 +159,8 @@ public class ConfigurationAssert
}
return value;
}
-
- private static void assertContainsUnordered(String msg, Collection<String> expectedSet, Collection<String> actualSet)
+
+ public static void assertContainsUnordered(String msg, Collection<String> expectedSet, Collection<String> actualSet)
{
// same size?
boolean mismatch = expectedSet.size() != actualSet.size();
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java
index 82db04cf9c..13b43cc25e 100644
--- a/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java
@@ -60,8 +60,8 @@ public class ModuleGraphWriterTest
StartArgs args = new StartArgs();
args.parse(config);
- Modules modules = new Modules();
- modules.registerAll(basehome, args);
+ Modules modules = new Modules(basehome, args);
+ modules.registerAll();
modules.buildGraph();
Path outputFile = basehome.getBasePath("graph.dot");
diff --git a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
index fff9e4df2e..3753267264 100644
--- a/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
+++ b/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java
@@ -66,8 +66,8 @@ public class ModulesTest
args.parse(config);
// Test Modules
- Modules modules = new Modules();
- modules.registerAll(basehome,args);
+ Modules modules = new Modules(basehome,args);
+ modules.registerAll();
List<String> moduleNames = new ArrayList<>();
for (Module mod : modules)
@@ -80,11 +80,41 @@ public class ModulesTest
moduleNames.add(mod.getName());
}
- String expected[] = { "jmx", "client", "stats", "spdy", "deploy", "debug", "security", "npn", "ext", "websocket", "rewrite", "ipaccess", "xinetd",
- "proxy", "webapp", "jndi", "lowresources", "https", "plus", "requestlog", "jsp", "monitor", "xml", "servlet", "jaas", "http", "base", "server",
- "annotations", "resources", "loggging" };
-
- Assert.assertThat("Module count: " + moduleNames,moduleNames.size(),is(expected.length));
+ List<String> expected = new ArrayList<>();
+ expected.add("jmx");
+ expected.add("client");
+ expected.add("stats");
+ expected.add("spdy");
+ expected.add("deploy");
+ expected.add("debug");
+ expected.add("security");
+ expected.add("npn");
+ expected.add("ext");
+ expected.add("websocket");
+ expected.add("rewrite");
+ expected.add("ipaccess");
+ expected.add("xinetd");
+ expected.add("proxy");
+ expected.add("webapp");
+ expected.add("jndi");
+ expected.add("lowresources");
+ expected.add("https");
+ expected.add("plus");
+ expected.add("requestlog");
+ expected.add("jsp");
+ // (only present if enabled) expected.add("jsp-impl");
+ expected.add("monitor");
+ expected.add("xml");
+ expected.add("servlet");
+ expected.add("jaas");
+ expected.add("http");
+ expected.add("base");
+ expected.add("server");
+ expected.add("annotations");
+ expected.add("resources");
+ expected.add("logging");
+
+ ConfigurationAssert.assertContainsUnordered("All Modules",expected,moduleNames);
}
@Test
@@ -93,7 +123,7 @@ public class ModulesTest
// Test Env
File homeDir = MavenTestingUtils.getTestResourceDir("usecases/home");
File baseDir = testdir.getEmptyDir();
- String cmdLine[] = new String[] {"jetty.version=TEST"};
+ String cmdLine[] = new String[] {"jetty.version=TEST", "java.version=1.7.0_21"};
// Configuration
CommandLineConfigSource cmdLineSource = new CommandLineConfigSource(cmdLine);
@@ -109,13 +139,35 @@ public class ModulesTest
args.parse(config);
// Test Modules
- Modules modules = new Modules();
- modules.registerAll(basehome,args);
+ Modules modules = new Modules(basehome,args);
+ modules.registerAll();
modules.enable("[sj]{1}.*",TEST_SOURCE);
+ modules.buildGraph();
- String expected[] = { "jmx", "stats", "spdy", "security", "jndi", "jsp", "servlet", "jaas", "server" };
+ List<String> expected = new ArrayList<>();
+ expected.add("jmx");
+ expected.add("stats");
+ expected.add("spdy");
+ expected.add("security");
+ expected.add("jndi");
+ expected.add("jsp");
+ expected.add("servlet");
+ expected.add("jaas");
+ expected.add("server");
+ // transitive
+ expected.add("base");
+ expected.add("npn");
+ expected.add("npn-boot");
+ expected.add("xml");
+ expected.add("jsp-impl");
+
+ List<String> resolved = new ArrayList<>();
+ for (Module module : modules.resolveEnabled())
+ {
+ resolved.add(module.getName());
+ }
- Assert.assertThat("Enabled Module count",modules.resolveEnabled().size(),is(expected.length));
+ ConfigurationAssert.assertContainsUnordered("Enabled Modules",expected,resolved);
}
@Test
@@ -140,14 +192,15 @@ public class ModulesTest
args.parse(config);
// Test Modules
- Modules modules = new Modules();
- modules.registerAll(basehome,args);
- modules.buildGraph();
+ Modules modules = new Modules(basehome, args);
+ modules.registerAll();
// Enable 2 modules
modules.enable("server",TEST_SOURCE);
modules.enable("http",TEST_SOURCE);
+ modules.buildGraph();
+
// Collect active module list
List<Module> active = modules.resolveEnabled();
@@ -211,15 +264,16 @@ public class ModulesTest
args.parse(config);
// Test Modules
- Modules modules = new Modules();
- modules.registerAll(basehome,args);
- modules.buildGraph();
- // modules.dump();
+ Modules modules = new Modules(basehome,args);
+ modules.registerAll();
// Enable 2 modules
modules.enable("websocket",TEST_SOURCE);
modules.enable("http",TEST_SOURCE);
+ modules.buildGraph();
+ // modules.dump();
+
// Collect active module list
List<Module> active = modules.resolveEnabled();
diff --git a/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/apache-jsp.mod b/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/apache-jsp.mod
new file mode 100644
index 0000000000..aed547c851
--- /dev/null
+++ b/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/apache-jsp.mod
@@ -0,0 +1,10 @@
+#
+# Apache JSP Module
+#
+
+[name]
+jsp-impl
+
+[lib]
+lib/apache-jsp/*.jar
+
diff --git a/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/glassfish-jsp.mod b/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/glassfish-jsp.mod
new file mode 100644
index 0000000000..130d2b371f
--- /dev/null
+++ b/jetty-start/src/test/resources/usecases/home/modules/jsp-impl/glassfish-jsp.mod
@@ -0,0 +1,8 @@
+#
+# Glassfish JSP Module
+#
+[name]
+jsp-impl
+
+[lib]
+lib/jsp/*.jar
diff --git a/jetty-start/src/test/resources/usecases/home/modules/jsp.mod b/jetty-start/src/test/resources/usecases/home/modules/jsp.mod
index f85530d3c8..fa5b9fdfa9 100644
--- a/jetty-start/src/test/resources/usecases/home/modules/jsp.mod
+++ b/jetty-start/src/test/resources/usecases/home/modules/jsp.mod
@@ -1,10 +1,20 @@
#
-# Jetty Servlet Module
+# Jetty JSP Module
#
[depend]
servlet
+jsp-impl/${jsp-impl}-jsp
-[lib]
-lib/jsp/*.jar
+[ini-template]
+# JSP Configuration
+# Select JSP implementation, choices are
+# glassfish : The reference implementation
+# default in jetty <= 9.1
+# apache : The apache version
+# default jetty >= 9.2
+jsp-impl=apache
+
+# To use a non-jdk compiler for JSP compilation when using glassfish uncomment next line
+# -Dorg.apache.jasper.compiler.disablejsr199=true

Back to the top