Upgrades integration tests config to match Spring and Jetty
diff --git a/apps/showcase/pom.xml b/apps/showcase/pom.xml
index c2136fe..a1933bc 100644
--- a/apps/showcase/pom.xml
+++ b/apps/showcase/pom.xml
@@ -144,7 +144,7 @@
        <dependency>
             <groupId>net.sourceforge.htmlunit</groupId>
             <artifactId>htmlunit</artifactId>
-            <version>2.39.0</version>
+            <version>2.61.0</version>
             <scope>test</scope>
         </dependency>
 
@@ -162,7 +162,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>3.0.0-M4</version>
+                <version>3.0.0-M6</version>
                 <configuration>
                     <includes>
                         <include>it.org.apache.struts2.showcase.*Test</include>
@@ -193,7 +193,7 @@
                     <systemProperties>
                         <systemProperty>
                             <name>log4j.configuration</name>
-                            <value>file:${basedir}/src/main/resources/log4j.properties</value>
+                            <value>file:${basedir}/src/main/resources/log4j2.xml</value>
                         </systemProperty>
                         <systemProperty>
                             <name>slf4j</name>
@@ -214,11 +214,8 @@
                         <goals>
                             <!-- stop any previous instance to free up the port -->
                             <goal>stop</goal>
-                            <goal>run-forked</goal>
+                            <goal>start</goal>
                         </goals>
-                        <configuration>
-                            <waitForChild>false</waitForChild>
-                        </configuration>
                     </execution>
                     <execution>
                         <id>stop-jetty</id>
diff --git a/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml b/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
index f5c1541..ef700ef 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/applicationContext.xml
@@ -45,66 +45,46 @@
     </bean>
 
     <bean id="chatLoginAction" class="org.apache.struts2.showcase.chat.ChatLoginAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="chatLogoutAction" class="org.apache.struts2.showcase.chat.ChatLogoutAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="usersAvailableAction" class="org.apache.struts2.showcase.chat.UsersAvailableAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="roomsAvailableAction" class="org.apache.struts2.showcase.chat.RoomsAvailableAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="crudRoomAction" class="org.apache.struts2.showcase.chat.CrudRoomAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="enterRoomAction" class="org.apache.struts2.showcase.chat.EnterRoomAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="messagesAvailableInRoomAction" class="org.apache.struts2.showcase.chat.MessagesAvailableInRoomAction"
           scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="sendMessageToRoomAction" class="org.apache.struts2.showcase.chat.SendMessageToRoomAction"
           scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="usersAvailableInRoomAction" class="org.apache.struts2.showcase.chat.UsersAvailableInRoomAction"
           scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
     <bean id="exitRoomAction" class="org.apache.struts2.showcase.chat.ExitRoomAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="chatService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="chatService"/>
     </bean>
 
 
@@ -129,9 +109,7 @@
     </bean>
 
     <bean id="startHangmanAction" class="org.apache.struts2.showcase.hangman.StartHangmanAction" scope="prototype">
-        <constructor-arg index="0">
-            <ref local="hangmanService"/>
-        </constructor-arg>
+        <constructor-arg index="0" ref="hangmanService"/>
     </bean>
 
     <bean id="guessCharacterAction" class="org.apache.struts2.showcase.hangman.GuessCharacterAction" scope="prototype"/>
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionChainingTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionChainingTest.java
index 4889193..dd519c5 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionChainingTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionChainingTest.java
@@ -32,7 +32,7 @@
         try (final WebClient webClient = new WebClient()) {
             final HtmlPage page = webClient.getPage(ParameterUtils.getBaseUrl() + "/actionchaining/actionChain1!input");
 
-            final String pageAsText = page.asText();
+            final String pageAsText = page.asNormalizedText();
             Assert.assertTrue(pageAsText.contains("Action Chain 1 Property 1: Property Set In Action Chain 1"));
             Assert.assertTrue(pageAsText.contains("Action Chain 2 Property 1: Property Set in Action Chain 2"));
             Assert.assertTrue(pageAsText.contains("Action Chain 3 Property 1: Property set in Action Chain 3"));
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionTagExampleTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionTagExampleTest.java
index c2d2601..1229e7e 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionTagExampleTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ActionTagExampleTest.java
@@ -32,7 +32,7 @@
         try (final WebClient webClient = new WebClient()) {
             final HtmlPage page = webClient.getPage(ParameterUtils.getBaseUrl() + "/tags/ui/actionTagExample!input.action");
 
-            final String pageAsText = page.asText();
+            final String pageAsText = page.asNormalizedText();
             Assert.assertTrue(pageAsText.contains("This text is from the called class"));
         }
     }
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/AsyncTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/AsyncTest.java
index d23064e..4da639a 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/AsyncTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/AsyncTest.java
@@ -46,7 +46,7 @@
 
             final DomElement msgs = page2.getElementById("msgs");
 
-            Assert.assertEquals("hello", msgs.asText());
+            Assert.assertEquals("hello", msgs.asNormalizedText());
         }
     }
 }
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/CRUDTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/CRUDTest.java
index 37f185e..72a7a5e 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/CRUDTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/CRUDTest.java
@@ -44,7 +44,7 @@
 
             final HtmlSubmitInput button = form.getInputByValue("Save");
             final HtmlPage page2 = button.click();
-            final String page2Text = page2.asText();
+            final String page2Text = page2.asNormalizedText();
 
             Assert.assertTrue(page2Text.contains("somename1"));
             Assert.assertTrue(page2Text.contains("somedescription1"));
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ComponentTagExampleTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ComponentTagExampleTest.java
index d318824..4519ac6 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ComponentTagExampleTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ComponentTagExampleTest.java
@@ -33,7 +33,7 @@
             final HtmlPage page = webClient
                     .getPage(ParameterUtils.getBaseUrl() + "/tags/ui/componentTagExample.action");
 
-            final String pageAsText = page.asText();
+            final String pageAsText = page.asNormalizedText();
             Assert.assertTrue(pageAsText.contains("Freemarker Custom Template - parameter 'paramName' - paramValue1"));
             Assert.assertTrue(pageAsText.contains("Freemarker Custom Template - parameter 'paramName' - paramValue4"));
             Assert.assertTrue(pageAsText.contains("JSP Custom Template - parameter 'paramName' - paramValue2"));
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ConversionTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ConversionTest.java
index ff6b0bd..b780504 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ConversionTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ConversionTest.java
@@ -46,7 +46,7 @@
 
             final HtmlSubmitInput button = form.getInputByValue("Submit");
             final HtmlPage page2 = button.click();
-            final String page2Text = page2.asText();
+            final String page2Text = page2.asNormalizedText();
 
             Assert.assertTrue(page2Text.contains("SET 0 Name: name0"));
             Assert.assertTrue(page2Text.contains("SET 0 Age: 0"));
@@ -71,7 +71,7 @@
 
             final HtmlSubmitInput button = form.getInputByValue("Submit");
             final HtmlPage page2 = button.click();
-            final String page2Text = page2.asText();
+            final String page2Text = page2.asNormalizedText();
 
             Assert.assertTrue(page2Text.contains("id0 -> address0"));
             Assert.assertTrue(page2Text.contains("id1 -> address1"));
@@ -92,7 +92,7 @@
 
             final HtmlSubmitInput button = form.getInputByValue("Submit");
             final HtmlPage page2 = button.click();
-            final String page2Text = page2.asText();
+            final String page2Text = page2.asNormalizedText();
 
             Assert.assertTrue(page2Text.contains("ADD"));
             Assert.assertTrue(page2Text.contains("MINUS"));
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ExecAndWaitTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ExecAndWaitTest.java
index 445b340..16628a9 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ExecAndWaitTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ExecAndWaitTest.java
@@ -43,12 +43,12 @@
             final HtmlSubmitInput button = form.getInputByValue("submit");
             final HtmlPage page2 = button.click();
 
-            Assert.assertTrue(page2.asText().contains("We are processing your request. Please wait."));
+            Assert.assertTrue(page2.asNormalizedText().contains("We are processing your request. Please wait."));
 
             // hit it again
             final HtmlPage page3 = webClient
                     .getPage(ParameterUtils.getBaseUrl() + "/wait/longProcess1.action?time=1000");
-            Assert.assertTrue(page3.asText().contains("We are processing your request. Please wait."));
+            Assert.assertTrue(page3.asNormalizedText().contains("We are processing your request. Please wait."));
         }
     }
 }
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileDownloadTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileDownloadTest.java
index 333bf42..b4956e3 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileDownloadTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FileDownloadTest.java
@@ -43,6 +43,7 @@
         }
     }
 
+    @Test
     public void testZip() throws Exception {
         try (final WebClient webClient = new WebClient()) {
             final Page page = webClient.getPage(ParameterUtils.getBaseUrl() + "/filedownload/download2.action");
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FreeMarkerManagerTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FreeMarkerManagerTest.java
index 61c0ddd..fb2a23a 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FreeMarkerManagerTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/FreeMarkerManagerTest.java
@@ -36,11 +36,11 @@
 
             final DomElement date = page.getElementById("todaysDate");
             Assert.assertNotNull(date);
-            Assert.assertTrue(date.asText().length() > 0);
+            Assert.assertTrue(date.asNormalizedText().length() > 0);
 
             final DomElement time = page.getElementById("timeNow");
             Assert.assertNotNull(time);
-            Assert.assertTrue(time.asText().length() > 0);
+            Assert.assertTrue(time.asNormalizedText().length() > 0);
         }
     }
 
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/StaticContentTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/StaticContentTest.java
index 06057f9..db87bf7 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/StaticContentTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/StaticContentTest.java
@@ -33,26 +33,23 @@
                 webClient.getPage(ParameterUtils.getBaseUrl() + "/struts..");
                 Assert.fail("Previous request should have failed");
             } catch (FailingHttpStatusCodeException e) {
+                Assert.assertEquals("Not Found", e.getStatusMessage());
+                Assert.assertEquals(404, e.getStatusCode());
             }
         }
     }
 
+    @Test
     public void testInvalidRersources2() throws Exception {
         try (final WebClient webClient = new WebClient()) {
             try {
                 webClient.getPage(ParameterUtils.getBaseUrl() + "/static/..%252f");
                 Assert.fail("Previous request should have failed");
             } catch (FailingHttpStatusCodeException e) {
+                Assert.assertEquals("Not Found", e.getStatusMessage());
+                Assert.assertEquals(404, e.getStatusCode());
             }
         }
     }
 
-    /*public void testInvalidRersources3() throws IOException {
-        try {
-            beginAt("/static/..%252f..%252f..%252fWEB-INF/classes/org/apache/struts2/showcase/action/EmployeeAction.class/");
-            fail("Previous request should have failed");
-        } catch (TestingEngineResponseException ex) {
-            // ok
-        }
-    }*/
 }
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/UITagExampleTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/UITagExampleTest.java
index 03bf74e..9468f85 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/UITagExampleTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/UITagExampleTest.java
@@ -65,11 +65,11 @@
             final HtmlSubmitInput button = form.getInputByValue("Submit");
             final HtmlPage page2 = button.click();
 
-            Assert.assertEquals("name", page2.getElementById("name").asText());
-            Assert.assertEquals("bio", page2.getElementById("bio").asText());
-            Assert.assertEquals("Red", page2.getElementById("favouriteColor").asText());
-            Assert.assertEquals("[Patrick, Jason]", page2.getElementById("friends").asText());
-            Assert.assertEquals("true", page2.getElementById("legalAge").asText());
+            Assert.assertEquals("name", page2.getElementById("name").asNormalizedText());
+            Assert.assertEquals("bio", page2.getElementById("bio").asNormalizedText());
+            Assert.assertEquals("Red", page2.getElementById("favouriteColor").asNormalizedText());
+            Assert.assertEquals("[Patrick, Jason]", page2.getElementById("friends").asNormalizedText());
+            Assert.assertEquals("true", page2.getElementById("legalAge").asNormalizedText());
         }
     }
 }
diff --git a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ValidationTest.java b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ValidationTest.java
index 3e7940a..0bc8383 100644
--- a/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ValidationTest.java
+++ b/apps/showcase/src/test/java/it/org/apache/struts2/showcase/ValidationTest.java
@@ -47,7 +47,7 @@
 
             final HtmlSubmitInput button = form.getInputByValue("Submit");
             final HtmlPage page2 = button.click();
-            final String page2Text = page2.asText();
+            final String page2Text = page2.asNormalizedText();
 
             Assert.assertTrue(page2Text.contains("Invalid field value for field \"dateValidatorField\""));
             Assert.assertTrue(page2Text.contains("Invalid field value for field \"integerValidatorField\""));