This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 3.6.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.6.x-fixes by this push:
new 5ab347d6a7 CXF-8764: Upgrade to Jetty 10 (#998)
5ab347d6a7 is described below
commit 5ab347d6a7189d5c8536d06a50cbaf13632ed756
Author: Andriy Redko <[email protected]>
AuthorDate: Tue Dec 6 19:21:19 2022 -0500
CXF-8764: Upgrade to Jetty 10 (#998)
---
distribution/javadoc/pom.xml | 6 +-
.../samples/jax_rs/basic_http2_jetty/pom.xml | 6 +-
.../jax_rs/description_openapi_v3_web/pom.xml | 2 +-
.../jax_rs/description_swagger2_web/pom.xml | 2 +-
.../main/release/samples/jax_rs/sse_cdi/pom.xml | 4 +-
.../main/release/samples/jax_rs/sse_spring/pom.xml | 4 +-
.../main/release/samples/jax_rs/websocket/pom.xml | 4 +-
.../release/samples/jax_rs/websocket_web/pom.xml | 2 +-
distribution/src/main/release/samples/pom.xml | 4 +-
parent/pom.xml | 10 +-
rt/rs/microprofile-client/pom.xml | 16 +--
.../client/MicroProfileClientFactoryBean.java | 2 +
.../apache/cxf/microprofile/client/AsyncTest.java | 82 +++++------
rt/transports/http-jetty/pom.xml | 4 -
.../transport/http_jetty/JettyHTTPDestination.java | 13 --
.../cxf/transport/http_jetty/JettyHTTPHandler.java | 5 +
.../http_jetty/JettyHTTPServerEngine.java | 22 +--
.../continuations/JettyContinuationProvider.java | 69 ---------
.../JettyContinuationProviderFactory.java | 76 ----------
.../continuations/JettyContinuationWrapper.java | 159 ---------------------
.../main/resources/META-INF/cxf/bus-extensions.txt | 3 +-
.../http_jetty/JettyHTTPDestinationTest.java | 2 +-
rt/transports/websocket/pom.xml | 10 +-
.../websocket/WebSocketDestinationFactory.java | 8 +-
.../websocket/jetty/JettyWebSocketHandler.java | 53 -------
.../Jetty10WebSocketDestination.java} | 106 ++++++--------
.../{jetty9 => jetty10}/JettyWebSocketHandler.java | 25 ++--
.../jetty/JettyWebSocketDestinationTest.java | 4 +-
.../cdi/base/jetty/AbstractJettyServer.java | 6 +-
systests/cdi/cdi-weld/pom.xml | 5 +
systests/jaxrs/pom.xml | 16 +--
.../jaxrs/metrics/JAXRSClientMetricsTest.java | 61 ++++----
systests/jaxws/pom.xml | 4 +-
systests/microprofile/client/async/pom.xml | 2 +-
systests/microprofile/client/nocdi/pom.xml | 2 +-
systests/microprofile/client/weld/pom.xml | 47 +++++-
systests/microprofile/client/weld/testng.xml | 17 ---
systests/microprofile/pom.xml | 45 ------
systests/rs-http-sci/pom.xml | 2 +-
.../jaxrs/servlet/jetty/AbstractJettyServer.java | 2 +
systests/rs-sse/rs-sse-jetty/pom.xml | 8 +-
systests/transports/pom.xml | 6 +-
.../cxf/systest/http2_jetty/Http2TestClient.java | 15 +-
43 files changed, 259 insertions(+), 682 deletions(-)
diff --git a/distribution/javadoc/pom.xml b/distribution/javadoc/pom.xml
index 6cfc8681b0..6c41fdacff 100644
--- a/distribution/javadoc/pom.xml
+++ b/distribution/javadoc/pom.xml
@@ -458,10 +458,6 @@
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-continuation</artifactId>
- </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
@@ -490,7 +486,7 @@
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
<groupId>io.reactivex.rxjava3</groupId>
diff --git
a/distribution/src/main/release/samples/jax_rs/basic_http2_jetty/pom.xml
b/distribution/src/main/release/samples/jax_rs/basic_http2_jetty/pom.xml
index 4456085e1f..4f3a50a01c 100644
--- a/distribution/src/main/release/samples/jax_rs/basic_http2_jetty/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/basic_http2_jetty/pom.xml
@@ -84,7 +84,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
</dependencies>
</profile>
@@ -107,12 +107,12 @@
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
</dependencies>
</project>
diff --git
a/distribution/src/main/release/samples/jax_rs/description_openapi_v3_web/pom.xml
b/distribution/src/main/release/samples/jax_rs/description_openapi_v3_web/pom.xml
index 961987a776..76fc5dd3a8 100644
---
a/distribution/src/main/release/samples/jax_rs/description_openapi_v3_web/pom.xml
+++
b/distribution/src/main/release/samples/jax_rs/description_openapi_v3_web/pom.xml
@@ -35,7 +35,7 @@ under the License.
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<configuration>
<webApp>
<contextPath>/</contextPath>
diff --git
a/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
b/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
index e0cd9de5a6..ded08e7ae4 100644
---
a/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
+++
b/distribution/src/main/release/samples/jax_rs/description_swagger2_web/pom.xml
@@ -39,7 +39,7 @@ under the License.
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<configuration>
<webApp>
<contextPath>/</contextPath>
diff --git a/distribution/src/main/release/samples/jax_rs/sse_cdi/pom.xml
b/distribution/src/main/release/samples/jax_rs/sse_cdi/pom.xml
index 242bcf11a9..36e07cfcf6 100644
--- a/distribution/src/main/release/samples/jax_rs/sse_cdi/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/sse_cdi/pom.xml
@@ -70,7 +70,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
@@ -81,7 +81,7 @@
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
diff --git a/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml
b/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml
index 1193cb56bf..f68760a2d2 100644
--- a/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/sse_spring/pom.xml
@@ -47,7 +47,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
@@ -58,7 +58,7 @@
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
<dependency>
diff --git a/distribution/src/main/release/samples/jax_rs/websocket/pom.xml
b/distribution/src/main/release/samples/jax_rs/websocket/pom.xml
index 520ab3fc08..edad303bac 100644
--- a/distribution/src/main/release/samples/jax_rs/websocket/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/websocket/pom.xml
@@ -57,14 +57,14 @@
</property>
</activation>
<properties>
- <cxf.jetty.version>${cxf.jetty9.version}</cxf.jetty.version>
+ <cxf.jetty.version>${cxf.jetty10.version}</cxf.jetty.version>
</properties>
<dependencies>
<!-- jetty9 websocket -->
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
diff --git a/distribution/src/main/release/samples/jax_rs/websocket_web/pom.xml
b/distribution/src/main/release/samples/jax_rs/websocket_web/pom.xml
index cb678a8487..08162dfccf 100644
--- a/distribution/src/main/release/samples/jax_rs/websocket_web/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/websocket_web/pom.xml
@@ -38,7 +38,7 @@
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<configuration>
<webAppSourceDirectory>${project.build.directory}/${project.name}</webAppSourceDirectory>
<scanIntervalSeconds>1</scanIntervalSeconds>
diff --git a/distribution/src/main/release/samples/pom.xml
b/distribution/src/main/release/samples/pom.xml
index 43b205262f..d5d7f8518d 100644
--- a/distribution/src/main/release/samples/pom.xml
+++ b/distribution/src/main/release/samples/pom.xml
@@ -32,7 +32,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.boot.version>2.7.6</spring.boot.version>
<spring.cloud.eureka.version>3.1.4</spring.cloud.eureka.version>
- <cxf.jetty9.version>9.4.49.v20220914</cxf.jetty9.version>
+ <cxf.jetty10.version>10.0.12</cxf.jetty10.version>
<cxf.netty.version>4.1.85.Final</cxf.netty.version>
<cxf.httpcomponents.client.version>4.5.13</cxf.httpcomponents.client.version>
<cxf.swagger.ui.version>4.15.5</cxf.swagger.ui.version>
@@ -208,7 +208,7 @@
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
diff --git a/parent/pom.xml b/parent/pom.xml
index 863eba39a0..7ab17f46f6 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -106,6 +106,7 @@
<cxf.ehcache3.version>3.9.3</cxf.ehcache3.version>
<cxf.el-api.version>3.0.3</cxf.el-api.version>
<cxf.findbugs.version>3.0.2</cxf.findbugs.version>
+ <cxf.hoverfly.version>0.14.0</cxf.hoverfly.version>
<cxf.geronimo.j2ee.management.version>1.0.1</cxf.geronimo.j2ee.management.version>
<cxf.geronimo.jms.version>1.1.1</cxf.geronimo.jms.version>
<cxf.geronimo.json.version>1.4</cxf.geronimo.json.version>
@@ -151,8 +152,8 @@
<cxf.jdom.version>1.0</cxf.jdom.version>
<cxf.jettison.version>1.5.2</cxf.jettison.version>
<cxf.jetty.osgi.version>[9.2,10)</cxf.jetty.osgi.version>
- <cxf.jetty9.version>9.4.49.v20220914</cxf.jetty9.version>
- <cxf.jetty.version>${cxf.jetty9.version}</cxf.jetty.version>
+ <cxf.jetty10.version>10.0.12</cxf.jetty10.version>
+ <cxf.jetty.version>${cxf.jetty10.version}</cxf.jetty.version>
<cxf.jexl.version>3.2.1</cxf.jexl.version>
<cxf.joda.time.version>2.10.10</cxf.joda.time.version>
<cxf.johnzon.version>1.2.18</cxf.johnzon.version>
@@ -1173,11 +1174,6 @@
<artifactId>jetty-security</artifactId>
<version>${cxf.jetty.version}</version>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-continuation</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
diff --git a/rt/rs/microprofile-client/pom.xml
b/rt/rs/microprofile-client/pom.xml
index 6a2967f798..011ff52fdb 100644
--- a/rt/rs/microprofile-client/pom.xml
+++ b/rt/rs/microprofile-client/pom.xml
@@ -120,6 +120,10 @@
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>jakarta.json.bind</groupId>
+ <artifactId>jakarta.json.bind-api</artifactId>
+ </dependency>
<dependency>
<groupId>org.eclipse.microprofile.rest.client</groupId>
<artifactId>microprofile-rest-client-tck</artifactId>
@@ -187,18 +191,6 @@
<version>${cxf.commons-jcs-jcache.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.github.tomakehurst</groupId>
- <artifactId>wiremock</artifactId>
- <version>${cxf.wiremock.version}</version>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.xmlunit</groupId>
- <artifactId>xmlunit-core</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
</dependencies>
<build>
diff --git
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
index 0f10811217..8323453261 100644
---
a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
+++
b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MicroProfileClientFactoryBean.java
@@ -44,6 +44,7 @@ import org.apache.cxf.jaxrs.client.spec.TLSConfiguration;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.model.FilterProviderInfo;
import org.apache.cxf.jaxrs.model.ProviderInfo;
+import org.apache.cxf.jaxrs.provider.jsrjsonb.JsrJsonbProvider;
import org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider;
import org.apache.cxf.microprofile.client.cdi.CDIInterceptorWrapper;
import org.apache.cxf.microprofile.client.proxy.MicroProfileClientProxyImpl;
@@ -78,6 +79,7 @@ public class MicroProfileClientFactoryBean extends
JAXRSClientFactoryBean {
registeredProviders.add(new ProviderInfo<>(new
DefaultResponseExceptionMapper(), getBus(), false));
}
registeredProviders.add(new ProviderInfo<>(new JsrJsonpProvider(),
getBus(), false));
+ registeredProviders.add(new ProviderInfo<>(new JsrJsonbProvider(),
getBus(), false));
super.setProviders(registeredProviders);
}
diff --git
a/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/AsyncTest.java
b/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/AsyncTest.java
index b0e7f06022..a4b0243b44 100644
---
a/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/AsyncTest.java
+++
b/rt/rs/microprofile-client/src/test/java/org/apache/cxf/microprofile/client/AsyncTest.java
@@ -18,70 +18,69 @@
*/
package org.apache.cxf.microprofile.client;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
import java.net.URI;
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.TimeUnit;
-import com.github.tomakehurst.wiremock.common.FileSource;
-import com.github.tomakehurst.wiremock.extension.Parameters;
-import com.github.tomakehurst.wiremock.extension.ResponseTransformer;
-import com.github.tomakehurst.wiremock.http.Request;
-import com.github.tomakehurst.wiremock.http.Response;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
import org.apache.cxf.microprofile.client.mock.AsyncClient;
import org.apache.cxf.microprofile.client.mock.NotFoundExceptionMapper;
import org.eclipse.microprofile.rest.client.RestClientBuilder;
-import org.junit.Rule;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.notFound;
-import static com.github.tomakehurst.wiremock.client.WireMock.ok;
-import static
com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
public class AsyncTest {
- @SuppressWarnings("unchecked")
- @Rule
- public WireMockRule wireMockRule = new WireMockRule(wireMockConfig()
- .extensions(SimpleTransformer.class).dynamicPort());
-
- public static class SimpleTransformer extends ResponseTransformer {
- private final Queue<String> queue = new ArrayBlockingQueue<>(2);
-
- public SimpleTransformer() {
- queue.add("Hello");
- queue.add("World");
- }
-
- @Override
- public Response transform(Request request, Response response,
FileSource fileSource, Parameters parameters) {
- return Response.Builder
- .like(response)
- .but().body(queue.poll())
- .build();
- }
+ private HttpServer server;
+ private final Queue<String> queue = new ArrayBlockingQueue<>(2);
+ public class SimpleHandler implements HttpHandler {
@Override
- public boolean applyGlobally() {
- return false;
+ public void handle(HttpExchange exchange) throws IOException {
+ final String body = queue.poll();
+ if (body == null) {
+ exchange.sendResponseHeaders(404, 0);
+ } else {
+ exchange.sendResponseHeaders(200, body.length());
+ try (OutputStream os = exchange.getResponseBody()) {
+ os.write(body.getBytes());
+ }
+ }
}
+ }
- @Override
- public String getName() {
- return "enqueue-transformer";
- }
+ @Before
+ public void setUp() throws IOException {
+ server = HttpServer.create(new InetSocketAddress(0), 2);
+ server.createContext("/", new SimpleHandler());
+ server.start();
}
-
+
+ @After
+ public void tearDown() throws IOException {
+ server.stop(0);
+ queue.clear();
+ }
+
@Test
public void testAsyncClient() throws Exception {
- URI uri = URI.create(wireMockRule.baseUrl());
+ queue.add("Hello");
+ queue.add("World");
+
+ URI uri = URI.create("http://localhost:" +
server.getAddress().getPort());
AsyncClient client = RestClientBuilder.newBuilder()
.baseUri(uri)
.connectTimeout(5,
TimeUnit.SECONDS)
@@ -89,8 +88,6 @@ public class AsyncTest {
.build(AsyncClient.class);
assertNotNull(client);
-
wireMockRule.stubFor(get("/").willReturn(ok().withTransformers("enqueue-transformer")));
-
String combined = client.get().thenCombine(client.get(), (a, b) -> {
return a + " " + b;
}).toCompletableFuture().get(10, TimeUnit.SECONDS);
@@ -100,14 +97,13 @@ public class AsyncTest {
@Test
public void testAsyncClientCanMapExceptionResponses() throws Exception {
- URI uri = URI.create(wireMockRule.baseUrl());
+ URI uri = URI.create("http://localhost:" +
server.getAddress().getPort());
AsyncClient client = RestClientBuilder.newBuilder()
.baseUri(uri)
.connectTimeout(5,
TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.register(NotFoundExceptionMapper.class)
.build(AsyncClient.class);
- wireMockRule.stubFor(get("/").willReturn(notFound()));
CompletionStage<?> cs = client.get().exceptionally(t -> {
Throwable t2 = t.getCause();
diff --git a/rt/transports/http-jetty/pom.xml b/rt/transports/http-jetty/pom.xml
index 5509e05876..2039a5bebf 100644
--- a/rt/transports/http-jetty/pom.xml
+++ b/rt/transports/http-jetty/pom.xml
@@ -114,10 +114,6 @@
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-continuation</artifactId>
- </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
index 6592b80a66..8fb2eed210 100644
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
+++
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
@@ -40,13 +40,11 @@ import
org.apache.cxf.common.classloader.ClassLoaderUtils.ClassLoaderHolder;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.configuration.jsse.TLSServerParameters;
import org.apache.cxf.configuration.security.CertificateConstraintsType;
-import org.apache.cxf.continuations.ContinuationProvider;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.io.CopyingOutputStream;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.http.DestinationRegistry;
-import
org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider;
import org.apache.cxf.transport.https.CertConstraintsJaxBUtils;
import org.apache.cxf.transport.servlet.ServletDestination;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
@@ -372,17 +370,6 @@ public class JettyHTTPDestination extends
ServletDestination {
protected Message retrieveFromContinuation(HttpServletRequest req) {
return (Message)req.getAttribute(CXF_CONTINUATION_MESSAGE);
}
- protected void setupContinuation(Message inMessage,
- final HttpServletRequest req,
- final HttpServletResponse resp) {
- if (engine != null && engine.getContinuationsEnabled()) {
- super.setupContinuation(inMessage, req, resp);
- if (!inMessage.containsKey(ContinuationProvider.class.getName())) {
- inMessage.put(ContinuationProvider.class.getName(),
- new JettyContinuationProvider(req, resp, inMessage));
- }
- }
- }
private Request getCurrentRequest() {
try {
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
index eb24ae49be..b35b7f9d86 100644
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
+++
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
@@ -29,6 +29,7 @@ import org.apache.cxf.Bus;
import org.apache.cxf.transport.http.HttpUrlUtil;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.server.handler.ContextHandler;
public class JettyHTTPHandler extends AbstractHandler {
private static final String METHOD_TRACE = "TRACE";
@@ -83,6 +84,10 @@ public class JettyHTTPHandler extends AbstractHandler {
}
+ public ContextHandler createContextHandler() {
+ return new ContextHandler();
+ }
+
public Bus getBus() {
return jettyHTTPDestination != null ? jettyHTTPDestination.getBus() :
bus;
}
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
index ee205c6bf5..16bb945667 100644
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
+++
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
@@ -490,7 +490,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
}
String contextName = HttpUriMapper.getContextName(url.getPath());
- ContextHandler context = new ContextHandler();
+ ContextHandler context = handler.createContextHandler();
context.setContextPath(contextName);
// bind the jetty http handler with the context handler
if (isSessionSupport) {
@@ -625,7 +625,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
private Connector createConnector(String hosto, int porto, final Bus bus) {
// now we just use the SelectChannelConnector as the default connector
- SslContextFactory sslcf = null;
+ SslContextFactory.Server sslcf = null;
if (tlsServerParameters != null) {
sslcf = new SslContextFactory.Server() {
protected void doStart() throws Exception {
@@ -667,7 +667,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
return result;
}
- AbstractConnector createConnectorJetty(SslContextFactory sslcf, String
hosto, int porto,
+ AbstractConnector createConnectorJetty(SslContextFactory.Server sslcf,
String hosto, int porto,
int major, int minor, final Bus bus) {
final AbstractConnector result;
try {
@@ -676,6 +676,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
HttpConnectionFactory httpFactory = new
HttpConnectionFactory(httpConfig);
Collection<ConnectionFactory> connectionFactories = new
ArrayList<>();
+ connectionFactories.add(httpFactory);
result = new org.eclipse.jetty.server.ServerConnector(server);
@@ -697,13 +698,15 @@ public class JettyHTTPServerEngine implements
ServerEngine, HttpServerEngineSupp
connectionFactories.add(new
HTTP2ServerConnectionFactory(httpConfig));
}
+ // Has to be set before the default protocol change
+ result.setConnectionFactories(connectionFactories);
+
String proto = (major > 9 || (major == 9 && minor >= 3)) ?
"SSL" : "SSL-HTTP/1.1";
result.setDefaultProtocol(proto);
} else if (isHttp2Enabled(bus)) {
connectionFactories.add(new
HTTP2CServerConnectionFactory(httpConfig));
+ result.setConnectionFactories(connectionFactories);
}
- connectionFactories.add(httpFactory);
- result.setConnectionFactories(connectionFactories);
if (getMaxIdleTime() > 0) {
result.setIdleTimeout(Long.valueOf(getMaxIdleTime()));
@@ -792,8 +795,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
}
}
- @SuppressWarnings("deprecation")
- protected void setClientAuthentication(SslContextFactory con,
+ protected void setClientAuthentication(SslContextFactory.Server con,
ClientAuthentication clientAuth) {
con.setWantClientAuth(true);
if (clientAuth != null) {
@@ -810,7 +812,7 @@ public class JettyHTTPServerEngine implements ServerEngine,
HttpServerEngineSupp
* of the JettySslConnector.
*/
private void decorateCXFJettySslSocketConnector(
- SslContextFactory con
+ SslContextFactory.Server con
) {
setClientAuthentication(con,
tlsServerParameters.getClientAuthentication());
@@ -1068,7 +1070,9 @@ public class JettyHTTPServerEngine implements
ServerEngine, HttpServerEngineSupp
if (mBeanContainer != null) {
removeServerMBean();
}
- server.destroy();
+ //After upgrade Jetty to 10.0.12, server.destroy() will clear
all MBeans from container
+ //The old version doesn't behavior like this and this
+ //server.destroy();
server = null;
}
}
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProvider.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProvider.java
deleted file mode 100644
index 877fe094ba..0000000000
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProvider.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * http://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.apache.cxf.transport.http_jetty.continuations;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.cxf.continuations.Continuation;
-import org.apache.cxf.continuations.ContinuationProvider;
-import org.apache.cxf.message.Message;
-
-public class JettyContinuationProvider implements ContinuationProvider {
-
- private HttpServletRequest request;
- private HttpServletResponse response;
- private Message inMessage;
- private JettyContinuationWrapper wrapper;
-
- public JettyContinuationProvider(HttpServletRequest req,
- HttpServletResponse resp,
- Message m) {
- request = req;
- response = resp;
- this.inMessage = m;
- }
-
- public void complete() {
- JettyContinuationWrapper r = getContinuation(false);
- if (r != null) {
- r.reset();
- }
- wrapper = null;
- }
- public Continuation getContinuation() {
- return getContinuation(true);
- }
- public JettyContinuationWrapper getContinuation(boolean create) {
- Message m = inMessage;
- // Get the real message which is used in the interceptor chain
- if (m != null && m.getExchange() != null &&
m.getExchange().getInMessage() != null) {
- m = m.getExchange().getInMessage();
- }
- if (m == null || m.getExchange() == null ||
m.getExchange().isOneWay()) {
- return null;
- }
- if (wrapper == null && create) {
- wrapper = new JettyContinuationWrapper(request, response, m);
- }
- return wrapper;
- }
-
-}
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProviderFactory.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProviderFactory.java
deleted file mode 100644
index dd6fd5aaf0..0000000000
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationProviderFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * http://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.apache.cxf.transport.http_jetty.continuations;
-
-import java.lang.reflect.Method;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletRequestWrapper;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.cxf.common.util.ReflectionUtil;
-import org.apache.cxf.continuations.ContinuationProvider;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.transport.http.AbstractHTTPDestination;
-import org.apache.cxf.transport.http.ContinuationProviderFactory;
-
-/**
- *
- */
-public class JettyContinuationProviderFactory implements
ContinuationProviderFactory {
-
- final boolean disableJettyContinuations
- =
Boolean.getBoolean("org.apache.cxf.transport.http_jetty.continuations.disable");
-
- public JettyContinuationProviderFactory() {
- }
-
- public ContinuationProvider createContinuationProvider(Message inMessage,
- HttpServletRequest
req,
- HttpServletResponse
resp) {
- if (!disableJettyContinuations) {
- ServletRequest r2 = req;
- while (r2 instanceof ServletRequestWrapper) {
- r2 = ((ServletRequestWrapper)r2).getRequest();
- }
- if (!r2.getClass().getName().contains("jetty")) {
- return null;
- }
-
- try {
- Method m = r2.getClass().getMethod("isAsyncSupported");
- Object o = ReflectionUtil.setAccessible(m).invoke(r2);
- if (((Boolean)o).booleanValue()) {
- return new JettyContinuationProvider(req, resp, inMessage);
- }
- } catch (Throwable t) {
- //ignore - either not a proper Jetty request object or
classloader issue
- //or similar.
- }
- }
- return null;
- }
-
- public Message retrieveFromContinuation(HttpServletRequest req) {
- return
(Message)req.getAttribute(AbstractHTTPDestination.CXF_CONTINUATION_MESSAGE);
- }
-
-}
diff --git
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
deleted file mode 100644
index 3e6e4f5248..0000000000
---
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * http://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.apache.cxf.transport.http_jetty.continuations;
-
-
-import java.util.concurrent.atomic.AtomicLong;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.cxf.continuations.Continuation;
-import org.apache.cxf.continuations.ContinuationCallback;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.transport.http.AbstractHTTPDestination;
-import org.eclipse.jetty.continuation.ContinuationListener;
-import org.eclipse.jetty.continuation.ContinuationSupport;
-
-@SuppressWarnings("deprecation")
-public class JettyContinuationWrapper implements Continuation,
ContinuationListener {
- volatile boolean isNew;
- volatile boolean isResumed;
- volatile boolean isPending;
- volatile boolean isTimeout;
- AtomicLong pendingTimeout = new AtomicLong();
- volatile Object obj;
-
- private Message message;
- private org.eclipse.jetty.continuation.Continuation continuation;
- private ContinuationCallback callback;
-
- public JettyContinuationWrapper(HttpServletRequest request,
- HttpServletResponse resp,
- Message m) {
- continuation = ContinuationSupport.getContinuation(request);
-
- message = m;
- isNew =
request.getAttribute(AbstractHTTPDestination.CXF_CONTINUATION_MESSAGE) == null;
- if (isNew) {
-
request.setAttribute(AbstractHTTPDestination.CXF_CONTINUATION_MESSAGE,
- message.getExchange().getInMessage());
- continuation.addContinuationListener(this);
- callback = message.getExchange().get(ContinuationCallback.class);
- }
- }
-
- public Object getObject() {
- return obj;
- }
- public void setObject(Object userObject) {
- obj = userObject;
- }
-
- public void resume() {
- isResumed = true;
- isPending = false;
- continuation.resume();
- }
-
- public boolean isNew() {
- return isNew;
- }
-
- public boolean isPending() {
- return isPending;
- }
-
- public boolean isResumed() {
- return isResumed;
- }
-
- public boolean isExpired() {
- return continuation.isExpired();
- }
-
- public void reset() {
- try {
- continuation.complete();
- } catch (Throwable ex) {
- // explicit complete call does not seem to work
- // with the non-Servlet3 Jetty Continuation
- }
- obj = null;
- pendingTimeout.set(0L);
- isTimeout = false;
- }
-
-
- public boolean suspend(long timeout) {
- if (isPending && timeout != 0) {
- pendingTimeout.addAndGet(timeout);
- } else {
- pendingTimeout.set(timeout);
- }
- isNew = false;
-
- message.getExchange().getInMessage().getInterceptorChain().suspend();
-
- continuation.setTimeout(pendingTimeout.get());
- if (!isPending) {
- continuation.suspend();
- isPending = true;
- }
- return true;
- }
-
- protected Message getMessage() {
- Message m = message;
- if (m != null && m.getExchange().getInMessage() != null) {
- m = m.getExchange().getInMessage();
- }
- return m;
- }
-
-
- public void onComplete(org.eclipse.jetty.continuation.Continuation cont) {
- getMessage().remove(AbstractHTTPDestination.CXF_CONTINUATION_MESSAGE);
- isPending = false;
- pendingTimeout.set(0L);
- isResumed = false;
- if (callback != null) {
- callback.onComplete();
- }
- }
-
- public void onTimeout(org.eclipse.jetty.continuation.Continuation cont) {
- isPending = false;
- pendingTimeout.set(0L);
- isResumed = true;
- isTimeout = true;
- }
-
- @Override
- public boolean isReadyForWrite() {
- return true;
- }
-
- @Override
- public boolean isTimeout() {
- return isTimeout;
- }
-
-}
diff --git
a/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
b/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
index fc257a6916..ea2b67dc97 100644
---
a/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
+++
b/rt/transports/http-jetty/src/main/resources/META-INF/cxf/bus-extensions.txt
@@ -1,3 +1,2 @@
org.apache.cxf.transport.http_jetty.JettyDestinationFactory::true
-org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory::true
-org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProviderFactory:org.apache.cxf.transport.http.ContinuationProviderFactory:true
+org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory::true
\ No newline at end of file
diff --git
a/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
b/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
index 5d42849d5c..670b656d94 100644
---
a/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
+++
b/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
@@ -676,7 +676,7 @@ public class JettyHTTPDestinationTest {
EasyMock.expect(request.getAttribute("org.eclipse.jetty.ajax.Continuation")).andReturn(null);
EasyMock.expect(request.getAttribute("http.service.redirection")).andReturn(null).anyTimes();
- HttpFields httpFields = new HttpFields();
+ HttpFields.Mutable httpFields = HttpFields.build();
httpFields.add("content-type", "text/xml");
httpFields.add("content-type", "charset=utf8");
httpFields.put(JettyHTTPDestinationTest.AUTH_HEADER,
JettyHTTPDestinationTest.BASIC_AUTH);
diff --git a/rt/transports/websocket/pom.xml b/rt/transports/websocket/pom.xml
index 27001a4ff2..5098bc3098 100644
--- a/rt/transports/websocket/pom.xml
+++ b/rt/transports/websocket/pom.xml
@@ -165,16 +165,10 @@
<artifactId>jetty-http</artifactId>
<optional>true</optional>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-continuation</artifactId>
- <optional>true</optional>
- </dependency>
-
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <artifactId>websocket-jetty-server</artifactId>
+ <version>${cxf.jetty10.version}</version>
<optional>true</optional>
<exclusions>
<exclusion>
diff --git
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
index 05a059a4a5..7d9f3dfb2e 100644
---
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
+++
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
@@ -43,8 +43,8 @@ public class WebSocketDestinationFactory implements
HttpDestinationFactory {
probeClass("org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory");
private static final boolean UNDERTOW_AVAILABLE =
probeClass("org.apache.cxf.transport.http_undertow.UndertowHTTPServerEngineFactory");
- private static final Constructor<?> JETTY9_WEBSOCKET_DESTINATION_CTR =
-
probeConstructor("org.apache.cxf.transport.websocket.jetty9.Jetty9WebSocketDestination");
+ private static final Constructor<?> JETTY10_WEBSOCKET_DESTINATION_CTR =
+
probeConstructor("org.apache.cxf.transport.websocket.jetty10.Jetty10WebSocketDestination");
private static final Constructor<?> UNDERTOW_WEBSOCKET_DESTINATION_CTR =
probeUndertowConstructor("org.apache.cxf.transport.websocket.undertow.UndertowWebSocketDestination");
private static final Constructor<?>
ATMOSPHERE_WEBSOCKET_JETTY_DESTINATION_CTR =
@@ -110,7 +110,7 @@ public class WebSocketDestinationFactory implements
HttpDestinationFactory {
// for the embedded mode, we stick to jetty if jetty is available
JettyHTTPServerEngineFactory serverEngineFactory = bus
.getExtension(JettyHTTPServerEngineFactory.class);
- return
createJettyHTTPDestination(JETTY9_WEBSOCKET_DESTINATION_CTR, bus, registry,
+ return
createJettyHTTPDestination(JETTY10_WEBSOCKET_DESTINATION_CTR, bus, registry,
endpointInfo,
serverEngineFactory);
} else if (UNDERTOW_AVAILABLE) {
// use UndertowWebSocketDestination
@@ -132,7 +132,7 @@ public class WebSocketDestinationFactory implements
HttpDestinationFactory {
endpointInfo.getAddress());
}
// use jetty-websocket
- return createJettyHTTPDestination(JETTY9_WEBSOCKET_DESTINATION_CTR,
bus, registry,
+ return createJettyHTTPDestination(JETTY10_WEBSOCKET_DESTINATION_CTR,
bus, registry,
endpointInfo, null);
}
diff --git
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
deleted file mode 100644
index 84b70a5ee3..0000000000
---
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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
- *
- * http://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.apache.cxf.transport.websocket.jetty;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
-import org.apache.cxf.transport.http_jetty.JettyHTTPHandler;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.websocket.server.WebSocketServerFactory;
-
-/**
- * The extended version of JettyHTTPHandler that can support websocket.
- */
-class JettyWebSocketHandler extends JettyHTTPHandler {
- private WebSocketServerFactory webSocketFactory;
-
- JettyWebSocketHandler(JettyHTTPDestination jhd, boolean cmExact,
- WebSocketServerFactory webSocketFactory) {
- super(jhd, cmExact);
- this.webSocketFactory = webSocketFactory;
- }
-
- @Override
- public void handle(String target, Request baseRequest, HttpServletRequest
request,
- HttpServletResponse response) throws IOException,
ServletException {
- if (webSocketFactory.acceptWebSocket(request, response)) {
- baseRequest.setHandled(true);
- } else {
- super.handle(target, baseRequest, request, response);
- }
- }
-}
diff --git
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/Jetty10WebSocketDestination.java
similarity index 79%
rename from
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
rename to
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/Jetty10WebSocketDestination.java
index 20e4f8cf1c..35c2ef6d4f 100644
---
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
+++
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/Jetty10WebSocketDestination.java
@@ -17,17 +17,17 @@
* under the License.
*/
-package org.apache.cxf.transport.websocket.jetty9;
+package org.apache.cxf.transport.websocket.jetty10;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.net.InetSocketAddress;
import java.net.URL;
import java.nio.ByteBuffer;
import java.security.Principal;
import java.util.Enumeration;
import java.util.Locale;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionException;
import java.util.logging.Level;
@@ -58,30 +58,28 @@ import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.UpgradeRequest;
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
-import org.eclipse.jetty.websocket.server.WebSocketHandler;
-import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
-import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
-import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
-import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
+import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
/**
*
*/
-public class Jetty9WebSocketDestination extends JettyHTTPDestination implements
+public class Jetty10WebSocketDestination extends JettyHTTPDestination
implements
WebSocketDestinationService {
- private static final Logger LOG =
LogUtils.getL7dLogger(Jetty9WebSocketDestination.class);
+ private static final Logger LOG =
LogUtils.getL7dLogger(Jetty10WebSocketDestination.class);
//REVISIT make these keys configurable
private static final String REQUEST_ID_KEY =
WebSocketConstants.DEFAULT_REQUEST_ID_KEY;
private static final String RESPONSE_ID_KEY =
WebSocketConstants.DEFAULT_RESPONSE_ID_KEY;
private final Executor executor;
+ private JettyWebSocketServerContainer webSocketServerContainer;
- private WebSocketHandler webSockethandler;
- private WebSocketServletFactory webSocketFactory;
-
- public Jetty9WebSocketDestination(Bus bus, DestinationRegistry registry,
EndpointInfo ei,
+ public Jetty10WebSocketDestination(Bus bus, DestinationRegistry registry,
EndpointInfo ei,
JettyHTTPServerEngineFactory
serverEngineFactory) throws IOException {
super(bus, registry, ei,
serverEngineFactory == null ? null : new
URL(getNonWSAddress(ei)),
@@ -99,16 +97,31 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
final HttpServletRequest request,
final HttpServletResponse response) throws IOException {
- WebSocketServletFactory wsf = getWebSocketFactory(config, context);
+ JettyWebSocketServerContainer wssc = getWebSocketContainer(context);
+ JettyWebSocketCreator creator = getCreator();
- if (wsf.isUpgradeRequest(request, response)
- && wsf.acceptWebSocket(request, response)) {
+ if (wssc.upgrade(creator, request, response)) {
((Request)request).setHandled(true);
return;
}
super.invoke(config, context, request, response);
}
+ public JettyWebSocketCreator getCreator() {
+ return new Creator();
+ }
+
+ public synchronized JettyWebSocketServerContainer
getWebSocketContainer(ServletContext context) {
+ if (webSocketServerContainer == null) {
+ webSocketServerContainer =
JettyWebSocketServerContainer.getContainer(context);
+ if (webSocketServerContainer == null) {
+ webSocketServerContainer =
JettyWebSocketServerContainer.ensureContainer(context);
+ }
+ return webSocketServerContainer;
+ }
+ return webSocketServerContainer;
+ }
+
private static String getNonWSAddress(EndpointInfo endpointInfo) {
String address = endpointInfo.getAddress();
if (address.startsWith("ws")) {
@@ -127,33 +140,6 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
return h.getServer();
}
- private WebSocketServletFactory getWebSocketFactory(ServletConfig config,
ServletContext context) {
- if (webSocketFactory == null) {
- Server server = getServer(config, context);
- return getWebSocketFactory(server);
- }
- return webSocketFactory;
- }
-
- public synchronized WebSocketServletFactory getWebSocketFactory(Server
server) {
- if (webSocketFactory == null) {
- webSockethandler = new WebSocketHandler() {
- @Override
- public void configure(WebSocketServletFactory factory) {
- }
- };
- try {
- webSockethandler.setServer(server);
- webSockethandler.start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- webSocketFactory = webSockethandler.getWebSocketFactory();
- webSocketFactory.setCreator(new Creator());
- }
- return webSocketFactory;
- }
-
@Override
protected JettyHTTPHandler createJettyHTTPHandler(JettyHTTPDestination
jhd, boolean cmExact) {
return new JettyWebSocketHandler(jhd, cmExact, this);
@@ -161,11 +147,6 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
@Override
public void shutdown() {
- try {
- webSockethandler.stop();
- } catch (Exception e) {
- //nothing needed
- }
super.shutdown();
}
@@ -179,7 +160,7 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
public void run() {
HttpServletResponse response = null;
try {
- WebSocketServletHolder holder = new
Jetty9WebSocketHolder(session);
+ WebSocketServletHolder holder = new
Jetty10WebSocketHolder(session);
response = createServletResponse(holder);
HttpServletRequest request = createServletRequest(data,
offset, length, holder, session);
String reqid = request.getHeader(REQUEST_ID_KEY);
@@ -233,10 +214,10 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
}
// hide this jetty9 interface here to avoid CNFE on WebSocketCreator
- private class Creator implements WebSocketCreator {
+ private class Creator implements JettyWebSocketCreator {
@Override
- public Object createWebSocket(ServletUpgradeRequest req,
ServletUpgradeResponse resp) {
+ public Object createWebSocket(JettyServerUpgradeRequest req,
JettyServerUpgradeResponse resp) {
return new WebSocketAdapter() {
Session session;
@Override
@@ -263,16 +244,16 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
}
- class Jetty9WebSocketHolder implements WebSocketServletHolder {
+ class Jetty10WebSocketHolder implements WebSocketServletHolder {
final Session session;
- Jetty9WebSocketHolder(Session s) {
+ Jetty10WebSocketHolder(Session s) {
session = s;
}
public String getAuthType() {
return null;
}
public String getContextPath() {
- return
((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getContextPath();
+ return
getHttpServletRequest(session.getUpgradeRequest()).getContextPath();
}
public String getLocalAddr() {
return null;
@@ -332,21 +313,24 @@ public class Jetty9WebSocketDestination extends
JettyHTTPDestination implements
return null;
}
public int getServerPort() {
- return session.getLocalAddress().getPort();
+ return ((InetSocketAddress)session.getLocalAddress()).getPort();
}
public Principal getUserPrincipal() {
return null;
}
public Object getAttribute(String name) {
- return
((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getAttribute(name);
+ return
getHttpServletRequest(session.getUpgradeRequest()).getAttribute(name);
}
@Override
public void write(byte[] data, int offset, int length) throws
IOException {
- try {
- session.getRemote().sendBytesByFuture(ByteBuffer.wrap(data,
offset, length)).get();
- } catch (InterruptedException | ExecutionException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ session.getRemote().sendBytes(ByteBuffer.wrap(data, offset,
length));
+ }
+
+ private HttpServletRequest getHttpServletRequest(final UpgradeRequest
upgradeRequest) {
+ if (upgradeRequest instanceof JettyServerUpgradeRequest) {
+ return
((JettyServerUpgradeRequest)upgradeRequest).getHttpServletRequest();
+ } else {
+ throw new IllegalStateException("Unsupported upgrade request
class: " + upgradeRequest.getClass());
}
}
}
diff --git
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/JettyWebSocketHandler.java
similarity index 66%
rename from
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
rename to
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/JettyWebSocketHandler.java
index 03cb2b4a0b..6108e48305 100644
---
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
+++
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty10/JettyWebSocketHandler.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.cxf.transport.websocket.jetty9;
+package org.apache.cxf.transport.websocket.jetty10;
import java.io.IOException;
@@ -27,24 +27,27 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
import org.apache.cxf.transport.http_jetty.JettyHTTPHandler;
import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+import org.eclipse.jetty.server.handler.ContextHandler;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
+import
org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
/**
* The extended version of JettyHTTPHandler that can support websocket.
*/
class JettyWebSocketHandler extends JettyHTTPHandler {
- final Jetty9WebSocketDestination webSocketDestination;
- WebSocketServletFactory webSocketFactory;
+ final Jetty10WebSocketDestination webSocketDestination;
+ JettyWebSocketServerContainer webSocketContainer;
JettyWebSocketHandler(JettyHTTPDestination jhd, boolean cmExact,
- Jetty9WebSocketDestination wsd) {
+ Jetty10WebSocketDestination wsd) {
super(jhd, cmExact);
this.webSocketDestination = wsd;
}
@Override
public void doStart() throws Exception {
- webSocketFactory =
webSocketDestination.getWebSocketFactory(this.getServer());
+ webSocketContainer =
webSocketDestination.getWebSocketContainer(getServletContext());
super.doStart();
}
@@ -55,12 +58,18 @@ class JettyWebSocketHandler extends JettyHTTPHandler {
HttpServletResponse response)
throws IOException, ServletException {
- if (webSocketFactory.isUpgradeRequest(request, response)
- && webSocketFactory.acceptWebSocket(request, response)) {
+ if (webSocketContainer.upgrade(webSocketDestination.getCreator(),
request, response)) {
baseRequest.setHandled(true);
return;
}
super.handle(target, baseRequest, request, response);
}
+ @Override
+ public ContextHandler createContextHandler() {
+ final ServletContextHandler handler = new ServletContextHandler();
+ JettyWebSocketServletContainerInitializer.configure(handler, null);
+ return handler;
+ }
+
}
diff --git
a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
index 711d7d7253..adb54adb5c 100644
---
a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
+++
b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
@@ -30,7 +30,7 @@ import org.apache.cxf.transport.http.DestinationRegistry;
import org.apache.cxf.transport.http.HTTPTransportFactory;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;
-import org.apache.cxf.transport.websocket.jetty9.Jetty9WebSocketDestination;
+import org.apache.cxf.transport.websocket.jetty10.Jetty10WebSocketDestination;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
@@ -76,7 +76,7 @@ public class JettyWebSocketDestinationTest {
assertNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
}
- private static class TestJettyWebSocketDestination extends
Jetty9WebSocketDestination {
+ private static class TestJettyWebSocketDestination extends
Jetty10WebSocketDestination {
TestJettyWebSocketDestination(Bus bus, DestinationRegistry registry,
EndpointInfo ei,
JettyHTTPServerEngineFactory
serverEngineFactory,
JettyHTTPServerEngine engine) throws
IOException {
diff --git
a/systests/cdi/base/src/main/java/org/apache/cxf/systests/cdi/base/jetty/AbstractJettyServer.java
b/systests/cdi/base/src/main/java/org/apache/cxf/systests/cdi/base/jetty/AbstractJettyServer.java
index 2645851b2a..d9a178ed4c 100644
---
a/systests/cdi/base/src/main/java/org/apache/cxf/systests/cdi/base/jetty/AbstractJettyServer.java
+++
b/systests/cdi/base/src/main/java/org/apache/cxf/systests/cdi/base/jetty/AbstractJettyServer.java
@@ -72,10 +72,8 @@ public abstract class AbstractJettyServer extends
AbstractBusTestServerBase {
final WebAppContext context = new WebAppContext();
context.setContextPath(contextPath);
context.setBaseResource(Resource.newClassPathResource(resourcePath));
- context.setServerClasses(new String[] {
- "org.eclipse.jetty.servlet.ServletContextHandler.Decorator"
- });
-
+
+ WebAppContext.addServerClasses(server,
"org.eclipse.jetty.servlet.ServletContextHandler.Decorator");
HandlerCollection handlers = new HandlerCollection();
handlers.setHandlers(new Handler[] {context, new
DefaultHandler()});
server.setHandler(handlers);
diff --git a/systests/cdi/cdi-weld/pom.xml b/systests/cdi/cdi-weld/pom.xml
index 5f0f02448a..b92f018e51 100644
--- a/systests/cdi/cdi-weld/pom.xml
+++ b/systests/cdi/cdi-weld/pom.xml
@@ -118,5 +118,10 @@
<artifactId>cxf-systests-cdi-base</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-jndi</artifactId>
+ <version>${cxf.jetty.version}</version>
+ </dependency>
</dependencies>
</project>
diff --git a/systests/jaxrs/pom.xml b/systests/jaxrs/pom.xml
index 63f10931e4..dc80574271 100644
--- a/systests/jaxrs/pom.xml
+++ b/systests/jaxrs/pom.xml
@@ -527,14 +527,14 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.github.tomakehurst</groupId>
- <artifactId>wiremock</artifactId>
- <version>${cxf.wiremock.version}</version>
+ <groupId>io.specto</groupId>
+ <artifactId>hoverfly-java</artifactId>
+ <version>${cxf.hoverfly.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
- <groupId>org.xmlunit</groupId>
- <artifactId>xmlunit-core</artifactId>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
@@ -619,8 +619,8 @@
<dependencies>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <artifactId>websocket-jetty-server</artifactId>
+ <version>${cxf.jetty10.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
@@ -632,7 +632,7 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaas</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
</dependency>
</dependencies>
</profile>
diff --git
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/metrics/JAXRSClientMetricsTest.java
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/metrics/JAXRSClientMetricsTest.java
index fb50adc5c8..1417727631 100644
---
a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/metrics/JAXRSClientMetricsTest.java
+++
b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/metrics/JAXRSClientMetricsTest.java
@@ -28,7 +28,6 @@ import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
@@ -40,7 +39,11 @@ import org.apache.cxf.metrics.MetricsProvider;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.springframework.util.SocketUtils;
+import io.specto.hoverfly.junit.core.SimulationSource;
+import io.specto.hoverfly.junit.rule.HoverflyRule;
+
import org.junit.Before;
+import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -48,19 +51,16 @@ import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
-import static
com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
+import static io.specto.hoverfly.junit.core.HoverflyConfig.localConfigs;
+import static io.specto.hoverfly.junit.dsl.HoverflyDsl.response;
+import static io.specto.hoverfly.junit.dsl.HoverflyDsl.service;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.times;
@RunWith(MockitoJUnitRunner.class)
public class JAXRSClientMetricsTest {
- @Rule public WireMockRule wireMockRule = new
WireMockRule(wireMockConfig().dynamicPort());
+ @ClassRule public static HoverflyRule hoverflyRule =
HoverflyRule.inSimulationMode(localConfigs().asWebServer());
@Rule public ExpectedException expectedException =
ExpectedException.none();
private MetricsProvider provider;
@@ -95,13 +95,14 @@ public class JAXRSClientMetricsTest {
public void usingClientProxyStopIsCalledWhenServerReturnsNotFound() throws
Exception {
final JAXRSClientFactoryBean factory = new JAXRSClientFactoryBean();
factory.setResourceClass(Library.class);
- factory.setAddress("http://localhost:" + wireMockRule.port() + "/");
+ factory.setAddress("http://localhost:" + hoverflyRule.getProxyPort() +
"/");
factory.setFeatures(Arrays.asList(new MetricsFeature(provider)));
factory.setProvider(JacksonJsonProvider.class);
-
- stubFor(get(urlEqualTo("/books/10"))
- .willReturn(aResponse()
- .withStatus(404)));
+
+ hoverflyRule.simulate(SimulationSource.dsl(
+ service("localhost")
+ .get("/books/10")
+ .willReturn(response().status(404))));
try {
final Library client = factory.create(Library.class);
@@ -123,14 +124,15 @@ public class JAXRSClientMetricsTest {
.register(new MetricsFeature(provider))
.register(JacksonJsonProvider.class);
- stubFor(get(urlEqualTo("/books/10"))
- .willReturn(aResponse()
- .withStatus(404)));
+ hoverflyRule.simulate(SimulationSource.dsl(
+ service("localhost")
+ .get("/books/10")
+ .willReturn(response().status(404))));
try {
expectedException.expect(ProcessingException.class);
client
- .target("http://localhost:" + wireMockRule.port() +
"/books/10")
+ .target("http://localhost:" + hoverflyRule.getProxyPort() +
"/books/10")
.request(MediaType.APPLICATION_JSON).get()
.readEntity(Book.class);
} finally {
@@ -174,16 +176,18 @@ public class JAXRSClientMetricsTest {
.register(new MetricsFeature(provider))
.register(JacksonJsonProvider.class);
- stubFor(get(urlEqualTo("/books/10"))
- .withHeader("Accept", equalTo(MediaType.APPLICATION_JSON))
- .willReturn(aResponse()
- .withHeader("Content-Type", MediaType.APPLICATION_JSON)
- .withBody("{}")
- .withStatus(200)));
+ hoverflyRule.simulate(SimulationSource.dsl(
+ service("localhost")
+ .get("/books/10")
+ .header("Accept", MediaType.APPLICATION_JSON)
+ .willReturn(response()
+ .header("Content-Type", MediaType.APPLICATION_JSON)
+ .body("{}")
+ .status(200))));
try {
client
- .target("http://localhost:" + wireMockRule.port() +
"/books/10")
+ .target("http://localhost:" + hoverflyRule.getProxyPort() +
"/books/10")
.request(MediaType.APPLICATION_JSON)
.get()
.readEntity(Book.class);
@@ -198,12 +202,13 @@ public class JAXRSClientMetricsTest {
@Test
public void usingWebClientStopIsCalledWhenServerReturnsNotFound() throws
Exception {
- final WebClient client = WebClient.create("http://localhost:" +
wireMockRule.port() + "/books/10",
+ final WebClient client = WebClient.create("http://localhost:" +
hoverflyRule.getProxyPort() + "/books/10",
Arrays.asList(JacksonJsonProvider.class), Arrays.asList(new
MetricsFeature(provider)), null);
- stubFor(get(urlEqualTo("/books/10"))
- .willReturn(aResponse()
- .withStatus(404)));
+ hoverflyRule.simulate(SimulationSource.dsl(
+ service("localhost")
+ .get("/books/10")
+ .willReturn(response().status(404))));
try {
expectedException.expect(ProcessingException.class);
diff --git a/systests/jaxws/pom.xml b/systests/jaxws/pom.xml
index 088fb513b1..7131615b2c 100644
--- a/systests/jaxws/pom.xml
+++ b/systests/jaxws/pom.xml
@@ -168,8 +168,8 @@
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <artifactId>websocket-jetty-server</artifactId>
+ <version>${cxf.jetty10.version}</version>
<optional>true</optional>
<exclusions>
<exclusion>
diff --git a/systests/microprofile/client/async/pom.xml
b/systests/microprofile/client/async/pom.xml
index 3d9d50f3c3..1a11b74d2e 100644
--- a/systests/microprofile/client/async/pom.xml
+++ b/systests/microprofile/client/async/pom.xml
@@ -130,7 +130,7 @@
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
- <artifactId>wiremock</artifactId>
+ <artifactId>wiremock-standalone</artifactId>
<version>${cxf.wiremock.version}</version>
<scope>test</scope>
<exclusions>
diff --git a/systests/microprofile/client/nocdi/pom.xml
b/systests/microprofile/client/nocdi/pom.xml
index 86bcca1d33..acedc758c0 100644
--- a/systests/microprofile/client/nocdi/pom.xml
+++ b/systests/microprofile/client/nocdi/pom.xml
@@ -126,7 +126,7 @@
</dependency>
<dependency>
<groupId>com.github.tomakehurst</groupId>
- <artifactId>wiremock</artifactId>
+ <artifactId>wiremock-standalone</artifactId>
<version>${cxf.wiremock.version}</version>
<scope>test</scope>
<exclusions>
diff --git a/systests/microprofile/client/weld/pom.xml
b/systests/microprofile/client/weld/pom.xml
index 3886034d1d..e7d2541a82 100644
--- a/systests/microprofile/client/weld/pom.xml
+++ b/systests/microprofile/client/weld/pom.xml
@@ -32,8 +32,9 @@
<properties>
<cxf.module.name>org.apache.cxf.systests.microprofile.weld</cxf.module.name>
+ <cxf.jetty.version>9.4.49.v20220914</cxf.jetty.version>
</properties>
-
+
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.testng</groupId>
@@ -67,6 +68,10 @@
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>jakarta.json.bind</groupId>
+ <artifactId>jakarta.json.bind-api</artifactId>
+ </dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
@@ -88,6 +93,36 @@
<artifactId>microprofile-rest-client-tck</artifactId>
<version>${cxf.microprofile.rest.client.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>${cxf.jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>${cxf.jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlets</artifactId>
+ <version>${cxf.jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-webapp</artifactId>
+ <version>${cxf.jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-proxy</artifactId>
+ <version>${cxf.jetty.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -135,13 +170,17 @@
<dependenciesToScan>
<dependency>org.eclipse.microprofile.rest.client:microprofile-rest-client-tck</dependency>
</dependenciesToScan>
- <suiteXmlFiles>
- <suiteXmlFile>testng.xml</suiteXmlFile>
- </suiteXmlFiles>
<systemPropertyVariables>
<wiremock.server.port>${wiremock.server.port}</wiremock.server.port>
<sse.server.port>${sse.server.port}</sse.server.port>
</systemPropertyVariables>
+ <properties>
+ <property>
+ <name>listener</name>
+
<value>org.apache.cxf.microprofile.AnnotationTransformer</value>
+ </property>
+ </properties>
+ <reuseForks>false</reuseForks>
</configuration>
<dependencies>
<dependency>
diff --git a/systests/microprofile/client/weld/testng.xml
b/systests/microprofile/client/weld/testng.xml
deleted file mode 100644
index 5fbb897b49..0000000000
--- a/systests/microprofile/client/weld/testng.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
-<suite name="MPRestClientTCK1.3">
- <listeners>
- <listener
class-name="org.apache.cxf.microprofile.AnnotationTransformer"/>
- </listeners>
- <test name="All TCK Tests">
- <packages>
- <package name="org.eclipse.microprofile.rest.client.tck" />
- <package name="org.eclipse.microprofile.rest.client.tck.cditests"
/>
- <package
name="org.eclipse.microprofile.rest.client.tck.asynctests" />
- <package name="org.eclipse.microprofile.rest.client.tck.sse" />
- <package name="org.eclipse.microprofile.rest.client.tck.ssl" />
- <package name="org.eclipse.microprofile.rest.client.tck.timeout"
/>
- </packages>
- </test>
-</suite>
diff --git a/systests/microprofile/pom.xml b/systests/microprofile/pom.xml
index 34388a363a..26ed795f17 100644
--- a/systests/microprofile/pom.xml
+++ b/systests/microprofile/pom.xml
@@ -126,51 +126,6 @@
<version>${cxf.microprofile.rest.client.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-io</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-plus</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>apache-jsp</artifactId>
- <version>${cxf.jetty.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.glassfish</groupId>
- <artifactId>javax.el</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm-commons</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>${cxf.jetty.version}</version>
- </dependency>
</dependencies>
</dependencyManagement>
<modules>
diff --git a/systests/rs-http-sci/pom.xml b/systests/rs-http-sci/pom.xml
index 5de94ae5ca..15dcdb5c32 100644
--- a/systests/rs-http-sci/pom.xml
+++ b/systests/rs-http-sci/pom.xml
@@ -31,7 +31,7 @@
<description>Apache CXF Servlet Container Initializer Integration System
Tests</description>
<url>https://cxf.apache.org</url>
<properties>
- <cxf.jetty.version>${cxf.jetty9.version}</cxf.jetty.version>
+ <cxf.jetty.version>${cxf.jetty10.version}</cxf.jetty.version>
<cxf.module.name>org.apache.cxf.systests.rs.sci</cxf.module.name>
</properties>
<dependencies>
diff --git
a/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
b/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
index 6c791151f7..064be334ab 100644
---
a/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
+++
b/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
@@ -24,6 +24,7 @@ import org.eclipse.jetty.annotations.AnnotationConfiguration;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.webapp.Configuration;
+import org.eclipse.jetty.webapp.WebAppConfiguration;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.webapp.WebXmlConfiguration;
@@ -50,6 +51,7 @@ public abstract class AbstractJettyServer extends
AbstractBusTestServerBase {
context.setConfigurations(new Configuration[] {
new WebXmlConfiguration(),
+ new WebAppConfiguration(),
new AnnotationConfiguration()
});
diff --git a/systests/rs-sse/rs-sse-jetty/pom.xml
b/systests/rs-sse/rs-sse-jetty/pom.xml
index a0d91f78f7..abb6a2f245 100644
--- a/systests/rs-sse/rs-sse-jetty/pom.xml
+++ b/systests/rs-sse/rs-sse-jetty/pom.xml
@@ -30,7 +30,7 @@
<description>Apache CXF SSE Integration System Tests for
Jetty</description>
<url>https://cxf.apache.org</url>
<properties>
- <cxf.jetty.version>${cxf.jetty9.version}</cxf.jetty.version>
+ <cxf.jetty.version>${cxf.jetty10.version}</cxf.jetty.version>
<cxf.module.name>org.apache.cxf.systests.rs.sse.jetty</cxf.module.name>
</properties>
<dependencies>
@@ -56,12 +56,6 @@
<artifactId>jetty-plus</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-server</artifactId>
- <version>${cxf.jetty.version}</version>
- <scope>test</scope>
- </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
diff --git a/systests/transports/pom.xml b/systests/transports/pom.xml
index a44bd15d2e..1e95214d7d 100644
--- a/systests/transports/pom.xml
+++ b/systests/transports/pom.xml
@@ -346,19 +346,19 @@
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-client</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-server</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-client</artifactId>
- <version>${cxf.jetty9.version}</version>
+ <version>${cxf.jetty10.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
diff --git
a/systests/transports/src/test/java/org/apache/cxf/systest/http2_jetty/Http2TestClient.java
b/systests/transports/src/test/java/org/apache/cxf/systest/http2_jetty/Http2TestClient.java
index 70a388abce..2492b325df 100644
---
a/systests/transports/src/test/java/org/apache/cxf/systest/http2_jetty/Http2TestClient.java
+++
b/systests/transports/src/test/java/org/apache/cxf/systest/http2_jetty/Http2TestClient.java
@@ -27,7 +27,6 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.eclipse.jetty.http.HttpFields;
@@ -139,11 +138,11 @@ public class Http2TestClient implements AutoCloseable {
new ServerSessionListener.Adapter(), sessionPromise);
final Session session = sessionPromise.get();
- final HttpFields requestFields = new HttpFields();
+ final HttpFields.Mutable requestFields = HttpFields.build();
requestFields.add(HttpHeader.ACCEPT, accept);
requestFields.add(HttpHeader.HOST, "localhost");
- final MetaData.Request request = new MetaData.Request(method, new
HttpURI(address + path),
+ final MetaData.Request request = new MetaData.Request(method,
HttpURI.build(address + path),
version, requestFields);
final CompletableFuture<ClientResponse> future = new
CompletableFuture<>();
@@ -192,9 +191,9 @@ public class Http2TestClient implements AutoCloseable {
}
@Override
- public void onTimeout(Stream stream, Throwable x) {
+ public boolean onIdleTimeout(Stream stream, Throwable x) {
future.completeExceptionally(x);
- super.onTimeout(stream, x);
+ return super.onIdleTimeout(stream, x);
}
@Override
@@ -202,11 +201,5 @@ public class Http2TestClient implements AutoCloseable {
future.completeExceptionally(failure);
super.onFailure(stream, error, reason, failure, callback);
}
-
- @Override
- public void onFailure(Stream stream, int error, String reason,
Callback callback) {
- future.completeExceptionally(new ClientErrorException(reason,
error));
- super.onFailure(stream, error, reason, callback);
- }
}
}