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

robertlazarski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 3006bdaf73 update spring boot demo code for jakarta and Wildfly 32
3006bdaf73 is described below

commit 3006bdaf732920780d46e7a6ccb7aa41c4db8df6
Author: Robert Lazarski <robertlazar...@gmail.com>
AuthorDate: Thu Aug 1 20:47:46 2024 -1000

    update spring boot demo code for jakarta and Wildfly 32
---
 .../userguide/src/userguide/springbootdemo/pom.xml | 123 ++++++++++++---------
 .../springbootdemo/resources-axis2/conf/axis2.xml  |   9 ++
 .../userguide/springboot/Axis2Application.java     |  51 ++++-----
 .../configuration/Axis2WebAppInitializer.java      |   4 +-
 .../security/webservices/BadRequestMatcher.java    |   4 +-
 .../webservices/HTTPPostOnlyRejectionFilter.java   |   8 +-
 .../webservices/JWTAuthenticationFilter.java       |   8 +-
 .../JWTAuthenticationSuccessHandler.java           |   4 +-
 .../RequestAndResponseValidatorFilter.java         |  37 +++----
 .../webservices/RestAuthenticationEntryPoint.java  |   4 +-
 .../security/webservices/WSLoginFilter.java        |  12 +-
 .../webservices/secure/LoginService.java           |   2 +-
 .../main/resources/esapi-java-logging.properties   |   6 -
 .../webapp/WEB-INF/jboss-deployment-structure.xml  |  11 +-
 .../apache/axis2/transport/http/AxisServlet.java   |   2 +-
 src/site/xdoc/docs/json-springboot-userguide.xml   |   5 +-
 16 files changed, 157 insertions(+), 133 deletions(-)

diff --git a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml 
b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
index 8b8a5238f6..00027132ad 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
@@ -33,15 +33,15 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.0</version>
+        <version>3.3.2</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>1.8</java.version>
-        <spring-boot.version>2.6.4</spring-boot.version>
+        <java.version>17</java.version>
+        <spring-boot.version>3.3.2</spring-boot.version>
     </properties>
 
     <dependencies>
@@ -61,27 +61,32 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.12.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
-            <version>1.6.7</version>
+            <version>3.15.0</version>
         </dependency>
         <dependency>
             <groupId>jakarta.activation</groupId>
             <artifactId>jakarta.activation-api</artifactId>
-            <version>1.2.1</version>
+            <version>2.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
+            <version>2.0.2</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jaxb</groupId>
             <artifactId>jaxb-runtime</artifactId>
-            <version>2.3.6</version>
+            <version>4.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-xjc</artifactId>
+            <version>4.0.3</version>
         </dependency>
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>2.3.3</version>
+            <version>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -90,7 +95,7 @@
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-jul</artifactId>
-            <version>2.17.2</version>
+            <version>2.23.1</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -129,17 +134,18 @@
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
-            <version>6.0.0</version>
+           <version>6.1.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
-            <version>2.7.0</version>
+            <version>3.3.2</version>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.11.0</version>
+            <version>2.16.0</version>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
@@ -157,10 +163,15 @@
             <version>1.7</version>
         </dependency>
         <!-- axis2 -->
+       <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-core</artifactId>
+            <version>2.0.0-M2</version>
+        </dependency>
         <dependency>
-            <groupId>commons-fileupload</groupId>
-            <artifactId>commons-fileupload</artifactId>
-            <version>1.5</version>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
+            <version>2.0.0-M2</version>
         </dependency>
         <dependency>
                 <groupId>org.apache.geronimo.specs</groupId>
@@ -175,52 +186,52 @@
        <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-kernel</artifactId>
-               <version>1.8.1</version>
+               <version>1.8.3-SNAPSHOT</version>
        </dependency>
        <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-http</artifactId>
-               <version>1.8.1</version>
+               <version>1.8.3-SNAPSHOT</version>
        </dependency>
        <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-transport-local</artifactId>
-               <version>1.8.1</version>
+               <version>1.8.3-SNAPSHOT</version>
        </dependency>
        <dependency>
                <groupId>org.apache.axis2</groupId>
                <artifactId>axis2-json</artifactId>
-               <version>1.8.1</version>
+               <version>1.8.3-SNAPSHOT</version>
        </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-ant-plugin</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-adb</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-java2wsdl</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-metadata</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-spring</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-jaxws</artifactId>
-           <version>1.8.1</version>
+           <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.neethi</groupId>
@@ -247,30 +258,35 @@
             <artifactId>stax2-api</artifactId>
             <version>4.2.1</version>
         </dependency>
-        <dependency>
-            <groupId>jaxen</groupId>
-            <artifactId>jaxen</artifactId>
-            <version>1.2.0</version>
-        </dependency>
         <dependency>
             <groupId>org.apache.woden</groupId>
             <artifactId>woden-core</artifactId>
             <version>1.0M10</version>
         </dependency>
-        <dependency>
+       <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-api</artifactId>
-            <version>1.4.0</version>
+            <artifactId>axiom-impl</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-dom</artifactId>
-            <version>1.4.0</version>
+            <version>2.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-impl</artifactId>
-            <version>1.4.0</version>
+            <artifactId>axiom-jakarta-activation</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-legacy-attachments</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-jakarta-jaxb</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>javax.ws.rs</groupId>
@@ -280,17 +296,18 @@
         <dependency>
             <groupId>org.owasp.esapi</groupId>
             <artifactId>esapi</artifactId>
-            <version>2.5.2.0</version>
+            <version>2.5.4.0</version>
+            <classifier>jakarta</classifier>
         </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-            <version>4.5.13</version>
+       <dependency>
+            <groupId>org.apache.httpcomponents.core5</groupId>
+            <artifactId>httpcore5</artifactId>
+            <version>5.3-beta1</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpcore</artifactId>
-            <version>4.4.15</version>
+            <groupId>org.apache.httpcomponents.client5</groupId>
+            <artifactId>httpclient5</artifactId>
+            <version>5.3.1</version>
         </dependency>
     </dependencies>
     <build>
@@ -298,7 +315,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
-                <version>3.3.0</version>
+                <version>3.7.1</version>
                 <executions>
                     <execution>
                         <id>unpack</id>
@@ -330,13 +347,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.8</version>
+                <version>3.1.0</version>
                 <executions>
                     <execution>
                         <id>install</id>
                         <phase>install</phase>
                         <configuration>
-                            <tasks>
+                            <target>
                                 <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/services/Login.aar">
                                     <metainf 
file="resources-axis2/login_resources/services.xml"/>
                                 </jar>
@@ -360,7 +377,7 @@
                                         <include name="axis2.xml"/>
                                     </fileset>
                                 </copy>
-                            </tasks>
+                            </target>
                         </configuration>
                         <goals>
                             <goal>run</goal>
@@ -371,7 +388,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>3.3.2</version>
+                <version>3.4.0</version>
                 <configuration>
                     <webResources>
                         <resource>
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/resources-axis2/conf/axis2.xml
 
b/modules/samples/userguide/src/userguide/springbootdemo/resources-axis2/conf/axis2.xml
index 201b2926ee..1d404bc543 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/resources-axis2/conf/axis2.xml
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/resources-axis2/conf/axis2.xml
@@ -25,6 +25,7 @@
     <parameter name="hotupdate">false</parameter>
     <parameter name="enableMTOM">false</parameter>
     <parameter name="enableSwA">false</parameter>
+    <parameter name="enableJSONOnly">true</parameter>
 
     <!--Uncomment if you want to enable file caching for attachments -->
     <!--parameter name="cacheAttachments">true</parameter>
@@ -435,6 +436,14 @@
     <phaseOrder type="InFlow">
         <!--  System predefined phases       -->
         <phase name="Transport">
+           <handler name="RequestURIBasedDispatcher"
+                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
+                <order phase="Transport"/>
+            </handler>
+            <handler name="SOAPActionBasedDispatcher"
+                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
+                <order phase="Transport"/>
+            </handler> 
             <handler name="JSONMessageHandler"
                      class="org.apache.axis2.json.moshi.JSONMessageHandler">
                 <order phase="Transport"/>
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/Axis2Application.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/Axis2Application.java
index 7aefd003f0..73cb30c642 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/Axis2Application.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/Axis2Application.java
@@ -19,10 +19,10 @@
  */
 package userguide.springboot;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.Filter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
 
 import java.io.PrintWriter;
 import java.io.IOException;
@@ -83,7 +83,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.filter.DelegatingFilterProxy;
 import 
org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import 
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.crypto.password.NoOpPasswordEncoder;
 
 import static org.springframework.http.HttpStatus.FORBIDDEN;
@@ -107,13 +106,10 @@ public class Axis2Application extends 
SpringBootServletInitializer {
     @EnableWebSecurity
     @Order(1)
     @PropertySource("classpath:application.properties")
-    public static class SecurityConfigurationTokenWebServices extends 
WebSecurityConfigurerAdapter {
+    public static class SecurityConfigurationTokenWebServices {
         private static final Logger logger = 
LogManager.getLogger(SecurityConfigurationTokenWebServices.class);
 
         public SecurityConfigurationTokenWebServices() {
-            super(true);
-            String logPrefix = "SecurityConfigurationTokenWebServices , ";
-            logger.debug(logPrefix + "inside constructor, defaults disabled 
via super(true) ...");
         }
 
         class AnonRequestMatcher implements RequestMatcher {
@@ -255,12 +251,6 @@ public class Axis2Application extends 
SpringBootServletInitializer {
             auth.authenticationProvider(jwtAuthenticationProvider);
         }
         
-        @Override
-        protected void configure(final HttpSecurity http) throws Exception {
-            String logPrefix = 
"StatelessSecurityContextRepository.configure(final HttpSecurity http) , ";
-            logger.debug(logPrefix + "inside Spring Boot filter config ...");
-        }
-        
         @Bean
         WSLoginFilter wsLoginFilter() throws Exception {
           final WSLoginFilter filter = new WSLoginFilter();
@@ -308,7 +298,10 @@ public class Axis2Application extends 
SpringBootServletInitializer {
         public GenericAccessDecisionManager genericAccessDecisionManager() {
             return new GenericAccessDecisionManager();
         }
-    
+   
+       // Note: This nethod is invoked only on token validation after a 
successful login 
+        // See 
https://docs.spring.io/spring-security/reference/servlet/authorization/authorize-http-requests.html
+       // AuthorizationFilter supersedes FilterSecurityInterceptor. To remain 
backward compatible, FilterSecurityInterceptor remains the default.
         public FilterSecurityInterceptor filterSecurityInterceptor() throws 
Exception {
             final FilterSecurityInterceptor filterSecurityInterceptor = new 
FilterSecurityInterceptor();
             
filterSecurityInterceptor.setAuthenticationManager(authenticationManager());
@@ -348,22 +341,28 @@ public class Axis2Application extends 
SpringBootServletInitializer {
             return headerFilter;
         }
       
-        @Bean(name = "springSecurityFilterChain")
-        public FilterChainProxy springSecurityFilterChain() throws 
ServletException, Exception {
+        // these two chains are a binary choice. 
+        // A login url will match, otherwise invoke jwtAuthenticationFilter
+
+        @Bean(name = "springSecurityFilterChainLogin")
+       @Order(1)
+        public SecurityFilterChain springSecurityFilterChainLogin() throws 
ServletException, Exception {
             String logPrefix = 
"GenericAccessDecisionManager.springSecurityFilterChain , ";
             logger.debug(logPrefix + "inside main filter config ...");
 
-            final List<SecurityFilterChain> listOfFilterChains = new 
ArrayList<SecurityFilterChain>();
+            SecurityFilterChain securityFilterChain1 = new 
DefaultSecurityFilterChain(new AnonRequestMatcher(), headerWriterFilter(), 
httpPostOnlyRejectionFilter(), requestAndResponseValidatorFilter(), 
wsLoginFilter(), sessionManagementFilter());
 
-           // these two chains are a binary choice. 
-           // A login url will match, otherwise invoke jwtAuthenticationFilter
-            listOfFilterChains.add(new DefaultSecurityFilterChain(new 
AnonRequestMatcher(), headerWriterFilter(), httpPostOnlyRejectionFilter(), 
requestAndResponseValidatorFilter(), wsLoginFilter(), 
sessionManagementFilter()));
+            return securityFilterChain1;
+        }
 
-            listOfFilterChains.add(new DefaultSecurityFilterChain(new 
NegatedRequestMatcher(new AnonRequestMatcher()), headerWriterFilter(), 
httpPostOnlyRejectionFilter(), requestAndResponseValidatorFilter(), 
jwtAuthenticationFilter(), sessionManagementFilter(), 
exceptionTranslationFilter(), filterSecurityInterceptor()));
+        @Bean(name = "springSecurityFilterChainToken")
+        public SecurityFilterChain springSecurityFilterChainToken() throws 
ServletException, Exception {
+            String logPrefix = 
"GenericAccessDecisionManager.springSecurityFilterChain , ";
+            logger.debug(logPrefix + "inside main filter config ...");
 
-            final FilterChainProxy filterChainProxy = new 
FilterChainProxy(listOfFilterChains);
+            SecurityFilterChain securityFilterChain2 = new 
DefaultSecurityFilterChain(new NegatedRequestMatcher(new AnonRequestMatcher()), 
headerWriterFilter(), httpPostOnlyRejectionFilter(), 
requestAndResponseValidatorFilter(), jwtAuthenticationFilter(), 
sessionManagementFilter(), exceptionTranslationFilter(), 
filterSecurityInterceptor());
 
-            return filterChainProxy;
+            return securityFilterChain2;
         }
 
         /**
@@ -420,6 +419,7 @@ public class Axis2Application extends 
SpringBootServletInitializer {
             return filter;
         }
         
+       /*
         @Bean()
         FilterRegistrationBean FilterRegistrationBean() {
             final FilterRegistrationBean filterRegistrationBean = new 
FilterRegistrationBean();
@@ -429,6 +429,7 @@ public class Axis2Application extends 
SpringBootServletInitializer {
             filterRegistrationBean.addUrlPatterns("/*");
             return filterRegistrationBean;
         }
+       */
 
         @Bean
         AuthenticationEntryPoint forbiddenEntryPoint() {
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/configuration/Axis2WebAppInitializer.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/configuration/Axis2WebAppInitializer.java
index 0d3acce633..38e998b5d5 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/configuration/Axis2WebAppInitializer.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/configuration/Axis2WebAppInitializer.java
@@ -33,8 +33,8 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.PropertySource;
 import 
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 
-import javax.servlet.ServletContext; 
-import javax.servlet.ServletRegistration; 
+import jakarta.servlet.ServletContext; 
+import jakarta.servlet.ServletRegistration; 
 
 import java.util.Set; 
  
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/BadRequestMatcher.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/BadRequestMatcher.java
index 8adb2a1494..1be1bd72e7 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/BadRequestMatcher.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/BadRequestMatcher.java
@@ -22,8 +22,8 @@ package userguide.springboot.security.webservices;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.springframework.security.web.util.matcher.RequestMatcher;
 
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/HTTPPostOnlyRejectionFilter.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/HTTPPostOnlyRejectionFilter.java
index 9b9dd586bc..ba74dbc1e4 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/HTTPPostOnlyRejectionFilter.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/HTTPPostOnlyRejectionFilter.java
@@ -28,10 +28,10 @@ import 
org.springframework.web.util.ContentCachingResponseWrapper;
 import org.springframework.web.util.WebUtils;
 import org.springframework.security.web.RedirectStrategy;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationFilter.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationFilter.java
index e46c9c718e..4b6e818a9a 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationFilter.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationFilter.java
@@ -22,10 +22,10 @@ package userguide.springboot.security.webservices;
 import java.io.IOException;
 import java.util.UUID;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationSuccessHandler.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationSuccessHandler.java
index ae0a6cded1..637f3b851a 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationSuccessHandler.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/JWTAuthenticationSuccessHandler.java
@@ -19,8 +19,8 @@
  */
 package userguide.springboot.security.webservices;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.springframework.security.core.Authentication;
 import 
org.springframework.security.web.authentication.AuthenticationSuccessHandler;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RequestAndResponseValidatorFilter.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RequestAndResponseValidatorFilter.java
index 95a2e47cfd..ceafc7a990 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RequestAndResponseValidatorFilter.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RequestAndResponseValidatorFilter.java
@@ -21,7 +21,6 @@ package userguide.springboot.security.webservices;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.springframework.http.server.ServletServerHttpRequest;
 import org.springframework.web.filter.OncePerRequestFilter;
 import org.springframework.web.util.ContentCachingRequestWrapper;
 import org.springframework.web.util.ContentCachingResponseWrapper;
@@ -31,10 +30,10 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.PropertySource;
 import 
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -84,27 +83,21 @@ public class RequestAndResponseValidatorFilter extends 
OncePerRequestFilter {
 
         requestBeginTime.set(System.currentTimeMillis());
 
-        String currentUserIPAddress = null;
-        if (requestToUse.getHeader("X-Forwarded-For") != null) {
-            currentUserIPAddress = requestToUse.getHeader("X-Forwarded-For");
-        } else {
-            logger.warn(logPrefix + "cannot find X-Forwarded-For header, this 
field is required for proper IP auditing");
-            logger.warn(logPrefix + "Because no X-Forwarded-For header was 
found, setting 'currentUserIPAddress = requestToUse.getRemoteAddr()' which is 
typically an internal address");
-            currentUserIPAddress = requestToUse.getRemoteAddr();
-        }
-
-        if (currentUserIPAddress == null || currentUserIPAddress.length() == 0 
|| "unknown".equalsIgnoreCase(currentUserIPAddress)) {
-            logger.warn(logPrefix + "cannot find valid currentUserIPAddress");
-        } else {
-            logger.warn(logPrefix + "proceeding on currentUserIPAddress: " + 
currentUserIPAddress);
-            // rate limiting and extra validation can go here
-        }
-        
         try {
             filterChain.doFilter(requestToUse, responseToUse);
         } finally {
             logRequest(createRequestMessage(requestToUse,uuid));
-            logRequest(createResponseMessage(responseToUse,uuid));
+           
+            ContentCachingResponseWrapper responseWrapper = 
WebUtils.getNativeResponse(responseToUse, ContentCachingResponseWrapper.class);
+            if (responseWrapper != null) {
+                if (isFirstRequest) {
+                    try {
+                        responseWrapper.copyBodyToResponse();
+                    } catch (IOException e) {
+                        logger.error("Fail to write response body back", e);
+                    }
+                }
+            } 
         }
     }
 
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RestAuthenticationEntryPoint.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RestAuthenticationEntryPoint.java
index c7c3e689b8..57a5a71e09 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RestAuthenticationEntryPoint.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/RestAuthenticationEntryPoint.java
@@ -21,8 +21,8 @@ package userguide.springboot.security.webservices;
 
 import java.io.IOException;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.AuthenticationEntryPoint;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/WSLoginFilter.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/WSLoginFilter.java
index c1df12ebe6..30dcae7ed7 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/WSLoginFilter.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/security/webservices/WSLoginFilter.java
@@ -22,12 +22,12 @@ package userguide.springboot.security.webservices;
 import java.io.IOException;
 import java.util.Enumeration;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.filter.GenericFilterBean;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/webservices/secure/LoginService.java
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/webservices/secure/LoginService.java
index 12447c6c27..69ec195eb2 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/webservices/secure/LoginService.java
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/java/userguide/springboot/webservices/secure/LoginService.java
@@ -38,7 +38,7 @@ import userguide.springboot.security.webservices.LoginDTO;
 import 
userguide.springboot.security.webservices.RequestAndResponseValidatorFilter;
 import userguide.springboot.hibernate.dao.SpringSecurityDAOImpl;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.kernel.http.HTTPConstants;
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/resources/esapi-java-logging.properties
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/resources/esapi-java-logging.properties
deleted file mode 100644
index c5f619b9d9..0000000000
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/resources/esapi-java-logging.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-handlers= java.util.logging.ConsoleHandler
-.level= INFO
-java.util.logging.ConsoleHandler.level = INFO
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-java.util.logging.SimpleFormatter.format=[%1$tF %1$tT] [%3$-7s] %5$s %n
-#https://www.logicbig.com/tutorials/core-java-tutorial/logging/customizing-default-format.html
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
index 6840eea86c..c09b2c9b73 100644
--- 
a/modules/samples/userguide/src/userguide/springbootdemo/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
+++ 
b/modules/samples/userguide/src/userguide/springbootdemo/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
@@ -2,9 +2,18 @@
     <deployment>
         <exclude-subsystems>
             <subsystem name="jaxrs" />
+           <!-- SLF4J conflict, Wildfly 32 and up doesn't play nice with 
log4j2 --> 
+            <subsystem name="logging" />
         </exclude-subsystems>
         <exclusions>
-            <module name="org.apache.log4j" /> <module 
name="org.apache.commons.logging" />
+            <module name="org.apache.log4j" /> 
+            <module name="org.apache.commons.logging" />
+           <module name="org.jboss.logging" />
+            <module name="org.jboss.logging.jul-to-slf4j-stub" />
+            <module name="org.jboss.logmanager" />
+            <module name="org.jboss.logmanager.log4j" />
+            <module name="org.slf4j" />
+            <module name="org.slf4j.impl" />
         </exclusions>
         <dependencies> 
             <module name="jdk.unsupported" slot="main" export="true" />
diff --git 
a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java 
b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
index 9af4d508e6..46cc407cc3 100644
--- 
a/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
+++ 
b/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
@@ -417,7 +417,7 @@ public class AxisServlet extends HttpServlet {
                 String status =
                         (String) 
msgContext.getProperty(Constants.HTTP_RESPONSE_STATE);
                 if (status == null) {
-                    log.error("processAxisFault() found a null HTTP status 
from the MessageContext instance, setting HttpServletResponse status to: " + 
Constants.HTTP_RESPONSE_STATE);
+                    log.error("processAxisFault() on error message: " + 
e.getMessage() + " , found a null HTTP status from the MessageContext instance, 
setting HttpServletResponse status to 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR");
                     
res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                 } else {
                     log.error("processAxisFault() found an HTTP status from 
the MessageContext instance, setting HttpServletResponse status to: " + status);
diff --git a/src/site/xdoc/docs/json-springboot-userguide.xml 
b/src/site/xdoc/docs/json-springboot-userguide.xml
index be360fe5dc..02167e282d 100644
--- a/src/site/xdoc/docs/json-springboot-userguide.xml
+++ b/src/site/xdoc/docs/json-springboot-userguide.xml
@@ -81,7 +81,7 @@ This quide supplies a pom.xml for building an exploded WAR 
with Spring Boot -
 however this WAR does not have an embedded web server such as Tomcat. 
 </p>
 <p>
-The testing was carried out on Wildfly, by installing the WAR in its app 
server. 
+The testing was carried out on Wildfly 32, by installing the WAR in its app 
server. 
 </p>
 <p>Please deploy the result of the maven build via 'mvn clean install', 
axis2-json-api.war, into your servlet container and ensure that it installs 
without any errors.</p>
 
@@ -121,7 +121,8 @@ The intent of this guide is to show a place that the JWT 
and JWE standards can b
 implemented.
 </p>
 <p>
-Axis2 JSON support is via POJO Objects. LoginRequest and LoginResponse are 
coded in the LoginService as the names would indicate. 
+Axis2 JSON support is via POJO Objects. LoginRequest and LoginResponse are 
coded in the LoginService as the names would indicate. A flag in the suupplied 
axis2.xml file, enableJSONOnly, 
+disables Axis2 functionality not required for JSON and sets up the server to 
expect JSON.
 </p>
 <p>
 Also provided is a test service, TestwsService. It includes two POJO Objects 
as would


Reply via email to