Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
eae2cf17
Commit
eae2cf17
authored
Oct 08, 2019
by
dreis2211
Committed by
Phillip Webb
Oct 22, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upgrade to Jetty 9.4.21.v20190926
See gh-18536
parent
867c4a14
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
106 additions
and
27 deletions
+106
-27
pom.xml
spring-boot-project/spring-boot-dependencies/pom.xml
+1
-1
JettyEmbeddedErrorHandler.java
...rk/boot/web/embedded/jetty/JettyEmbeddedErrorHandler.java
+11
-24
JettyEmbeddedLegacyErrorHandler.java
...t/web/embedded/jetty/JettyEmbeddedLegacyErrorHandler.java
+81
-0
JettyServletWebServerFactory.java
...boot/web/embedded/jetty/JettyServletWebServerFactory.java
+13
-1
AbstractServletWebServerFactoryTests.java
.../servlet/server/AbstractServletWebServerFactoryTests.java
+0
-1
No files found.
spring-boot-project/spring-boot-dependencies/pom.xml
View file @
eae2cf17
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
<jedis.version>
2.9.3
</jedis.version>
<jedis.version>
2.9.3
</jedis.version>
<jersey.version>
2.27
</jersey.version>
<jersey.version>
2.27
</jersey.version>
<jest.version>
6.3.1
</jest.version>
<jest.version>
6.3.1
</jest.version>
<jetty.version>
9.4.
19.v20190610
</jetty.version>
<jetty.version>
9.4.
21.v20190926
</jetty.version>
<jetty-jsp.version>
2.2.0.v201112011158
</jetty-jsp.version>
<jetty-jsp.version>
2.2.0.v201112011158
</jetty-jsp.version>
<jetty-el.version>
8.5.40
</jetty-el.version>
<jetty-el.version>
8.5.40
</jetty-el.version>
<jetty-reactive-httpclient.version>
1.0.3
</jetty-reactive-httpclient.version>
<jetty-reactive-httpclient.version>
1.0.3
</jetty-reactive-httpclient.version>
...
...
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyEmbeddedErrorHandler.java
View file @
eae2cf17
...
@@ -18,14 +18,13 @@ package org.springframework.boot.web.embedded.jetty;
...
@@ -18,14 +18,13 @@ package org.springframework.boot.web.embedded.jetty;
import
java.io.IOException
;
import
java.io.IOException
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequestWrapper
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
org.eclipse.jetty.http.HttpMethod
;
import
org.eclipse.jetty.http.HttpMethod
;
import
org.eclipse.jetty.server.Request
;
import
org.eclipse.jetty.server.Request
;
import
org.eclipse.jetty.server.handler.ErrorHandler
;
import
org.eclipse.jetty.server.handler.ErrorHandler
;
import
org.eclipse.jetty.server.handler.ErrorHandler.ErrorPageMapper
;
/**
/**
* Variation of Jetty's {@link ErrorHandler} that supports all {@link HttpMethod
* Variation of Jetty's {@link ErrorHandler} that supports all {@link HttpMethod
...
@@ -36,7 +35,7 @@ import org.eclipse.jetty.server.handler.ErrorHandler;
...
@@ -36,7 +35,7 @@ import org.eclipse.jetty.server.handler.ErrorHandler;
*
*
* @author Phillip Webb
* @author Phillip Webb
*/
*/
class
JettyEmbeddedErrorHandler
extends
ErrorHandler
{
class
JettyEmbeddedErrorHandler
extends
ErrorHandler
implements
ErrorPageMapper
{
private
final
ErrorHandler
delegate
;
private
final
ErrorHandler
delegate
;
...
@@ -47,32 +46,20 @@ class JettyEmbeddedErrorHandler extends ErrorHandler {
...
@@ -47,32 +46,20 @@ class JettyEmbeddedErrorHandler extends ErrorHandler {
@Override
@Override
public
void
handle
(
String
target
,
Request
baseRequest
,
HttpServletRequest
request
,
HttpServletResponse
response
)
public
void
handle
(
String
target
,
Request
baseRequest
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
throws
IOException
{
String
method
=
request
.
getMethod
();
if
(!
HttpMethod
.
GET
.
is
(
method
)
&&
!
HttpMethod
.
POST
.
is
(
method
)
&&
!
HttpMethod
.
HEAD
.
is
(
method
))
{
request
=
new
ErrorHttpServletRequest
(
request
);
}
this
.
delegate
.
handle
(
target
,
baseRequest
,
request
,
response
);
this
.
delegate
.
handle
(
target
,
baseRequest
,
request
,
response
);
}
}
private
static
class
ErrorHttpServletRequest
extends
HttpServletRequestWrapper
{
@Override
public
boolean
errorPageForMethod
(
String
method
)
{
private
boolean
simulateGetMethod
=
true
;
return
true
;
}
ErrorHttpServletRequest
(
HttpServletRequest
request
)
{
super
(
request
);
}
@Override
public
String
getMethod
()
{
return
(
this
.
simulateGetMethod
?
HttpMethod
.
GET
.
toString
()
:
super
.
getMethod
());
}
@Override
@Override
public
ServletContext
getServletContext
(
)
{
public
String
getErrorPage
(
HttpServletRequest
request
)
{
this
.
simulateGetMethod
=
false
;
if
(
this
.
delegate
instanceof
ErrorPageMapper
)
{
return
super
.
getServletContext
(
);
return
((
ErrorPageMapper
)
this
.
delegate
).
getErrorPage
(
request
);
}
}
return
null
;
}
}
}
}
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyEmbeddedLegacyErrorHandler.java
0 → 100644
View file @
eae2cf17
/*
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
web
.
embedded
.
jetty
;
import
java.io.IOException
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequestWrapper
;
import
javax.servlet.http.HttpServletResponse
;
import
org.eclipse.jetty.http.HttpMethod
;
import
org.eclipse.jetty.server.Request
;
import
org.eclipse.jetty.server.handler.ErrorHandler
;
/**
* Variation of Jetty's {@link ErrorHandler} that supports all {@link HttpMethod
* HttpMethods} rather than just {@code GET}, {@code POST} and {@code HEAD}. Jetty
* <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=446039">intentionally only
* supports a limited set of HTTP methods</a> for error pages, however, Spring Boot
* prefers Tomcat, Jetty and Undertow to all behave in the same way.
*
* @author Phillip Webb
* @deprecated As of 2.2.0 in favor of {@link JettyEmbeddedErrorHandler} due to error
* handling changes in Jetty 9.4.21.v20190926
*/
@Deprecated
class
JettyEmbeddedLegacyErrorHandler
extends
ErrorHandler
{
private
final
ErrorHandler
delegate
;
JettyEmbeddedLegacyErrorHandler
(
ErrorHandler
delegate
)
{
this
.
delegate
=
delegate
;
}
@Override
public
void
handle
(
String
target
,
Request
baseRequest
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
String
method
=
request
.
getMethod
();
if
(!
HttpMethod
.
GET
.
is
(
method
)
&&
!
HttpMethod
.
POST
.
is
(
method
)
&&
!
HttpMethod
.
HEAD
.
is
(
method
))
{
request
=
new
ErrorHttpServletRequest
(
request
);
}
this
.
delegate
.
handle
(
target
,
baseRequest
,
request
,
response
);
}
private
static
class
ErrorHttpServletRequest
extends
HttpServletRequestWrapper
{
private
boolean
simulateGetMethod
=
true
;
ErrorHttpServletRequest
(
HttpServletRequest
request
)
{
super
(
request
);
}
@Override
public
String
getMethod
()
{
return
(
this
.
simulateGetMethod
?
HttpMethod
.
GET
.
toString
()
:
super
.
getMethod
());
}
@Override
public
ServletContext
getServletContext
()
{
this
.
simulateGetMethod
=
false
;
return
super
.
getServletContext
();
}
}
}
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java
View file @
eae2cf17
...
@@ -19,6 +19,7 @@ package org.springframework.boot.web.embedded.jetty;
...
@@ -19,6 +19,7 @@ package org.springframework.boot.web.embedded.jetty;
import
java.io.File
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.lang.reflect.Method
;
import
java.net.InetSocketAddress
;
import
java.net.InetSocketAddress
;
import
java.net.MalformedURLException
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.net.URL
;
...
@@ -62,6 +63,7 @@ import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
...
@@ -62,6 +63,7 @@ import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import
org.springframework.context.ResourceLoaderAware
;
import
org.springframework.context.ResourceLoaderAware
;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.core.io.ResourceLoader
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
import
org.springframework.util.ReflectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
/**
/**
...
@@ -340,10 +342,20 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor
...
@@ -340,10 +342,20 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor
@Override
@Override
public
void
configure
(
WebAppContext
context
)
throws
Exception
{
public
void
configure
(
WebAppContext
context
)
throws
Exception
{
ErrorHandler
errorHandler
=
context
.
getErrorHandler
();
ErrorHandler
errorHandler
=
context
.
getErrorHandler
();
context
.
setErrorHandler
(
new
JettyEmbedded
ErrorHandler
(
errorHandler
));
context
.
setErrorHandler
(
wrap
ErrorHandler
(
errorHandler
));
addJettyErrorPages
(
errorHandler
,
getErrorPages
());
addJettyErrorPages
(
errorHandler
,
getErrorPages
());
}
}
@SuppressWarnings
(
"deprecation"
)
private
ErrorHandler
wrapErrorHandler
(
ErrorHandler
errorHandler
)
{
Method
method
=
ReflectionUtils
.
findMethod
(
ErrorHandler
.
class
,
"errorPageForMethod"
,
String
.
class
);
// Versions prior to 9.4.21.v20190926 have different error handling
if
(
method
==
null
)
{
return
new
JettyEmbeddedLegacyErrorHandler
(
errorHandler
);
}
return
new
JettyEmbeddedErrorHandler
(
errorHandler
);
}
};
};
}
}
...
...
spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/servlet/server/AbstractServletWebServerFactoryTests.java
View file @
eae2cf17
...
@@ -1073,7 +1073,6 @@ public abstract class AbstractServletWebServerFactoryTests {
...
@@ -1073,7 +1073,6 @@ public abstract class AbstractServletWebServerFactoryTests {
HttpComponentsClientHttpRequestFactory
requestFactory
,
String
...
headers
)
HttpComponentsClientHttpRequestFactory
requestFactory
,
String
...
headers
)
throws
IOException
,
URISyntaxException
{
throws
IOException
,
URISyntaxException
{
ClientHttpRequest
request
=
requestFactory
.
createRequest
(
new
URI
(
url
),
method
);
ClientHttpRequest
request
=
requestFactory
.
createRequest
(
new
URI
(
url
),
method
);
request
.
getHeaders
().
add
(
"Cookie"
,
"JSESSIONID="
+
"123"
);
for
(
String
header
:
headers
)
{
for
(
String
header
:
headers
)
{
String
[]
parts
=
header
.
split
(
":"
);
String
[]
parts
=
header
.
split
(
":"
);
request
.
getHeaders
().
add
(
parts
[
0
],
parts
[
1
]);
request
.
getHeaders
().
add
(
parts
[
0
],
parts
[
1
]);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment