Skip to content

Commit 216e93f

Browse files
akhikhlPhillip Webb
authored andcommitted
Improve Jetty third-party integration support
Make JettyEmbeddedServletContainerFactory more useful for third-parties by providing protected configureWebAppContext, addDefaultServlet and addJspServlet methods that sub-classes can call. Fixes gh-1056
1 parent 2ad4c47 commit 216e93f

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
*
5656
* @author Phillip Webb
5757
* @author Dave Syer
58+
* @author Andrey Hihlovskiy
5859
* @see #setPort(int)
5960
* @see #setConfigurations(Collection)
6061
* @see JettyEmbeddedServletContainer
@@ -100,7 +101,24 @@ public EmbeddedServletContainer getEmbeddedServletContainer(
100101
JettyEmbeddedWebAppContext context = new JettyEmbeddedWebAppContext();
101102
int port = (getPort() >= 0 ? getPort() : 0);
102103
Server server = new Server(new InetSocketAddress(getAddress(), port));
104+
configureWebAppContext(context, initializers);
105+
server.setHandler(context);
106+
this.logger.info("Server initialized with port: " + port);
107+
for (JettyServerCustomizer customizer : getServerCustomizers()) {
108+
customizer.customize(server);
109+
}
110+
111+
return getJettyEmbeddedServletContainer(server);
112+
}
103113

114+
/**
115+
* Configure the given Jetty {@link WebAppContext} for use.
116+
* @param context the context to configure
117+
* @param initializers the set of initializers to apply
118+
*/
119+
protected final void configureWebAppContext(WebAppContext context,
120+
ServletContextInitializer... initializers) {
121+
Assert.notNull(context, "Context must not be null");
104122
if (this.resourceLoader != null) {
105123
context.setClassLoader(this.resourceLoader.getClassLoader());
106124
}
@@ -123,14 +141,6 @@ public EmbeddedServletContainer getEmbeddedServletContainer(
123141
context.getSessionHandler().getSessionManager()
124142
.setMaxInactiveInterval(getSessionTimeout());
125143
postProcessWebAppContext(context);
126-
127-
server.setHandler(context);
128-
this.logger.info("Server initialized with port: " + port);
129-
for (JettyServerCustomizer customizer : getServerCustomizers()) {
130-
customizer.customize(server);
131-
}
132-
133-
return getJettyEmbeddedServletContainer(server);
134144
}
135145

136146
private void configureDocumentRoot(WebAppContext handler) {
@@ -151,7 +161,12 @@ private void configureDocumentRoot(WebAppContext handler) {
151161
}
152162
}
153163

154-
private void addDefaultServlet(WebAppContext context) {
164+
/**
165+
* Add Jetty's {@code DefaultServlet} to the given {@link WebAppContext}.
166+
* @param context the jetty {@link WebAppContext}
167+
*/
168+
protected final void addDefaultServlet(WebAppContext context) {
169+
Assert.notNull(context, "Context must not be null");
155170
ServletHolder holder = new ServletHolder();
156171
holder.setName("default");
157172
holder.setClassName("org.eclipse.jetty.servlet.DefaultServlet");
@@ -161,7 +176,12 @@ private void addDefaultServlet(WebAppContext context) {
161176
context.getServletHandler().getServletMapping("/").setDefault(true);
162177
}
163178

164-
private void addJspServlet(WebAppContext context) {
179+
/**
180+
* Add Jetty's {@code JspServlet} to the given {@link WebAppContext}.
181+
* @param context the jetty {@link WebAppContext}
182+
*/
183+
protected final void addJspServlet(WebAppContext context) {
184+
Assert.notNull(context, "Context must not be null");
165185
ServletHolder holder = new ServletHolder();
166186
holder.setName("jsp");
167187
holder.setClassName(getJspServletClassName());

0 commit comments

Comments
 (0)