You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2022/08/01 19:55:25 UTC

[cxf] branch 3.5.x-fixes updated (dedf304666 -> 583399f6d9)

This is an automated email from the ASF dual-hosted git repository.

reta pushed a change to branch 3.5.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


    from dedf304666 Recording .gitmergeinfo Changes
     new a7b4f1698c CXF-8744: Get rid of httpunit (#974)
     new 583399f6d9 Recording .gitmergeinfo Changes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitmergeinfo                                      |   1 +
 systests/transports/pom.xml                        |  21 +-
 .../cxf/systest/servlet}/AbstractJettyServer.java  |  41 +-
 .../cxf/systest/servlet/AbstractServletTest.java   | 137 +++---
 .../apache/cxf/systest/servlet/CXFFilterTest.java  | 116 +++--
 .../apache/cxf/systest/servlet/CXFServletTest.java | 466 +++++++++++----------
 .../systest/servlet/ErrorContextSerletTest.java    |  62 ---
 .../systest/servlet/ErrorContextServletTest.java}  |  45 +-
 .../servlet/ExternalServicesServletTest.java       | 135 +++---
 .../systest/servlet/GetMethodQueryWebRequest.java  |  42 --
 .../cxf/systest/servlet/JaxRsServletTest.java      |  78 ----
 .../cxf/systest/servlet/JsFrontEndServletTest.java |  85 ++--
 .../systest/servlet/NoSpringServletClientTest.java |  48 ++-
 .../servlet/SpringAutoPublishServletTest.java      | 153 ++++---
 .../systest/servlet/SpringServletContextTest.java  |  63 ++-
 .../cxf/systest/servlet/SpringServletTest.java     | 193 +++++----
 16 files changed, 852 insertions(+), 834 deletions(-)
 copy systests/{rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty => transports/src/test/java/org/apache/cxf/systest/servlet}/AbstractJettyServer.java (65%)
 delete mode 100644 systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextSerletTest.java
 copy systests/{rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/JettyEmptyApplicationTest.java => transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextServletTest.java} (60%)
 delete mode 100644 systests/transports/src/test/java/org/apache/cxf/systest/servlet/GetMethodQueryWebRequest.java
 delete mode 100644 systests/transports/src/test/java/org/apache/cxf/systest/servlet/JaxRsServletTest.java


[cxf] 01/02: CXF-8744: Get rid of httpunit (#974)

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.5.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit a7b4f1698c9f05ad0af949f8a3ab9a45976d9a2d
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Mon Aug 1 15:10:20 2022 -0400

    CXF-8744: Get rid of httpunit (#974)
    
    (cherry picked from commit 3d71fe88f5d9649f3b770598b5b170cb6bc8871f)
    
    # Conflicts:
    #       systests/transports/pom.xml
    #       systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletContextTest.java
---
 systests/transports/pom.xml                        |  21 +-
 .../cxf/systest/servlet/AbstractJettyServer.java   |  75 ++++
 .../cxf/systest/servlet/AbstractServletTest.java   | 137 +++---
 .../apache/cxf/systest/servlet/CXFFilterTest.java  | 116 +++--
 .../apache/cxf/systest/servlet/CXFServletTest.java | 466 +++++++++++----------
 .../systest/servlet/ErrorContextSerletTest.java    |  62 ---
 .../systest/servlet/ErrorContextServletTest.java   |  72 ++++
 .../servlet/ExternalServicesServletTest.java       | 135 +++---
 .../systest/servlet/GetMethodQueryWebRequest.java  |  42 --
 .../cxf/systest/servlet/JaxRsServletTest.java      |  78 ----
 .../cxf/systest/servlet/JsFrontEndServletTest.java |  85 ++--
 .../systest/servlet/NoSpringServletClientTest.java |  48 ++-
 .../servlet/SpringAutoPublishServletTest.java      | 153 ++++---
 .../systest/servlet/SpringServletContextTest.java  |  63 ++-
 .../cxf/systest/servlet/SpringServletTest.java     | 193 +++++----
 15 files changed, 958 insertions(+), 788 deletions(-)

diff --git a/systests/transports/pom.xml b/systests/transports/pom.xml
index bc26953d6f..ba1aa9fbaa 100644
--- a/systests/transports/pom.xml
+++ b/systests/transports/pom.xml
@@ -229,24 +229,9 @@
             <version>${cxf.spring.version}</version>
         </dependency>
         <dependency>
-            <groupId>httpunit</groupId>
-            <artifactId>httpunit</artifactId>
-            <version>1.7</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>xerces</groupId>
-                    <artifactId>xercesImpl</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>xerces</groupId>
-                    <artifactId>xmlParserAPIs</artifactId>
-                </exclusion>
-            </exclusions>
+            <groupId>net.sourceforge.nekohtml</groupId>
+            <artifactId>nekohtml</artifactId>
+            <version>1.9.22</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractJettyServer.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractJettyServer.java
new file mode 100644
index 0000000000..2d72777d71
--- /dev/null
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractJettyServer.java
@@ -0,0 +1,75 @@
+/**
+ * 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.systest.servlet;
+
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.DefaultHandler;
+import org.eclipse.jetty.server.handler.HandlerCollection;
+import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.webapp.WebAppContext;
+
+import static org.junit.Assert.fail;
+
+public abstract class AbstractJettyServer extends AbstractBusTestServerBase {
+    private org.eclipse.jetty.server.Server server;
+    private final String descriptor;
+    private final String resourcePath;
+    private final String contextPath;
+    private final int port;
+
+    protected AbstractJettyServer(final String descriptor, final String resourcePath,
+            final String contextPath, int portNumber) {
+        this.descriptor = descriptor;
+        this.resourcePath = resourcePath;
+        this.contextPath = contextPath;
+        this.port = portNumber;
+    }
+
+    protected void run() {
+        server = new Server(port);
+
+        try {
+            final WebAppContext context = new WebAppContext();
+            context.setContextPath(contextPath);
+            context.setBaseResource(Resource.newClassPathResource(resourcePath));
+            context.setDescriptor(Resource.newClassPathResource(descriptor).getURI().toString());
+
+            HandlerCollection handlers = new HandlerCollection();
+            handlers.setHandlers(new Handler[] {context, new DefaultHandler()});
+            server.setHandler(handlers);
+            server.start();
+        } catch (final Exception ex) {
+            ex.printStackTrace();
+            fail(ex.getMessage());
+        }
+    }
+
+    public void tearDown() throws Exception {
+        super.tearDown();
+
+        if (server != null) {
+            server.stop();
+            server.destroy();
+            server = null;
+        }
+    }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractServletTest.java
index bcf882d5fd..4e59e67e47 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/AbstractServletTest.java
@@ -21,60 +21,105 @@ package org.apache.cxf.systest.servlet;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
+import java.util.Collection;
+import java.util.HashSet;
 
-import org.xml.sax.SAXException;
-
-import com.meterware.httpunit.HttpException;
-import com.meterware.httpunit.HttpNotFoundException;
-import com.meterware.httpunit.HttpUnitOptions;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.servletunit.ServletRunner;
-import com.meterware.servletunit.ServletUnitClient;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
-import org.apache.cxf.test.AbstractCXFTest;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
-import org.junit.After;
-import org.junit.Before;
+import org.apache.cxf.test.TestUtilities;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.html.dom.HTMLAnchorElementImpl;
+import org.apache.html.dom.HTMLDocumentImpl;
+import org.apache.http.HttpHeaders;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.entity.ContentType;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.cyberneko.html.parsers.DOMParser;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
-public abstract class AbstractServletTest extends AbstractCXFTest {
+public abstract class AbstractServletTest extends AbstractBusClientServerTestBase {
     public static final String CONTEXT = "/mycontext";
-    public static final String CONTEXT_URL = "http://localhost/mycontext";
-    protected ServletRunner sr;
-
-    @Before
-    public void setUp() throws Exception {
-        InputStream configurationStream = getResourceAsStream(getConfiguration());
-        sr = new ServletRunner(configurationStream, CONTEXT);
-        try {
-            sr.newClient().getResponse(CONTEXT_URL + "/services");
-        } catch (HttpNotFoundException e) {
-            // ignore, we just want to boot up the servlet
-        }
+    protected TestUtilities testUtilities;
+    
+    protected AbstractServletTest() {
+        testUtilities = new TestUtilities(getClass());
+        testUtilities.addDefaultNamespaces();
+    }
 
-        HttpUnitOptions.setExceptionsThrownOnErrorStatus(true);
-        configurationStream.close();
+    /**
+     * Add a namespace that will be used for XPath expressions.
+     *
+     * @param ns Namespace name.
+     * @param uri The namespace uri.
+     */
+    public void addNamespace(String ns, String uri) {
+        testUtilities.addNamespace(ns, uri);
     }
-    @After
-    public void tearDown() throws Exception {
-        if (sr != null) {
-            sr.shutDown();
-        }
+
+    /**
+     * Assert that the following XPath query selects one or more nodes.
+     *
+     * @param xpath
+     * @throws Exception
+     */
+    public NodeList assertValid(String xpath, Node node) throws Exception {
+        return testUtilities.assertValid(xpath, node);
     }
 
     /**
-     * @return The web.xml to use for testing.
+     * Assert that the text of the xpath node retrieved is equal to the value
+     * specified.
+     *
+     * @param xpath
+     * @param value
+     * @param node
      */
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web.xml";
+    public void assertXPathEquals(String xpath, String value, Node node) throws Exception {
+        testUtilities.assertXPathEquals(xpath, value, node);
     }
 
-    protected ServletUnitClient newClient() {
-        return sr.newClient();
+    protected CloseableHttpClient newClient() {
+        return HttpClients.createDefault();
     }
 
+    protected String uri(String path) {
+        return "http://localhost:" + getPort() + CONTEXT + path;
+    }
+    
+    protected Collection<HTMLAnchorElementImpl> getLinks(HTMLDocumentImpl document) {
+        final Collection<HTMLAnchorElementImpl> links = new HashSet<>();
+
+        for (int i = 0; i < document.getLinks().getLength(); ++i) {
+            final HTMLAnchorElementImpl link = (HTMLAnchorElementImpl)document.getLinks().item(i); 
+            links.add(link);
+        }
+
+        return links;
+    }
+
+    protected HTMLDocumentImpl parse(InputStream in) throws SAXException, IOException {
+        final DOMParser parser = new DOMParser();
+        parser.parse(new InputSource(in));
+        return (HTMLDocumentImpl)parser.getDocument();
+    }
+
+    protected String getContentType(CloseableHttpResponse response) {
+        return ContentType.parse(response.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue()).getMimeType();
+    }
+    
+    protected String getCharset(CloseableHttpResponse response) {
+        return ContentType.parse(response.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue()).getCharset().name();
+    }
+
+    protected abstract int getPort();
+
     /**
      * Here we expect an errorCode other than 200, and look for it checking for
      * text is omitted as it doesn't work. It would never work on java1.3, but
@@ -88,20 +133,12 @@ public abstract class AbstractServletTest extends AbstractCXFTest {
      * @throws IOException
      * @throws SAXException
      */
-    protected void expectErrorCode(WebRequest request, int errorCode, String errorText)
+    protected void expectErrorCode(HttpUriRequest request, int errorCode, String errorText)
         throws MalformedURLException, IOException, SAXException {
-        String failureText = "Expected error " + errorCode + " from " + request.getURL();
-
-        try {
-            newClient().getResponse(request);
-            fail(errorText + " -got success instead");
-        } catch (HttpException e) {
-            assertEquals(failureText, errorCode, e.getResponseCode());
-            /*
-             * checking for text omitted as it doesn't work. if(errorText!=null) {
-             * assertTrue( "Failed to find "+errorText+" in "+
-             * e.getResponseMessage(), e.getMessage().indexOf(errorText)>=0); }
-             */
+        String failureText = "Expected error " + errorCode + " from " + request.getRequestLine().getUri();
+
+        try (CloseableHttpResponse response = newClient().execute(request)) {
+            assertEquals(failureText, errorCode, response.getStatusLine().getStatusCode());
         }
     }
 }
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFFilterTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFFilterTest.java
index 681cc5842e..b4e6baf8c8 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFFilterTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFFilterTest.java
@@ -20,70 +20,102 @@ package org.apache.cxf.systest.servlet;
 
 
 import java.nio.charset.StandardCharsets;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.w3c.dom.Document;
 
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebLink;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
-
+import org.apache.html.dom.HTMLAnchorElementImpl;
+import org.apache.html.dom.HTMLDocumentImpl;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 public class CXFFilterTest extends AbstractServletTest {
 
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
 
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-filter.xml";
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-filter.xml", "/", CONTEXT, PORT);
+        }
     }
 
-    @Test
-    public void testGetServiceList() throws Exception {
-
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
+    }
 
-        //test the '/' context get service list
-        WebResponse res = client.getResponse(CONTEXT_URL + "/");
-        WebLink[] links = res.getLinks();
-        assertEquals("Wrong number of service links", 3, links.length);
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
+    }
 
-        Set<String> links2 = new HashSet<>();
-        for (WebLink l : links) {
-            links2.add(l.getURLString());
+    @Test
+    public void testGetServiceList() throws Exception {
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/"));
+            
+            //test the '/' context get service list
+            try (CloseableHttpResponse res = client.execute(method)) {
+                HTMLDocumentImpl doc = parse(res.getEntity().getContent());
+                Collection<HTMLAnchorElementImpl> links = getLinks(doc);
+                assertEquals("Wrong number of service links", 3, links.size());
+    
+                Set<String> links2 = new HashSet<>();
+                for (HTMLAnchorElementImpl link: links) {
+                    links2.add(link.getHref());
+                }
+    
+                assertEquals("text/html", getContentType(res));
+                assertEquals(StandardCharsets.UTF_8.name(), getCharset(res));
+            }
         }
-
-        assertEquals("text/html", res.getContentType());
     }
 
     @Test
     public void testPostInvokeServices() throws Exception {
-        newClient();
-
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/services/Greeter",
-                getClass().getResourceAsStream("GreeterMessage.xml"),
-                "text/xml; charset=UTF-8");
-
-        WebResponse response = newClient().getResponse(req);
-
-        assertEquals("text/xml", response.getContentType());
-        assertEquals(StandardCharsets.UTF_8.name(), response.getCharacterSet());
-
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        try (CloseableHttpClient client = newClient()) {
+            final HttpPost method = new HttpPost(uri("/services/Greeter"));
+
+            method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+                ContentType.create("text/xml", StandardCharsets.UTF_8)));
+            
+            try (CloseableHttpResponse response = client.execute(method)) {
+                assertEquals("text/xml", getContentType(response));
+                assertEquals(StandardCharsets.UTF_8.name(), getCharset(response));
+                
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+            }
+        }
+    }
 
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
     }
-}
\ No newline at end of file
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
index e5ea8f17d9..7d342c2d4d 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/CXFServletTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.cxf.systest.servlet;
 
-
-
 import java.nio.charset.StandardCharsets;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -33,41 +32,54 @@ import javax.xml.ws.soap.SOAPBinding;
 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;
 
-import com.meterware.httpunit.GetMethodWebRequest;
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebLink;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
 import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.hello_world_soap_http.BaseGreeterImpl;
-
-import org.junit.Before;
+import org.apache.html.dom.HTMLAnchorElementImpl;
+import org.apache.html.dom.HTMLDocumentImpl;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
+import static org.hamcrest.CoreMatchers.equalTo;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 
 public class CXFServletTest extends AbstractServletTest {
 
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web.xml", "/", CONTEXT, PORT);
+        }
+    }
 
-    @Before
-    public void setUp() throws Exception {
-        BusFactory.setDefaultBus(null);
-        BusFactory.setThreadDefaultBus(null);
-        super.setUp();
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
     }
 
-    @Override
-    protected Bus createBus() throws BusException {
-        return null;
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
     @Test
@@ -78,245 +90,268 @@ public class CXFServletTest extends AbstractServletTest {
     }
 
     private void invoke(String encoding) throws Exception {
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/services/greeter",
-            getClass().getResourceAsStream("GreeterMessage.xml"),
-            "text/xml; charset=" + encoding);
-
-        ServletUnitClient client = newClient();
-        WebResponse response = client.getResponse(req);
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        assertEquals("text/xml", response.getContentType());
-        assertTrue(encoding.equalsIgnoreCase(response.getCharacterSet()));
-
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
-
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
+        try (CloseableHttpClient client = newClient()) {
+            final HttpPost method = new HttpPost(uri("/services/greeter"));
+
+            method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+                ContentType.create("text/xml", encoding)));
+
+            try (CloseableHttpResponse response = client.execute(method)) {
+                assertEquals("text/xml", getContentType(response));
+                assertEquals(encoding.toUpperCase(), getCharset(response));
+        
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+            }
+        }
     }
 
     @Test
     public void testGetServiceList() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        WebResponse res = client.getResponse(CONTEXT_URL + "/services");
-
-
-        WebLink[] links = res.getLinks();
-        assertEquals("Wrong number of service links", 6, links.length);
-
-        Set<String> links2 = new HashSet<>();
-        for (WebLink l : links) {
-            links2.add(l.getURLString());
-        }
-
-        assertTrue(links2.contains(CONTEXT_URL + "/services/greeter?wsdl"));
-        assertTrue(links2.contains(CONTEXT_URL + "/services/greeter2?wsdl"));
-        assertTrue(links2.contains("http://cxf.apache.org/MyGreeter?wsdl"));
-        assertEquals("text/html", res.getContentType());
-
-        res = client.getResponse(CONTEXT_URL + "/services/");
-
-
-        links = res.getLinks();
-        links2.clear();
-        for (WebLink l : links) {
-            links2.add(l.getURLString());
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services"));
+    
+            try (CloseableHttpResponse res = client.execute(method)) {
+                HTMLDocumentImpl doc = parse(res.getEntity().getContent());
+                Collection<HTMLAnchorElementImpl> links = getLinks(doc);
+                assertEquals("Wrong number of service links", 6, links.size());
+        
+                Set<String> links2 = new HashSet<>();
+                for (HTMLAnchorElementImpl l : links) {
+                    links2.add(l.getHref());
+                }
+        
+                assertTrue(links2.contains(uri("/services/greeter?wsdl")));
+                assertTrue(links2.contains(uri("/services/greeter2?wsdl")));
+                assertTrue(links2.contains("http://cxf.apache.org/MyGreeter?wsdl"));
+
+                assertEquals("text/html", getContentType(res));
+            }
+        
+            try (CloseableHttpResponse res = client.execute(method)) {
+                HTMLDocumentImpl doc = parse(res.getEntity().getContent());
+                Collection<HTMLAnchorElementImpl> links = getLinks(doc);
+
+                Set<String> links2 = new HashSet<>();
+                for (HTMLAnchorElementImpl l : links) {
+                    links2.add(l.getHref());
+                }
+
+                assertEquals("Wrong number of service links", 6, links.size());
+                assertTrue(links2.contains(uri("/services/greeter?wsdl")));
+                assertTrue(links2.contains(uri("/services/greeter2?wsdl")));
+                assertTrue(links2.contains("http://cxf.apache.org/MyGreeter?wsdl"));
+        
+                assertEquals("text/html", getContentType(res));
+        
+                // Ensure that the Bus is available for people doing an Endpoint.publish() or similar.
+                assertNotNull(BusFactory.getDefaultBus(false));
+            }
         }
-
-        assertEquals("Wrong number of service links", 6, links.length);
-        assertTrue(links2.contains(CONTEXT_URL + "/services/greeter?wsdl"));
-        assertTrue(links2.contains(CONTEXT_URL + "/services/greeter2?wsdl"));
-        assertTrue(links2.contains("http://cxf.apache.org/MyGreeter?wsdl"));
-
-        assertEquals("text/html", res.getContentType());
-
-
-        // Ensure that the Bus is available for people doing an Endpoint.publish() or similar.
-        assertNotNull(BusFactory.getDefaultBus(false));
     }
 
     @Test
     public void testGetUnformatServiceList() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        WebResponse res = client.getResponse(CONTEXT_URL + "/services?formatted=false");
-
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter3"));
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter2"));
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter"));
-
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services?formatted=false"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                final String content = IOUtils.readStringFromStream(res.getEntity().getContent());
+                assertTrue(content.contains(uri("/services/greeter3")));
+                assertTrue(content.contains(uri("/services/greeter2")));
+                assertTrue(content.contains(uri("/services/greeter")));
+            }
+        }
     }
 
     @Test
     public void testServiceListWithLoopAddress() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        WebResponse res = client.getResponse(CONTEXT_URL + "/services");
-
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter3"));
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter2"));
-        assertTrue(res.getText().contains("http://localhost/mycontext/services/greeter"));
-        WebRequest req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter?wsdl");
-        res = client.getResponse(req);
-        req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter2?wsdl");
-        res = client.getResponse(req);
-        req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter3?wsdl");
-        res = client.getResponse(req);
-        String loopAddr = "http://127.0.0.1/mycontext";
-        res = client.getResponse(loopAddr + "/services");
-        assertFalse(res.getText().contains(
-             "http://127.0.0.1/mycontext/serviceshttp://localhost/mycontext/services/greeter"));
-
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                final String content = IOUtils.readStringFromStream(res.getEntity().getContent());
+                assertTrue(content.contains(uri("/services/greeter3")));
+                assertTrue(content.contains(uri("/services/greeter2")));
+                assertTrue(content.contains(uri("/services/greeter")));
+            }
+            
+            final HttpGet greeter = new HttpGet(uri("/services/greeter?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter)) {
+                assertThat(res.getStatusLine().getStatusCode(), equalTo(200));
+            }
+            
+            final HttpGet greeter2 = new HttpGet(uri("/services/greeter2?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter2)) {
+                assertThat(res.getStatusLine().getStatusCode(), equalTo(200));
+            }
+            
+            final HttpGet greeter3 = new HttpGet(uri("/services/greeter3?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter3)) {
+                assertThat(res.getStatusLine().getStatusCode(), equalTo(200));
+            }
+                
+            final HttpGet loopback = new HttpGet("http://127.0.0.1:" + getPort() + "/mycontext/services");
+            try (CloseableHttpResponse res = client.execute(loopback)) {
+                final String content = IOUtils.readStringFromStream(res.getEntity().getContent());
+                assertTrue(content.contains("http://127.0.0.1:" + getPort() + "/mycontext/services"));
+            }
+        }
     }
 
     @Test
     public void testGetWSDL() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address[@location='" + CONTEXT_URL + "/services/greeter']", doc);
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/greeter?wsdl"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address[@location='" + uri("/services/greeter") + "']", doc);
+            }
+        }
     }
 
 
     @Test
     public void testGetWSDLWithMultiplePublishedEndpointUrl() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter5?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-        WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
-        wsdlReader.setFeature("javax.wsdl.verbose", false);
-
-
-        assertValid("//wsdl:service[@name='SOAPService']/wsdl:port[@name='SoapPort']/wsdlsoap:address[@location='"
-            + "http://cxf.apache.org/publishedEndpointUrl1']", doc);
-        assertValid("//wsdl:service[@name='SOAPService']/wsdl:port[@name='SoapPort1']/wsdlsoap:address[@location='"
-            + "http://cxf.apache.org/publishedEndpointUrl2']", doc);
-
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/greeter5?wsdl"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+                WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
+                wsdlReader.setFeature("javax.wsdl.verbose", false);
+        
+                assertValid(
+                    "//wsdl:service[@name='SOAPService']/wsdl:port[@name='SoapPort']/wsdlsoap:address[@location='"
+                        + "http://cxf.apache.org/publishedEndpointUrl1']", doc);
+                assertValid(
+                    "//wsdl:service[@name='SOAPService']/wsdl:port[@name='SoapPort1']/wsdlsoap:address[@location='"
+                        + "http://cxf.apache.org/publishedEndpointUrl2']", doc);
+            }
+        }
     }
+
     @Test
     public void testGetWSDLWithIncludes() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter3?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertXPathEquals("//xsd:include/@schemaLocation",
-                          "http://localhost/mycontext/services/greeter3?xsd=hello_world_includes2.xsd",
-                          doc.getDocumentElement());
-
-        req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter3?xsd=hello_world_includes2.xsd");
-
-        res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-        doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//xsd:complexType[@name='ErrorCode']", doc);
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet wsdl = new HttpGet(uri("/services/greeter3?wsdl"));
+
+            try (CloseableHttpResponse res = client.execute(wsdl)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertXPathEquals("//xsd:include/@schemaLocation",
+                                  uri("/services/greeter3?xsd=hello_world_includes2.xsd"),
+                                  doc.getDocumentElement());
+            }
+        
+            final HttpGet xsd = new HttpGet(uri("/services/greeter3?xsd=hello_world_includes2.xsd"));
+            try (CloseableHttpResponse res = client.execute(xsd)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//xsd:complexType[@name='ErrorCode']", doc);
+            }
+        }
     }
 
     @Test
     public void testGetWSDLWithXMLBinding() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter2?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("http", "http://schemas.xmlsoap.org/wsdl/http/");
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        NodeList addresses = assertValid("//http:address/@location", doc);
-        boolean found = true;
-        for (int i = 0; i < addresses.getLength(); i++) {
-            String address = addresses.item(i).getLocalName();
-            if (address.startsWith("http://localhost") && address.endsWith("/services/greeter2")) {
-                found = true;
-                break;
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/greeter2?wsdl"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+        
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("http", "http://schemas.xmlsoap.org/wsdl/http/");
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                NodeList addresses = assertValid("//http:address/@location", doc);
+                boolean found = true;
+                for (int i = 0; i < addresses.getLength(); i++) {
+                    String address = addresses.item(i).getLocalName();
+                    if (address.startsWith("http://localhost") && address.endsWith("/services/greeter2")) {
+                        found = true;
+                        break;
+                    }
+                }
+                assertTrue(found);
             }
         }
-        assertTrue(found);
     }
 
     @Test
     public void testInvalidServiceUrl() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/NoSuchService"));
 
-        WebResponse res = client.getResponse(CONTEXT_URL + "/services/NoSuchService");
-        assertEquals(404, res.getResponseCode());
-        assertEquals("text/html", res.getContentType());
+            try (CloseableHttpResponse res = client.execute(method)) {
+                assertEquals(404, res.getStatusLine().getStatusCode());
+                assertEquals("text/html", getContentType(res));
+            }
+        }
     }
 
     @Test
     public void testServiceWsdlNotFound() throws Exception {
-        WebRequest req = new GetMethodWebRequest(CONTEXT_URL + "/services/NoSuchService?wsdl");
-
-        expectErrorCode(req, 404, "Response code 404 required for invalid WSDL url.");
+        final HttpGet method = new HttpGet(uri("/services/NoSuchService?wsdl"));
+        expectErrorCode(method, 404, "Response code 404 required for invalid WSDL url.");
     }
 
     @Test
     public void testGetImportedXSD() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req
-            = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter?wsdl");
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        String text = res.getText();
-        assertEquals("text/xml", res.getContentType());
-        assertTrue(text.contains(CONTEXT_URL + "/services/greeter?wsdl=test_import.xsd"));
-
-        req = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/greeter?wsdl=test_import.xsd");
-        res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        text = res.getText();
-
-        assertEquals("text/xml", res.getContentType());
-        assertTrue("the xsd should contain the completType SimpleStruct",
-                   text.contains("<complexType name=\"SimpleStruct\">"));
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet wsdl = new HttpGet(uri("/services/greeter?wsdl"));
+            try (CloseableHttpResponse res = client.execute(wsdl)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                final String text = IOUtils.readStringFromStream(res.getEntity().getContent());
+                assertEquals("text/xml", getContentType(res));
+                assertTrue(text.contains(uri("/services/greeter?wsdl=test_import.xsd")));
+            }
+            
+            final HttpGet xsd = new HttpGet(uri("/services/greeter?wsdl=test_import.xsd"));
+            try (CloseableHttpResponse res = client.execute(xsd)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                final String text = IOUtils.readStringFromStream(res.getEntity().getContent());
+        
+                assertEquals("text/xml", getContentType(res));
+                assertTrue("the xsd should contain the completType SimpleStruct",
+                           text.contains("<complexType name=\"SimpleStruct\">"));
+            }
+        }
     }
 
-
     @Test
     public void testGetBinding() throws Exception {
-        Endpoint ep = Endpoint.create("http://schemas.xmlsoap.org/wsdl/soap/http", new HelloImpl());
-        assertTrue(ep.getBinding() instanceof SOAPBinding);
+        final Bus bus = BusFactory.getDefaultBus();
+        try {
+            BusFactory.setDefaultBus(null);
+            Endpoint ep = Endpoint.create("http://schemas.xmlsoap.org/wsdl/soap/http", new HelloImpl());
+            assertTrue(ep.getBinding() instanceof SOAPBinding);
+        } finally {
+            BusFactory.setDefaultBus(bus);
+        }
     }
 
     @WebService(name = "Hello", portName = "HelloPort",
@@ -334,4 +369,9 @@ public class CXFServletTest extends AbstractServletTest {
 
 
     }
-}
\ No newline at end of file
+
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
+    }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextSerletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextSerletTest.java
deleted file mode 100644
index 37402b1047..0000000000
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextSerletTest.java
+++ /dev/null
@@ -1,62 +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.systest.servlet;
-
-import com.meterware.servletunit.ServletRunner;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.fail;
-
-public class ErrorContextSerletTest extends AbstractServletTest {
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-spring-error.xml";
-    }
-
-    @Override
-    protected Bus createBus() throws BusException {
-        // don't set up the bus, let the servlet do it
-        return null;
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        // do nothing here
-
-    }
-
-    @Test
-    public void testInvoke() throws Exception {
-        try {
-            sr = new ServletRunner(getResourceAsStream(getConfiguration()), CONTEXT);
-            sr.newClient().getResponse(CONTEXT_URL + "/services");
-            // there expect a spring bean exception
-            fail("we expect a spring bean Exception here");
-        } catch (org.springframework.beans.FatalBeanException ex) {
-            // expected
-        }
-    }
-
-
-}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextServletTest.java
new file mode 100644
index 0000000000..d98f5c1bca
--- /dev/null
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ErrorContextServletTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.systest.servlet;
+
+
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class ErrorContextServletTest extends AbstractServletTest {
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-spring-error.xml", "/", CONTEXT, PORT);
+        }
+    }
+
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
+    }
+
+    @Test
+    public void testInvoke() throws Exception {
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/greeter?wsdl"));
+            // The Spring context contains errors, the service should not be available
+            try (CloseableHttpResponse res = client.execute(method)) {
+                assertEquals(503, res.getStatusLine().getStatusCode());
+            }
+        } 
+    }
+
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
+    }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
index e3afcea634..7f848b9bf8 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/ExternalServicesServletTest.java
@@ -20,21 +20,26 @@ package org.apache.cxf.systest.servlet;
 
 
 import java.nio.charset.StandardCharsets;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
 import org.w3c.dom.Document;
 
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebLink;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
-
+import org.apache.html.dom.HTMLAnchorElementImpl;
+import org.apache.html.dom.HTMLDocumentImpl;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -42,68 +47,76 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 public class ExternalServicesServletTest extends AbstractServletTest {
-    static final String FORCED_BASE_ADDRESS
-        = "http://localhost/somewhere";
-    @Override
-    protected Bus createBus() throws BusException {
-        return null;
+    private static final String FORCED_BASE_ADDRESS = "http://localhost/somewhere";
+
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-external.xml", "/", CONTEXT, PORT);
+        }
     }
 
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-external.xml";
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
     @Test
     public void testGetServiceList() throws Exception {
-
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        //test the '/' context get service list
-        WebResponse res = client.getResponse(CONTEXT_URL + "/");
-        WebLink[] links = res.getLinks();
-        assertEquals("Wrong number of service links", 6, links.length);
-
-        Set<String> links2 = new HashSet<>();
-        for (WebLink l : links) {
-            links2.add(l.getURLString());
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/"));
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                HTMLDocumentImpl doc = parse(res.getEntity().getContent());
+                Collection<HTMLAnchorElementImpl> links = getLinks(doc);
+                assertEquals("Wrong number of service links", 6, links.size());
+        
+                Set<String> links2 = new HashSet<>();
+                for (HTMLAnchorElementImpl l : links) {
+                    links2.add(l.getHref());
+                }
+                assertTrue(links2.contains(FORCED_BASE_ADDRESS + "/greeter?wsdl"));
+                assertTrue(links2.contains(FORCED_BASE_ADDRESS + "/greeter2?wsdl"));
+        
+                assertEquals("text/html", getContentType(res));
+            }
         }
-        assertTrue(links2.contains(FORCED_BASE_ADDRESS + "/greeter?wsdl"));
-        assertTrue(links2.contains(FORCED_BASE_ADDRESS + "/greeter2?wsdl"));
-
-        assertEquals("text/html", res.getContentType());
-
-        //HTTPUnit do not support require url with ""
-        /*
-        res = client.getResponse(CONTEXT_URL);
-        links = res.getLinks();
-        assertEquals("There should get two links for the services", 1, links.length);
-        assertEquals(CONTEXT_URL + "/greeter?wsdl", links[0].getURLString());
-        assertEquals(CONTEXT_URL + "/greeter2?wsdl", links[1].getURLString());
-        assertEquals("text/html", res.getContentType());*/
-
     }
 
     @Test
     public void testPostInvokeServices() throws Exception {
-        newClient();
-
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/greeter",
-                getClass().getResourceAsStream("GreeterMessage.xml"),
-                "text/xml; charset=UTF-8");
-
-        WebResponse response = newClient().getResponse(req);
-
-        assertEquals("text/xml", response.getContentType());
-        assertEquals(StandardCharsets.UTF_8.name(), response.getCharacterSet());
-
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        try (CloseableHttpClient client = newClient()) {
+            final HttpPost method = new HttpPost(uri("/greeter"));
+
+            method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+                ContentType.create("text/xml", StandardCharsets.UTF_8)));
+
+            try (CloseableHttpResponse response = client.execute(method)) {
+                assertEquals("text/xml", getContentType(response));
+                assertEquals(StandardCharsets.UTF_8.name(), getCharset(response));
+        
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+            }
+        }
+    }
 
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
     }
-}
\ No newline at end of file
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/GetMethodQueryWebRequest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/GetMethodQueryWebRequest.java
deleted file mode 100644
index dc54536597..0000000000
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/GetMethodQueryWebRequest.java
+++ /dev/null
@@ -1,42 +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.systest.servlet;
-
-import com.meterware.httpunit.GetMethodWebRequest;
-
-//Customer WebRequest for sending the "http://localhost/xxx?wsdl" request
-public class GetMethodQueryWebRequest extends GetMethodWebRequest {
-    private String urlString;
-
-    public GetMethodQueryWebRequest(String urlStr) {
-        super(urlStr);
-        urlString = urlStr;
-    }
-
-    public String getQueryString() {
-        int pos = urlString.indexOf('?');
-        if (pos > 0) {
-            return urlString.substring(pos + 1);
-        }
-        return "";
-    }
-
-
-
-}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JaxRsServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JaxRsServletTest.java
deleted file mode 100644
index df0dbbe66f..0000000000
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JaxRsServletTest.java
+++ /dev/null
@@ -1,78 +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.systest.servlet;
-
-import java.io.InputStream;
-
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
-import org.apache.cxf.helpers.IOUtils;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-
-
-
-public class JaxRsServletTest extends AbstractServletTest {
-
-
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-jaxrs.xml";
-    }
-
-    @Override
-    protected Bus createBus() throws BusException {
-        // don't set up the bus, let the servlet do it
-        return null;
-    }
-
-    @org.junit.Ignore // this doesn't work yet
-    @Test
-    public void testGetThatBook123() throws Exception {
-        testInvokingBookService("/jaxrs/bookstorestorage/thosebooks/123");
-    }
-
-    private void testInvokingBookService(String serviceAddress) throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(false);
-
-        WebRequest req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + serviceAddress);
-
-        WebResponse response = client.getResponse(req);
-        InputStream in = response.getInputStream();
-        InputStream expected = JaxRsServletTest.class
-            .getResourceAsStream("resources/expected_get_book123.txt");
-
-        assertEquals(" Can't get the expected result ",
-                     getStringFromInputStream(expected),
-                     getStringFromInputStream(in));
-
-    }
-
-    private String getStringFromInputStream(InputStream in) throws Exception {
-        return IOUtils.toString(in);
-    }
-}
\ No newline at end of file
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JsFrontEndServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JsFrontEndServletTest.java
index 1df48422a6..9212e13869 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JsFrontEndServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/JsFrontEndServletTest.java
@@ -18,47 +18,76 @@
  */
 package org.apache.cxf.systest.servlet;
 
-import org.w3c.dom.Document;
+import java.nio.charset.StandardCharsets;
 
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
+import org.w3c.dom.Document;
 
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
-
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 public class JsFrontEndServletTest extends AbstractServletTest {
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
 
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-js.xml";
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-js.xml", "/", CONTEXT, PORT);
+        }
     }
 
-    @Test
-    public void testPostInvokeServices() throws Exception {
-
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/services/Greeter",
-                getClass().getResourceAsStream("GreeterMessage.xml"),
-                "text/xml; charset=UTF-8");
-
-        WebResponse response = newClient().getResponse(req);
-
-        assertEquals("text/xml", response.getContentType());
-        //assertEquals(StandardCharsets.UTF_8, response.getCharacterSet());
-
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
-
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
-        assertValid("//h:responseType", doc);
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
+    }
 
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
+    @Test
+    public void testPostInvokeServices() throws Exception {
+        try (CloseableHttpClient client = newClient()) {
+            final HttpPost method = new HttpPost(uri("/services/Greeter"));
+
+            method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+                ContentType.create("text/xml", StandardCharsets.UTF_8)));
+
+            try (CloseableHttpResponse response = client.execute(method)) {
+        
+                assertEquals("text/xml", getContentType(response));
+                assertEquals(StandardCharsets.UTF_8.name(), getCharset(response));
+        
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+        
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+                assertValid("//h:responseType", doc);
+            }
+        }
+    }
 
-}
\ No newline at end of file
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
+    }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletClientTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletClientTest.java
index 507fda5d2d..f793358734 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletClientTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/NoSpringServletClientTest.java
@@ -20,23 +20,25 @@ package org.apache.cxf.systest.servlet;
 
 import java.lang.reflect.UndeclaredThrowableException;
 import java.net.URL;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import javax.xml.namespace.QName;
 
-import com.meterware.httpunit.WebConversation;
-import com.meterware.httpunit.WebLink;
-import com.meterware.httpunit.WebResponse;
-
 import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.endpoint.ServerRegistry;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
-import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.hello_world_soap_http.Greeter;
 import org.apache.hello_world_soap_http.SOAPService;
+import org.apache.html.dom.HTMLAnchorElementImpl;
+import org.apache.html.dom.HTMLDocumentImpl;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
 
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -47,12 +49,13 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-public class NoSpringServletClientTest extends AbstractBusClientServerTestBase {
+public class NoSpringServletClientTest extends AbstractServletTest {
     private static final String PORT = NoSpringServletServer.PORT;
     private static Bus serverBus;
     private static NoSpringServletServer server;
     private final QName portName = new QName("http://apache.org/hello_world_soap_http", "SoapPort");
     private final String serviceURL = "http://localhost:" + PORT + "/soap/";
+    
     @BeforeClass
     public static void startServers() throws Exception {
         server = new NoSpringServletServer();
@@ -129,17 +132,28 @@ public class NoSpringServletClientTest extends AbstractBusClientServerTestBase {
 
     @Test
     public void testGetServiceList() throws Exception {
-        WebConversation client = new WebConversation();
-        WebResponse res = client.getResponse(serviceURL + "/services");
-        WebLink[] links = res.getLinks();
-        Set<String> s = new HashSet<>();
-        for (WebLink l : links) {
-            s.add(l.getURLString());
+        try (CloseableHttpClient client = HttpClients.createDefault()) {
+            final HttpGet method = new HttpGet(serviceURL + "/services");
+
+            try (CloseableHttpResponse res = client.execute(method)) {
+                HTMLDocumentImpl doc = parse(res.getEntity().getContent());
+                Collection<HTMLAnchorElementImpl> links = getLinks(doc);
+
+                Set<String> s = new HashSet<>();
+                for (HTMLAnchorElementImpl l : links) {
+                    s.add(l.getHref());
+                }
+                assertEquals("There should be 3 links for the service", 3, links.size());
+                assertTrue(s.contains(serviceURL + "Greeter?wsdl"));
+                assertTrue(s.contains(serviceURL + "Hello?wsdl"));
+                assertTrue(s.contains(serviceURL + "?wsdl"));
+                assertEquals("text/html", getContentType(res));
+            }
         }
-        assertEquals("There should be 3 links for the service", 3, links.length);
-        assertTrue(s.contains(serviceURL + "Greeter?wsdl"));
-        assertTrue(s.contains(serviceURL + "Hello?wsdl"));
-        assertTrue(s.contains(serviceURL + "?wsdl"));
-        assertEquals("text/html", res.getContentType());
+    }
+    
+    @Override
+    protected int getPort() {
+        return Integer.parseInt(NoSpringServletServer.PORT);
     }
 }
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringAutoPublishServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringAutoPublishServletTest.java
index 81403607c6..8209ab6c3b 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringAutoPublishServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringAutoPublishServletTest.java
@@ -18,17 +18,23 @@
  */
 package org.apache.cxf.systest.servlet;
 
-import org.w3c.dom.Document;
+import java.nio.charset.StandardCharsets;
 
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
+import org.w3c.dom.Document;
 
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
-
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -36,78 +42,93 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 public class SpringAutoPublishServletTest extends AbstractServletTest {
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-spring-auto-launch.xml";
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-spring-auto-launch.xml", "/", CONTEXT, PORT);
+        }
     }
 
-    @Override
-    protected Bus createBus() throws BusException {
-        // don't set up the bus, let the servlet do it
-        return null;
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
     @Test
     public void testInvokingSpringBeans() throws Exception {
+        final HttpPost method = new HttpPost(uri("/services/SOAPService"));
 
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/services/SOAPService",
-            getClass().getResourceAsStream("GreeterMessage.xml"),
-            "text/xml; charset=utf-8");
+        method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+            ContentType.create("text/xml", StandardCharsets.UTF_8)));
 
-        invokingEndpoint(req);
+        invokingEndpoint(method);
 
-        req = new PostMethodWebRequest(CONTEXT_URL + "/services/DerivedGreeterService",
-            getClass().getResourceAsStream("GreeterMessage.xml"), "text/xml; charset=utf-8");
+        final HttpPost method2 =  new HttpPost(uri("/services/DerivedGreeterService"));
 
-        invokingEndpoint(req);
+        method2.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+            ContentType.create("text/xml", StandardCharsets.UTF_8)));
+        
+        invokingEndpoint(method2);
     }
 
-    public void invokingEndpoint(WebRequest req) throws Exception {
-
-        WebResponse response = newClient().getResponse(req);
-        assertEquals("text/xml", response.getContentType());
-        assertTrue("utf-8".equalsIgnoreCase(response.getCharacterSet()));
-
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
+    public void invokingEndpoint(HttpUriRequest method) throws Exception {
+        try (CloseableHttpClient client = newClient()) {
+            try (CloseableHttpResponse response = client.execute(method)) {
+                assertEquals("text/xml", getContentType(response));
+                assertTrue("utf-8".equalsIgnoreCase(getCharset(response)));
+        
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+            }
+        }
     }
 
-
     @Test
     public void testGetWSDL() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/SOAPService?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address[@location='" + CONTEXT_URL + "/services/SOAPService']", doc);
-
-        req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/DerivedGreeterService?wsdl");
-        res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address"
-                    + "[@location='http://localhost/mycontext/services/DerivedGreeterService']",
-                    doc);
-
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet greeter = new HttpGet(uri("/services/SOAPService?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+            
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+            
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address[@location='" + uri("/services/SOAPService") + "']", doc);
+            }
+
+            final HttpGet derived = new HttpGet(uri("/services/DerivedGreeterService?wsdl"));
+            try (CloseableHttpResponse res = client.execute(derived)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+        
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address"
+                            + "[@location='" + uri("/services/DerivedGreeterService") + "']",
+                            doc);
+            }
+        }
+    }
+    
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
     }
-}
\ No newline at end of file
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletContextTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletContextTest.java
index 720a407383..47473bd41e 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletContextTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletContextTest.java
@@ -23,27 +23,39 @@ import java.util.Arrays;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
 import org.apache.cxf.bus.spring.SpringBus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.DependsOn;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 public class SpringServletContextTest extends AbstractServletTest {
+
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-spring-context.xml", "/", CONTEXT, PORT);
+        }
+    }
+
     @Configuration
     public static class AppConfig {
         @Bean(destroyMethod = "shutdown")
@@ -77,26 +89,33 @@ public class SpringServletContextTest extends AbstractServletTest {
         }
     }
     
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-spring-context.xml";
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+        createStaticBus();
     }
 
-    @Override
-    protected Bus createBus() throws BusException {
-        // don't set up the bus, let the servlet do it
-        return null;
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
     @Test
     public void testContextRefresh() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        for (int i = 0; i < 5; ++i) {
-            final WebRequest request = new GetMethodQueryWebRequest(CONTEXT_URL + "/services/context/refresh");
-            final WebResponse response = client.getResponse(request);
-            assertThat(response.getResponseCode(), equalTo(204));
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet method = new HttpGet(uri("/services/context/refresh"));
+            
+            for (int i = 0; i < 5; ++i) {
+                try (CloseableHttpResponse response = client.execute(method)) {
+                    assertThat(response.getStatusLine().getStatusCode(), equalTo(204));
+                }
+            }
         }
     }
-}
\ No newline at end of file
+    
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
+    }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletTest.java
index 02dcd9dd51..440d0ed872 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/servlet/SpringServletTest.java
@@ -18,126 +18,141 @@
  */
 package org.apache.cxf.systest.servlet;
 
+import java.nio.charset.StandardCharsets;
+
 import javax.xml.ws.Endpoint;
 
 import org.w3c.dom.Document;
 
-import com.meterware.httpunit.HttpNotFoundException;
-import com.meterware.httpunit.PostMethodWebRequest;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.ServletUnitClient;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusException;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.staxutils.StaxUtils;
-
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.InputStreamEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 public class SpringServletTest extends AbstractServletTest {
-    @Override
-    protected String getConfiguration() {
-        return "/org/apache/cxf/systest/servlet/web-spring.xml";
+    @Ignore
+    public static class EmbeddedJettyServer extends AbstractJettyServer {
+        public static final int PORT = allocatePortAsInt(EmbeddedJettyServer.class);
+
+        public EmbeddedJettyServer() {
+            super("/org/apache/cxf/systest/servlet/web-spring.xml", "/", CONTEXT, PORT);
+        }
     }
 
-    @Override
-    protected Bus createBus() throws BusException {
-        // don't set up the bus, let the servlet do it
-        return null;
+    @BeforeClass
+    public static void startServers() throws Exception {
+        AbstractResourceInfo.clearAllMaps();
+        assertTrue("server did not launch correctly", launchServer(EmbeddedJettyServer.class, true));
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        stopAllServers();
     }
 
     @Test
     public void testInvokingSpringBeans() throws Exception {
+        final HttpPost method = new HttpPost(uri("/services/Greeter"));
 
-        WebRequest req = new PostMethodWebRequest(CONTEXT_URL + "/services/Greeter",
-            getClass().getResourceAsStream("GreeterMessage.xml"),
-            "text/xml; charset=utf-8");
-
-        invokingEndpoint(req);
+        method.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+            ContentType.create("text/xml", StandardCharsets.UTF_8)));
 
-        req = new PostMethodWebRequest(CONTEXT_URL + "/services/Greeter1",
-            getClass().getResourceAsStream("GreeterMessage.xml"), "text/xml; charset=utf-8");
-
-        invokingEndpoint(req);
-    }
+        invokingEndpoint(method);
 
-    public void invokingEndpoint(WebRequest req) throws Exception {
+        final HttpPost method2 = new HttpPost(uri("/services/Greeter1"));
 
-        WebResponse response = newClient().getResponse(req);
-        assertEquals("text/xml", response.getContentType());
-        assertTrue("utf-8".equalsIgnoreCase(response.getCharacterSet()));
+        method2.setEntity(new InputStreamEntity(getClass().getResourceAsStream("GreeterMessage.xml"),
+            ContentType.create("text/xml", StandardCharsets.UTF_8)));
 
-        Document doc = StaxUtils.read(response.getInputStream());
-        assertNotNull(doc);
-
-        addNamespace("h", "http://apache.org/hello_world_soap_http/types");
-        assertValid("/s:Envelope/s:Body", doc);
-        assertValid("//h:sayHiResponse", doc);
+        invokingEndpoint(method2);
     }
 
+    public void invokingEndpoint(HttpUriRequest method) throws Exception {
+        try (CloseableHttpClient client = newClient()) {
+            try (CloseableHttpResponse response = client.execute(method)) {
+                assertEquals("text/xml", getContentType(response));
+                assertTrue("utf-8".equalsIgnoreCase(getCharset(response)));
+        
+                Document doc = StaxUtils.read(response.getEntity().getContent());
+                assertNotNull(doc);
+        
+                addNamespace("h", "http://apache.org/hello_world_soap_http/types");
+                assertValid("/s:Envelope/s:Body", doc);
+                assertValid("//h:sayHiResponse", doc);
+            }
+        }
+    }
 
     @Test
     public void testGetWSDL() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/Greeter?wsdl");
-
-        WebResponse res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        Document doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address[@location='" + CONTEXT_URL + "/services/Greeter']", doc);
-
-        req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/Greeter2?wsdl");
-        res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address[@location='http://cxf.apache.org/Greeter']", doc);
-
-        Endpoint.publish("/services/Greeter3", new org.apache.hello_world_soap_http.GreeterImpl());
-        req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/Greeter3?wsdl");
-        res = client.getResponse(req);
-        assertEquals(200, res.getResponseCode());
-        assertEquals("text/xml", res.getContentType());
-
-        doc = StaxUtils.read(res.getInputStream());
-        assertNotNull(doc);
-
-        assertValid("//wsdl:operation[@name='greetMe']", doc);
-        assertValid("//wsdlsoap:address[@location='" + CONTEXT_URL + "/services/Greeter3']", doc);
-
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet greeter = new HttpGet(uri("/services/Greeter?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+        
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address[@location='" + uri("/services/Greeter") + "']", doc);
+            }
+            
+            final HttpGet greeter2 = new HttpGet(uri("/services/Greeter2?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter2)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+        
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address[@location='http://cxf.apache.org/Greeter']", doc);
+        
+                Endpoint.publish("/services/Greeter3", new org.apache.hello_world_soap_http.GreeterImpl());
+            }
+            
+            final HttpGet greeter3 = new HttpGet(uri("/services/Greeter3?wsdl"));
+            try (CloseableHttpResponse res = client.execute(greeter3)) {
+                assertEquals(200, res.getStatusLine().getStatusCode());
+                assertEquals("text/xml", getContentType(res));
+        
+                Document doc = StaxUtils.read(res.getEntity().getContent());
+                assertNotNull(doc);
+        
+                assertValid("//wsdl:operation[@name='greetMe']", doc);
+                assertValid("//wsdlsoap:address[@location='" + uri("/services/Greeter3") + "']", doc);
+            }
+        }
     }
 
     @Test
     public void testIgnoreServiceList() throws Exception {
-        ServletUnitClient client = newClient();
-        client.setExceptionsThrownOnErrorStatus(true);
-
-        WebRequest req =
-            new GetMethodQueryWebRequest(CONTEXT_URL + "/services/");
-        try {
-            client.getResponse(req);
-            fail();
-        } catch (HttpNotFoundException ex) {
-            // expected
+        try (CloseableHttpClient client = newClient()) {
+            final HttpGet greeter = new HttpGet(uri("/services"));
+            
+            try (CloseableHttpResponse res = client.execute(greeter)) {
+                assertEquals(404, res.getStatusLine().getStatusCode());
+            }
         }
     }
-}
\ No newline at end of file
+    
+    @Override
+    protected int getPort() {
+        return EmbeddedJettyServer.PORT;
+    }
+}


[cxf] 02/02: Recording .gitmergeinfo Changes

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.5.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 583399f6d9e03c10dbdfb9de2d40e204224b26f0
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Mon Aug 1 15:19:36 2022 -0400

    Recording .gitmergeinfo Changes
---
 .gitmergeinfo | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitmergeinfo b/.gitmergeinfo
index 3672b63744..31b069a72e 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -44,6 +44,7 @@ M 2fda4dd66aba6ac290b9f3773e423c2bc5c61dcb
 M 309cfbf5710dab302eb4a611ac34dc288d1d8203
 M 310f93d91a00f4ab6297af2f574a0bfeda3e94f0
 M 38a09d0b606f5dc0aa3a477791af76fd6f1c0cb6
+M 3d71fe88f5d9649f3b770598b5b170cb6bc8871f
 M 51a65beda38602ff008c032aa406208df8648422
 M 5566cc4600827e08fda454c5644b9ec81251fbba
 M 5b9788a6dd477113da850f5eea48cde9064eac01