Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-well-known-listing

This commit is contained in:
Lachlan Roberts 2022-02-22 17:13:28 +11:00
commit 1d539c74c5
224 changed files with 2706 additions and 412 deletions

View File

@ -24,6 +24,8 @@ updates:
versions: [ ">=1.1.0" ]
- dependency-name: "org.infinispan:*"
versions: [ ">=12" ]
- dependency-name: "org.jboss.weld.servlet:*"
versions: [ ">=4.0.0" ]
- package-ecosystem: "maven"
directory: "/"

10
.mvn/jvm.config Normal file
View File

@ -0,0 +1,10 @@
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED

12
Jenkinsfile vendored
View File

@ -7,12 +7,12 @@ pipeline {
stages {
stage("Parallel Stage") {
parallel {
stage("Build / Test - JDK11") {
stage("Build / Test - JDK17") {
agent { node { label 'linux' } }
steps {
container('jetty-build') {
timeout( time: 120, unit: 'MINUTES' ) {
mavenBuild( "jdk11", "clean install -Perrorprone", "maven3")
mavenBuild( "jdk17", "clean install -Perrorprone", "maven3")
// Collect up the jacoco execution results (only on main build)
jacoco inclusionPattern: '**/org/eclipse/jetty/**/*.class',
exclusionPattern: '' +
@ -31,19 +31,19 @@ pipeline {
execPattern: '**/target/jacoco.exec',
classPattern: '**/target/classes',
sourcePattern: '**/src/main/java'
recordIssues id: "jdk11", name: "Static Analysis jdk11", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser(), errorProne()]
recordIssues id: "jdk17", name: "Static Analysis jdk17", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), errorProne(), spotBugs()]
}
}
}
}
stage("Build / Test - JDK17") {
stage("Build / Test - JDK11") {
agent { node { label 'linux' } }
steps {
container( 'jetty-build' ) {
timeout( time: 120, unit: 'MINUTES' ) {
mavenBuild( "jdk17", "clean install -Dspotbugs.skip=true -Djacoco.skip=true", "maven3")
recordIssues id: "jdk17", name: "Static Analysis jdk17", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser()]
mavenBuild( "jdk11", "clean install -Dspotbugs.skip=true -Djacoco.skip=true", "maven3")
recordIssues id: "jdk11", name: "Static Analysis jdk11", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle()]
}
}
}

View File

@ -1,4 +1,95 @@
jetty-10.0.8-SNAPSHOT
jetty-10.0.9-SNAPSHOT
jetty-10.0.8 - 07 February 2022
+ 2504 Expose more WebSocket details in JMX and Server Dump
+ 4275 Path Normalization/Traversal - Context Matching
+ 4317 EventSource does not work with GzipHandler
+ 6017 Property overriding does not work
+ 6282 SecuredRedirectHandler should probably redirect with 301
+ 6497 Replace SameFileAliasChecker
+ 6728 QUIC and HTTP/3
+ 6730 HTTP3: update Quiche to 0.9.0
+ 6965 Expose Spec `ServerContainer.upgrade()` API
+ 6973 Jetty starts consuming CPU that remains high even without any traffic
+ 6974 Major websocket memory change in 9.4.36
+ 6980 ELContextCleaner failed because cannot access a member of class
javax.el.BeanELResolver with modifiers "private static final"
+ 6987 jetty-unixdomain-server is missing from jetty-bom
+ 6990 UnixDomainServerConnector throws misleading exception on invalid socket
path
+ 7008 Problem with jetty.sh start regression 10.0.6 -> 10.0.7 when using
JETTY_USER
+ 7012 Remove all old geronimo spec jars from jetty-10
+ 7031 ResponseWriter.println(char) does not print newline
+ 7042 Simplify configuration to use different OpenIdConfiguration per webapp.
+ 7059 NPE in AllowedResourceAliasChecker.getPath()
+ 7063 Simplify command line use of org.eclipse.jetty.util.Password
+ 7064 Cleanup or clarify `(null)` in output of `--list-config`
+ 7086 WebSocket: java.lang.IllegalStateException: already released
RetainableByteBuffer
+ 7103 Rework LaF of distro landing page
+ 7107 Client timeout and async close exceptions when setting max duration on
pool
+ 7109 Deprecate UnixSocket JNR support
+ 7111 Add support to deprecate jetty-home modules
+ 7113 Improve Unix-Domain client documentation
+ 7124 Add default methods on LifeCycle.Listener interface
+ 7131 Use Charset instead of encoding string where possible
+ 7157 Multiplexed connection pools retain CLOSED entries
+ 7160 HttpURI considers %25 to be ambiguous, preventing access to static
resources with % in their name
+ 7240 Clarify and javadoc InvocationType
+ 7243 Reset pooled ByteBuffer endianness
+ 7262 Allow the SerlvetHandler.getFilterChain method to be overridden.
+ 7277 Allow override of `ServletRequest.getLocalName()` and `.getLocalPort()`
in post-intermediary scenarios
+ 7280 Interceptors don't get destroyed in HttpInput
+ 7281 EOFs are not passed to interceptors any more - shouldn't they?
+ 7284 HttpInput reopen/recycle cleanup
+ 7297 Deprecate log4j 1.x support
+ 7313 addBean(_attributes); only called in the Convenience constructor of
org.eclipse.jetty.server.Server
+ 7327 jetty-slf4j-impl missing from BOM
+ 7348 Slow CONNECT request causes NPE
+ 7351 Large WebSocket payloads with permessage-deflate hang on 10.0.7
+ 7354 Demo jars should not be in jetty-home
+ 7369 Document CustomRequestLog
+ 7375 Some environments require Request scoping during session save
+ 7435 Investigate Infinispan transitive dependencies
+ 7496 Transient 400: Bad Request responses in jetty-9.4.45.v20220128
+ 7514 Adding InheritedListeners to already-started components can cause
IllegalStateException
+ 7523 Typo in AnnotationConfiguration
+ 7524 Missing package in JmxConfiguration
+ 7529 Upgrade quiche to version 0.11.0
jetty-9.4.45.v20220203 - 03 February 2022
+ 4275 Path Normalization/Traversal - Context Matching
+ 6497 Replace SameFileAliasChecker
+ 6687 Upgrade Infinispan in all active Jetty branches
+ 6965 Expose Spec `ServerContainer.upgrade()` API
+ 6969 Getting 404 failures when trying to enable `logging-log4j` module.
+ 6974 Major websocket memory change in 9.4.36
+ 7031 ResponseWriter.println(char) does not print newline
+ 7059 NPE in AllowedResourceAliasChecker.getPath()
+ 7073 Error in parse parameter in broken UTF-8 encoding
+ 7078 CompressionPools are not shared between multiple contexts for 9.4
WebSocket
+ 7107 Client timeout and async close exceptions when setting max duration on
pool
+ 7124 Add default methods on LifeCycle.Listener interface
+ 7157 Multiplexed connection pools retain CLOSED entries
+ 7243 Reset pooled ByteBuffer endianness
+ 7266 Wrong ALPN jars are selected for newer versions of JDK8
+ 7271 It is necessary to set MAX_CAPACITY to ArrayTernaryTrie/ArrayTrie
+ 7277 Allow override of `ServletRequest.getLocalName()` and `.getLocalPort()`
in post-intermediary scenarios
+ 7297 Deprecate log4j 1.x support
+ 7348 Slow CONNECT request causes NPE
+ 7375 Some environments require Request scoping during session save
+ 7435 Investigate Infinispan transitive dependencies
+ 7440 ContextHandler.getAliasChecks() breaks Spring Boot
+ 7496 Transient 400: Bad Request responses in jetty-9.4.45.v20220128
jetty-10.0.7 - 06 October 2021
+ 3514 Use interpolation of versions from pom in mod files
@ -13,15 +104,15 @@ jetty-10.0.7 - 06 October 2021
active modules
+ 6487 Expose ServletHolder getter in ServletHandler$ChainEnd for auditing
libraries to use
+ 6489 Some URI valid compliance modes cannot be set in .ini file.
+ 6489 Some URI valid compliance modes cannot be set in .ini file
+ 6491 onDataAvailable() not called when HttpParser is closed prematurely
+ 6497 Replace SameFileAliasChecker
+ 6520 Error page has HTML error when writePoweredBy is enabled.
+ 6520 Error page has HTML error when writePoweredBy is enabled
+ 6544 Using jetty.gzip.excludedMimeTypeList property results in an error
+ 6545 image/webp MIME type support
+ 6552 FileBufferedInterceptor.dispose not working due to locked file
+ 6553 Review usage of Authentication.UNAUTHENTICATED in SecurityHandler
+ 6554 Allow creation of DefaultIdentityService without realmName.
+ 6554 Allow creation of DefaultIdentityService without realmName
+ 6556 MemcachedSessionDataMap needs to set the context classloader before
serialization/deseriazliation.
+ 6558 Allow to configure return type in JSON array parsing
@ -36,7 +127,7 @@ jetty-10.0.7 - 06 October 2021
+ 6617 Add basic auth support for OpenId token endpoint (client_secret_basic)
+ 6618 ID token `azp` claim should not be required if `aud` is single value
array
+ 6642 WebSocket handling of Connection: upgrade,close.
+ 6642 WebSocket handling of Connection: upgrade,close
+ 6646 Deadlock in HTTP2Flusher when using a small thread pool due to
incorrect InvocableType
+ 6652 Improve ReservedThreadExecutor dump
@ -57,6 +148,32 @@ jetty-10.0.7 - 06 October 2021
+ 6883 Welcome file redirects do not honor the relativeRedirectAllowed option
+ 6938 module-info.java file do not use the canonical order for the elements
jetty-9.4.44.v20210927 - 27 September 2021
+ 3514 Use interpolation of versions from pom in mod files
+ 6369 Increment default jetty.http2.rateControl.maxEventsPerSecond
+ 6372 Review socket options configuration
+ 6487 Expose ServletHolder getter in ServletHandler$ChainEnd for auditing
libraries to use
+ 6491 onDataAvailable() not called when HttpParser is closed prematurely
+ 6520 Error page has HTML error when writePoweredBy is enabled
+ 6545 image/webp MIME type support
+ 6553 Review usage of Authentication.UNAUTHENTICATED in SecurityHandler
+ 6554 Allow creation of DefaultIdentityService without realmName
+ 6558 Allow to configure return type in JSON array parsing
+ 6562 HttpOutput.write(ByteBuffer buffer)
+ 6603 HTTP/2 max local stream count exceeded
+ 6617 Add basic auth support for OpenId token endpoint (client_secret_basic)
+ 6618 ID token `azp` claim should not be required if `aud` is single value
array
+ 6652 Improve ReservedThreadExecutor dump
+ 6671 Update to apache jsp 8.5.70
+ 6772 Update to asm 9.2
+ 6853 Remove pack200 plugins
+ 6860 Correct IPv6 format
+ 6869 Correct Content-Type within HTML error pages
+ 6870 Encode control characters in URIUtil.encodePath
+ 6883 Welcome file redirects do not honor the relativeRedirectAllowed option
jetty-10.0.6 - 29 June 2021
+ 6375 Always check XML `Set` elements with `property` attribute
+ 6382 HttpClient TimeoutException message reports transient values

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apache-jstl</artifactId>

View File

@ -7,7 +7,7 @@
-->
<groupId>org.eclipse.jetty</groupId>
<artifactId>build-resources</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<name>Jetty :: Build Resources</name>
<packaging>jar</packaging>
@ -15,7 +15,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- versions for these plugins are not based on parent pom -->
<maven.deploy.plugin.version>3.0.0-M2</maven.deploy.plugin.version>
<maven.javadoc.plugin.version>3.3.1</maven.javadoc.plugin.version>
<maven.javadoc.plugin.version>3.3.2</maven.javadoc.plugin.version>
<maven.remote-resources.plugin.version>1.6.0</maven.remote-resources.plugin.version>
<maven.surefire.plugin.version>3.0.0-M5</maven.surefire.plugin.version>
</properties>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demo-async-rest-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demo-async-rest-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demo-async-rest-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<artifactId>demo-jaas-webapp</artifactId>
<name>Demo :: JAAS :: WebApp</name>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<artifactId>demo-jndi-webapp</artifactId>
<name>Demo :: JNDI :: WebApp</name>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<name>Demo :: Mock Resources</name>
<artifactId>demo-mock-resources</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>demo-proxy-webapp</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>demo-container-initializer</artifactId>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<name>Demo :: Servlet Spec :: Webapp</name>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<name>Demo :: Servlet Spec</name>
<artifactId>demo-spec</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.demos</groupId>
<artifactId>demos-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>demos-jetty-embedded</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.documentation</groupId>
<artifactId>documentation-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.documentation</groupId>
<artifactId>documentation-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -14,7 +14,6 @@
<properties>
<sources-directory>${project.build.directory}/jetty-sources</sources-directory>
<sonar.skip>true</sonar.skip>
<pmd.skip>true</pmd.skip>
<spotbugs.skip>true</spotbugs.skip>
<checkstyle.skip>true</checkstyle.skip>
</properties>
@ -109,6 +108,10 @@
infinispan-remote,
jetty-test-helper,
alpn-api,
quic-quiche,
quic-quiche-common,
quic-quiche-foreign-incubator,
quic-quiche-jna,
javax.servlet,
javax.websocket,
jetty-servlet-api,
@ -148,8 +151,6 @@
org.eclipse.jetty.http3.qpack.internal.*;
org.eclipse.jetty.http3.server.internal;
org.eclipse.jetty.quic.common.internal;
org.eclipse.jetty.quic.quiche;
org.eclipse.jetty.quic.quiche.*;
org.eclipse.jetty.quic.server.internal;
</excludePackageNames>
</configuration>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-client</artifactId>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-server</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-parent</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-ant</artifactId>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<artifactId>jetty-bom</artifactId>
@ -53,419 +53,419 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-conscrypt-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-conscrypt-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-annotations</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-ant</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-cdi</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-deploy</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.gcloud</groupId>
<artifactId>jetty-gcloud-session-manager</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-home</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<type>zip</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-home</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<type>tar.gz</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-hpack</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-http-client-transport</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-http-client-transport</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-qpack</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http-spi</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-remote</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-remote-query</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-embedded</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-embedded-query</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-hazelcast</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaas</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaspi</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jndi</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-keystore</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.memcached</groupId>
<artifactId>jetty-memcached-sessions</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-nosql</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-alpn</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot-jsp</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot-warurl</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-quiche-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-quiche-jna</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-httpservice</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-plus</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-proxy</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-quickstart</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-rewrite</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-openid</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-slf4j-impl</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-unixdomain-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-unixsocket-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-unixsocket-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-unixsocket-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-javax-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-javax-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-javax-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-api</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-jetty-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-servlet</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-core-common</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-core-client</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-core-server</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-xml</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
@ -481,7 +481,7 @@
<dependency>
<groupId>org.eclipse.jetty.quic</groupId>
<artifactId>quic-quiche-foreign-incubator</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -279,7 +279,7 @@ public interface Request
/**
* Shortcut method to specify a file as a content for this request, with the default content type of
* "application/octect-stream".
* "application/octet-stream".
*
* @param file the file to upload
* @return this request object

View File

@ -54,6 +54,8 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@ -75,11 +77,6 @@ public class ConnectionPoolTest
return Stream.of(DUPLEX, MULTIPLEX, RANDOM, DUPLEX_MAX_DURATION, ROUND_ROBIN);
}
public static Stream<ConnectionPoolFactory> poolsNoMaxDuration()
{
return Stream.of(DUPLEX, MULTIPLEX, RANDOM, ROUND_ROBIN);
}
public static Stream<ConnectionPoolFactory> poolsNoRoundRobin()
{
return Stream.of(DUPLEX, MULTIPLEX, RANDOM, DUPLEX_MAX_DURATION);
@ -316,7 +313,10 @@ public class ConnectionPoolTest
assertEquals(1, destinations.size());
HttpDestination destination = (HttpDestination)destinations.get(0);
AbstractConnectionPool connectionPool = (AbstractConnectionPool)destination.getConnectionPool();
assertEquals(2, connectionPool.getConnectionCount());
if (DUPLEX_MAX_DURATION == factory)
assertThat(connectionPool.getConnectionCount(), lessThanOrEqualTo(2)); // The connections can expire upon release.
else
assertThat(connectionPool.getConnectionCount(), is(2));
}
@ParameterizedTest
@ -376,8 +376,7 @@ public class ConnectionPoolTest
}
@ParameterizedTest
// Connection pool aggressively closes expired connections upon release, which interferes with this test's assertion.
@MethodSource("poolsNoMaxDuration")
@MethodSource("pools")
public void testConcurrentRequestsAllBlockedOnServerWithLargeConnectionPool(ConnectionPoolFactory factory) throws Exception
{
int count = 50;
@ -385,8 +384,7 @@ public class ConnectionPoolTest
}
@ParameterizedTest
// Connection pool aggressively closes expired connections upon release, which interferes with this test's assertion.
@MethodSource("poolsNoMaxDuration")
@MethodSource("pools")
public void testConcurrentRequestsAllBlockedOnServerWithExactConnectionPool(ConnectionPoolFactory factory) throws Exception
{
int count = 50;
@ -449,9 +447,13 @@ public class ConnectionPoolTest
assertTrue(latch.await(5, TimeUnit.SECONDS), "server requests " + barrier.getNumberWaiting() + "<" + count + " - client: " + client.dump());
List<Destination> destinations = client.getDestinations();
assertEquals(1, destinations.size());
HttpDestination destination = (HttpDestination)destinations.get(0);
AbstractConnectionPool connectionPool = (AbstractConnectionPool)destination.getConnectionPool();
assertThat(connectionPool.getConnectionCount(), Matchers.greaterThanOrEqualTo(count));
// The max duration connection pool aggressively closes expired connections upon release, which interferes with this assertion.
if (DUPLEX_MAX_DURATION != factory)
{
HttpDestination destination = (HttpDestination)destinations.get(0);
AbstractConnectionPool connectionPool = (AbstractConnectionPool)destination.getConnectionPool();
assertThat(connectionPool.getConnectionCount(), Matchers.greaterThanOrEqualTo(count));
}
}
@Test
@ -588,8 +590,17 @@ public class ConnectionPoolTest
AbstractConnectionPool connectionPool = (AbstractConnectionPool)destination.getConnectionPool();
assertEquals(0, connectionPool.getActiveConnectionCount());
assertEquals(1, connectionPool.getIdleConnectionCount());
assertEquals(1, connectionPool.getConnectionCount());
if (DUPLEX_MAX_DURATION == factory)
{
// The connections can expire upon release.
assertThat(connectionPool.getIdleConnectionCount(), lessThanOrEqualTo(1));
assertThat(connectionPool.getConnectionCount(), lessThanOrEqualTo(1));
}
else
{
assertThat(connectionPool.getIdleConnectionCount(), is(1));
assertThat(connectionPool.getConnectionCount(), is(1));
}
// Send second request, max usage count will be reached,
// the only connection must be closed.
@ -625,7 +636,10 @@ public class ConnectionPoolTest
// Trigger the creation of a destination, that will create the connection pool.
HttpDestination destination = client.resolveDestination(new Origin("http", "localhost", connector.getLocalPort()));
AbstractConnectionPool connectionPool = (AbstractConnectionPool)destination.getConnectionPool();
assertEquals(1, connectionPool.getConnectionCount());
if (DUPLEX_MAX_DURATION == factory)
assertThat(connectionPool.getConnectionCount(), lessThanOrEqualTo(1)); // The connections can expire upon release.
else
assertThat(connectionPool.getConnectionCount(), is(1));
// Wait for the pre-created connections to idle timeout.
Thread.sleep(idleTimeout + idleTimeout / 2);

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -57,7 +57,6 @@ public class PropertiesConfigurationManager implements ConfigurationManager, Dum
this(null);
}
@ManagedAttribute("A file or URL of properties")
public void setFile(String resource) throws IOException
{
_properties = resource;
@ -65,6 +64,7 @@ public class PropertiesConfigurationManager implements ConfigurationManager, Dum
loadProperties(_properties);
}
@ManagedAttribute("A file or URL of properties")
public String getFile()
{
return _properties;

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.gcloud</groupId>
<artifactId>gcloud-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -13,7 +13,7 @@
<name>Jetty :: GCloud</name>
<properties>
<gcloud.version>2.2.3</gcloud.version>
<gcloud.version>2.2.4</gcloud.version>
</properties>
<modules>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-home</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-http-spi</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http3</groupId>
<artifactId>http3-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-common</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-embedded-query</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-embedded</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-remote-query</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-remote</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-io</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jmx</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jspc-maven-plugin</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-keystore</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-maven-plugin</artifactId>

View File

@ -19,13 +19,16 @@ import java.io.OutputStream;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
/**
* This goal stops a running instance of jetty.
*
@ -72,38 +75,146 @@ public class JettyStopMojo extends AbstractWebAppMojo
String command = "forcestop";
try (Socket s = new Socket(InetAddress.getByName("127.0.0.1"), stopPort);)
if (stopWait > 0)
{
OutputStream out = s.getOutputStream();
out.write((stopKey + "\r\n" + command + "\r\n").getBytes());
out.flush();
if (stopWait > 0)
//try to get the pid of the forked jetty process
Long pid = null;
try
{
s.setSoTimeout(stopWait * 1000);
s.getInputStream();
String response = send(stopKey + "\r\n" + "pid" + "\r\n", stopWait);
pid = Long.valueOf(response);
}
catch (NumberFormatException e)
{
getLog().info("Server returned bad pid");
}
catch (ConnectException e)
{
//jetty not running, no point continuing
getLog().info("Jetty not running!");
return;
}
catch (Exception e)
{
//jetty running, try to stop it regardless of error
getLog().error(e);
}
getLog().info("Waiting " + stopWait + " seconds for jetty to stop");
LineNumberReader lin = new LineNumberReader(new InputStreamReader(s.getInputStream()));
String response;
boolean stopped = false;
while (!stopped && ((response = lin.readLine()) != null))
//now send the stop command and wait for confirmation - either an ack from jetty, or
//that the process has stopped
if (pid == null)
{
//no pid, so just wait until jetty reports itself stopped
try
{
getLog().info("Waiting " + stopWait + " seconds for jetty to stop");
String response = send(stopKey + "\r\n" + command + "\r\n", stopWait);
if ("Stopped".equals(response))
{
stopped = true;
getLog().info("Server reports itself as stopped");
}
else
getLog().info("Couldn't verify server as stopped, received " + response);
}
catch (ConnectException e)
{
getLog().info("Jetty not running!");
}
catch (Exception e)
{
getLog().error(e);
}
}
else
{
//wait for pid to stop
getLog().info("Waiting " + stopWait + " seconds for jetty " + pid + " to stop");
Optional<ProcessHandle> optional = ProcessHandle.of(pid);
optional.ifPresentOrElse(p ->
{
try
{
send(stopKey + "\r\n" + command + "\r\n", 0);
CompletableFuture<ProcessHandle> future = p.onExit();
if (p.isAlive())
{
p = future.get(stopWait, TimeUnit.SECONDS);
}
if (p.isAlive())
getLog().info("Couldn't verify server process stop");
else
getLog().info("Server process stopped");
}
catch (ConnectException e)
{
//jetty not listening on the given port, don't wait for the process
getLog().info("Jetty not running!");
}
catch (TimeoutException e)
{
getLog().error("Timeout expired while waiting for server process to stop");
}
catch (Throwable e)
{
getLog().error(e);
}
}, () -> getLog().info("Process not running"));
}
}
catch (ConnectException e)
else
{
getLog().info("Jetty not running!");
//send the stop command but don't wait to verify the stop
getLog().info("Stopping jetty");
try
{
send(stopKey + "\r\n" + command + "\r\n", 0);
}
catch (ConnectException e)
{
getLog().info("Jetty not running!");
}
catch (Exception e)
{
getLog().error(e);
}
}
catch (Exception e)
}
/**
* Send a command to a jetty process, optionally waiting for a response.
*
* @param command the command to send
* @param wait length of time in sec to wait for a response
* @return the response, if any, to the command
* @throws Exception
*/
private String send(String command, int wait)
throws Exception
{
String response = null;
try (Socket s = new Socket(InetAddress.getByName("127.0.0.1"), stopPort); OutputStream out = s.getOutputStream();)
{
getLog().error(e);
out.write(command.getBytes());
out.flush();
if (wait > 0)
{
//Wait for a response
s.setSoTimeout(wait * 1000);
try (LineNumberReader lin = new LineNumberReader(new InputStreamReader(s.getInputStream()));)
{
response = lin.readLine();
}
}
else
{
//Wait only a small amount of time to ensure TCP has sent the message
s.setSoTimeout(1000);
s.getInputStream().read();
}
return response;
}
}
}

View File

@ -0,0 +1,74 @@
//
// ========================================================================
// Copyright (c) 1995-2022 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//
package org.eclipse.jetty.maven.plugin;
import java.net.ServerSocket;
import org.eclipse.jetty.toolchain.test.IO;
/**
* MockShutdownMonitor
* A helper class that grabs a ServerSocket, spawns a thread and then
* passes the ServerSocket to the Runnable. This class has a main so
* that it can be used for forking, to mimic the actions of the
* org.eclipse.jetty.server.ShutdownMonitor.
*/
public class MockShutdownMonitor
{
String key;
MockShutdownMonitorRunnable testerRunnable;
ServerSocket serverSocket;
public MockShutdownMonitor(String key, MockShutdownMonitorRunnable testerRunnable)
throws Exception
{
this.key = key;
this.testerRunnable = testerRunnable;
listen();
}
private ServerSocket listen()
throws Exception
{
serverSocket = new ServerSocket(0);
try
{
serverSocket.setReuseAddress(true);
return serverSocket;
}
catch (Throwable e)
{
IO.close(serverSocket);
throw e;
}
}
public int getPort()
{
if (serverSocket == null)
return 0;
return serverSocket.getLocalPort();
}
public void start()
throws Exception
{
testerRunnable.setServerSocket(serverSocket);
testerRunnable.setKey(key);
Thread thread = new Thread(testerRunnable);
thread.setDaemon(true);
thread.setName("Tester Thread");
thread.start();
}
}

View File

@ -0,0 +1,111 @@
//
// ========================================================================
// Copyright (c) 1995-2022 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//
package org.eclipse.jetty.maven.plugin;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import org.eclipse.jetty.toolchain.test.IO;
/**
* MockShutdownMonitorRunnable
*
* Mimics the actions of the org.eclipse.jetty.server.ShutdownMonitor.ShutdownMonitorRunnable
* to aid testing.
*/
public class MockShutdownMonitorRunnable implements Runnable
{
ServerSocket serverSocket;
String key;
String statusResponse = "OK";
String pidResponse;
String defaultResponse = "Stopped";
boolean exit;
public void setExit(boolean exit)
{
this.exit = exit;
}
public void setKey(String key)
{
this.key = key;
}
public void setServerSocket(ServerSocket serverSocket)
{
this.serverSocket = serverSocket;
}
public void setPidResponse(String pidResponse)
{
this.pidResponse = pidResponse;
}
public void run()
{
try
{
while (true)
{
try (Socket socket = serverSocket.accept())
{
LineNumberReader reader = new LineNumberReader(new InputStreamReader(socket.getInputStream()));
String receivedKey = reader.readLine();
if (!key.equals(receivedKey))
{
continue;
}
String cmd = reader.readLine();
OutputStream out = socket.getOutputStream();
if ("status".equalsIgnoreCase(cmd))
{
out.write((statusResponse + "\r\n").getBytes(StandardCharsets.UTF_8));
out.flush();
}
else if ("pid".equalsIgnoreCase(cmd))
{
out.write((pidResponse + "\r\n").getBytes(StandardCharsets.UTF_8));
out.flush();
}
else
{
out.write((defaultResponse + "\r\n").getBytes(StandardCharsets.UTF_8));
out.flush();
if (exit)
System.exit(0);
}
}
catch (Throwable x)
{
x.printStackTrace();
}
}
}
catch (Throwable x)
{
x.printStackTrace();
}
finally
{
IO.close(serverSocket);
}
}
}

View File

@ -0,0 +1,279 @@
//
// ========================================================================
// Copyright (c) 1995-2022 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//
package org.eclipse.jetty.maven.plugin;
import java.io.File;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jetty.server.ShutdownMonitor;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
public class TestJettyStopMojo
{
/**
* ShutdownMonitorMain
* Kick off the ShutdownMonitor and wait for it to exit.
*/
public static final class ShutdownMonitorMain
{
public static void main(String[] args)
{
try
{
ShutdownMonitor monitor = ShutdownMonitor.getInstance();
monitor.setPort(0);
monitor.start();
monitor.await();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
public static class TestLog implements org.apache.maven.plugin.logging.Log
{
List<String> sink = new ArrayList<>();
@Override
public boolean isDebugEnabled()
{
return true;
}
@Override
public void debug(CharSequence content)
{
sink.add(content.toString());
}
@Override
public void debug(CharSequence content, Throwable error)
{
sink.add(content.toString());
}
@Override
public void debug(Throwable error)
{
}
@Override
public boolean isInfoEnabled()
{
return true;
}
@Override
public void info(CharSequence content)
{
sink.add(content.toString());
}
@Override
public void info(CharSequence content, Throwable error)
{
sink.add(content.toString());
}
@Override
public void info(Throwable error)
{
}
@Override
public boolean isWarnEnabled()
{
return true;
}
@Override
public void warn(CharSequence content)
{
sink.add(content.toString());
}
@Override
public void warn(CharSequence content, Throwable error)
{
sink.add(content.toString());
}
@Override
public void warn(Throwable error)
{
}
@Override
public boolean isErrorEnabled()
{
return true;
}
@Override
public void error(CharSequence content)
{
sink.add(content.toString());
}
@Override
public void error(CharSequence content, Throwable error)
{
sink.add(content.toString());
}
@Override
public void error(Throwable error)
{
}
public void assertContains(String str)
{
assertThat(sink, Matchers.hasItem(str));
}
public void dumpStdErr()
{
for (String s : sink)
{
System.err.println(s);
}
}
}
@Test
public void testStopNoWait() throws Exception
{
//send a stop message and don't wait for the reply or the process to shutdown
String stopKey = "foo";
MockShutdownMonitorRunnable runnable = new MockShutdownMonitorRunnable();
runnable.setPidResponse("abcd");
MockShutdownMonitor monitor = new MockShutdownMonitor(stopKey, runnable);
monitor.start();
TestLog log = new TestLog();
JettyStopMojo mojo = new JettyStopMojo();
mojo.stopKey = stopKey;
mojo.stopPort = monitor.getPort();
mojo.setLog(log);
mojo.execute();
log.assertContains("Stopping jetty");
}
@Test
public void testStopWaitBadPid() throws Exception
{
//test that even if we receive a bad pid, we still send the stop command and wait to
//receive acknowledgement, but we don't wait for the process to exit
String stopKey = "foo";
MockShutdownMonitorRunnable runnable = new MockShutdownMonitorRunnable();
runnable.setPidResponse("abcd");
MockShutdownMonitor monitor = new MockShutdownMonitor(stopKey, runnable);
monitor.start();
TestLog log = new TestLog();
JettyStopMojo mojo = new JettyStopMojo();
mojo.stopWait = 5;
mojo.stopKey = stopKey;
mojo.stopPort = monitor.getPort();
mojo.setLog(log);
mojo.execute();
log.assertContains("Server returned bad pid");
log.assertContains("Server reports itself as stopped");
}
@Test
public void testStopWait() throws Exception
{
//test that we will communicate with a remote process and wait for it to exit
String stopKey = "foo";
List<String> cmd = new ArrayList<>();
String java = "java";
String[] javaexes = new String[]{"java", "java.exe"};
File javaHomeDir = new File(System.getProperty("java.home"));
Path javaHomePath = javaHomeDir.toPath();
for (String javaexe : javaexes)
{
Path javaBinPath = javaHomePath.resolve(Paths.get("bin", javaexe));
if (Files.exists(javaBinPath) && !Files.isDirectory(javaBinPath))
java = javaBinPath.toFile().getAbsolutePath();
}
cmd.add(java);
cmd.add("-DSTOP.KEY=" + stopKey);
cmd.add("-DDEBUG=true");
cmd.add("-cp");
cmd.add(System.getProperty("java.class.path"));
cmd.add(ShutdownMonitorMain.class.getName());
ProcessBuilder command = new ProcessBuilder(cmd);
File file = MavenTestingUtils.getTargetFile("tester.out");
command.redirectOutput(file);
command.redirectErrorStream(true);
command.directory(MavenTestingUtils.getTargetDir());
Process fork = command.start();
Thread.sleep(500);
while (!file.exists() && file.length() == 0)
{
Thread.sleep(300);
}
String tmp = "";
String port = null;
try (LineNumberReader reader = new LineNumberReader(new FileReader(file)))
{
while (port == null && tmp != null)
{
tmp = reader.readLine();
if (tmp != null)
{
if (tmp.startsWith("STOP.PORT="))
port = tmp.substring(10);
}
}
}
assertNotNull(port);
TestLog log = new TestLog();
JettyStopMojo mojo = new JettyStopMojo();
mojo.stopWait = 5;
mojo.stopKey = stopKey;
mojo.stopPort = Integer.parseInt(port);
mojo.setLog(log);
mojo.execute();
log.dumpStdErr();
log.assertContains("Waiting " + mojo.stopWait + " seconds for jetty " + fork.pid() + " to stop");
log.assertContains("Server process stopped");
}
}

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.memcached</groupId>
<artifactId>memcached-parent</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-nosql</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -24,6 +24,7 @@ import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
import org.eclipse.jetty.io.ClientConnector;
import org.eclipse.jetty.util.ajax.JSON;
import org.eclipse.jetty.util.annotation.Name;
import org.eclipse.jetty.util.component.ContainerLifeCycle;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.slf4j.Logger;
@ -86,8 +87,13 @@ public class OpenIdConfiguration extends ContainerLifeCycle
* @param authMethod Authentication method to use with the Token Endpoint.
* @param httpClient The {@link HttpClient} instance to use.
*/
public OpenIdConfiguration(String issuer, String authorizationEndpoint, String tokenEndpoint,
String clientId, String clientSecret, String authMethod, HttpClient httpClient)
public OpenIdConfiguration(@Name("issuer") String issuer,
@Name("authorizationEndpoint") String authorizationEndpoint,
@Name("tokenEndpoint") String tokenEndpoint,
@Name("clientId") String clientId,
@Name("clientSecret") String clientSecret,
@Name("authMethod") String authMethod,
@Name("httpClient") HttpClient httpClient)
{
this.issuer = issuer;
this.clientId = clientId;

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<!-- TODO: review if this module is still needed -->

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot-jsp</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-httpservice</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-context</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-server</artifactId>

View File

@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-webapp-resources</artifactId>

View File

@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
<version>10.0.8-SNAPSHOT</version>
<version>10.0.9-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>

Some files were not shown because too many files have changed in this diff Show More