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

commit ca4f27877f86bec374c39951803db3aadd6b9f62
Author: Robert Lazarski <[email protected]>
AuthorDate: Sat Sep 5 13:06:52 2026 -1000

    Fix the springbootdemo build and align the three sample poms
    
    springbootdemo's antrun step unzipped the packaged WAR at prepare-package,
    before package had produced it; war:exploded is now the only producer of
    the deployable directory. All three samples move to Spring Boot 3.5.16 and
    Axis2 2.0.2-SNAPSHOT and take BOM-managed versions from properties. The
    wildfly pom was the repo's only CRLF pom and is now LF, so review it with
    --ignore-cr-at-eol.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---
 .../src/userguide/springbootdemo-tomcat11/pom.xml  | 162 ++--
 .../src/userguide/springbootdemo-wildfly/pom.xml   | 930 +++++++++++----------
 .../userguide/src/userguide/springbootdemo/pom.xml | 280 ++++---
 3 files changed, 736 insertions(+), 636 deletions(-)

diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo-tomcat11/pom.xml 
b/modules/samples/userguide/src/userguide/springbootdemo-tomcat11/pom.xml
index 278fb52d1c..8b05dbdd72 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo-tomcat11/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo-tomcat11/pom.xml
@@ -19,6 +19,15 @@
   ~ under the License.
   -->
 
+<!--
+  springbootdemo-tomcat11 — Spring Boot + Axis2 demo for Tomcat 11 / Java 21+.
+  Shares its Java source with springbootdemo-wildfly, which adds only the
+  WildFly WEB-INF descriptors and reads src/main/java from here.
+
+  Build:  mvn clean package
+  Output: target/deploy/axis2-json-api/ — an exploded WAR directory, 
deliberately
+          without a .war suffix; see README.md.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
@@ -33,7 +42,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.4.3</version>
+        <version>3.5.16</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
@@ -41,15 +50,41 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>21</java.version>
-        <spring-boot.version>3.4.3</spring-boot.version>
-        <axis2.version>2.0.1-SNAPSHOT</axis2.version>
+
+        <axis2.version>2.0.2-SNAPSHOT</axis2.version>
+
+        <!-- Exploded WAR handed to the application server; see the header 
comment. -->
+        
<deploy.dir>${project.build.directory}/deploy/axis2-json-api</deploy.dir>
+
+        <!--
+          Versions spring-boot-dependencies already manages, overridden here by
+          setting the BOM's own property.  Do not replace these with a 
<version>
+          on the dependency: that pins the direct dependency only and leaves
+          transitive users of the same artifact on the Boot version, which is 
how
+          log4j-jul 2.25.x previously ended up beside log4j-core 2.24.3.
+        -->
+        <commons-codec.version>1.22.1</commons-codec.version>
+        <commons-lang3.version>3.20.0</commons-lang3.version>
+        <httpclient5.version>5.6.3</httpclient5.version>
+        <httpcore5.version>5.4.3</httpcore5.version>
+        <jakarta-servlet.version>6.1.0</jakarta-servlet.version>
+        <log4j2.version>2.25.4</log4j2.version>
+
+        <!-- Versions Spring Boot does not manage. -->
+        <axiom.version>2.0.0</axiom.version>
+        <commons-collections4.version>4.4</commons-collections4.version>
+        <commons-fileupload2.version>2.0.0-M5</commons-fileupload2.version>
+        <commons-io.version>2.22.0</commons-io.version>
+        <commons-validator.version>1.10.1</commons-validator.version>
+        <esapi.version>2.7.0.0</esapi.version>
+        <stax2-api.version>4.2.1</stax2-api.version>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <!-- Required in this userguide for 
-                 org.springframework.dao.DataAccessException 
+            <!-- Required in this userguide for
+                 org.springframework.dao.DataAccessException
             -->
             <artifactId>spring-boot-starter-data-jpa</artifactId>
             <exclusions>
@@ -62,32 +97,26 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.20.0</version>
         </dependency>
         <dependency>
             <groupId>jakarta.activation</groupId>
             <artifactId>jakarta.activation-api</artifactId>
-            <version>2.1.4</version>
         </dependency>
         <dependency>
             <groupId>org.eclipse.angus</groupId>
             <artifactId>angus-activation</artifactId>
-            <version>2.0.3</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jaxb</groupId>
             <artifactId>jaxb-runtime</artifactId>
-            <version>4.0.5</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jaxb</groupId>
             <artifactId>jaxb-xjc</artifactId>
-            <version>4.0.5</version>
         </dependency>
         <dependency>
             <groupId>jakarta.xml.bind</groupId>
             <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>4.0.4</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -96,18 +125,17 @@
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-jul</artifactId>
-            <version>2.25.3</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
             <scope>runtime</scope>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
-            <version>4.4</version>
-       </dependency>
+            <version>${commons-collections4.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -118,7 +146,7 @@
             <artifactId>spring-boot-configuration-processor</artifactId>
             <optional>true</optional>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
@@ -135,34 +163,31 @@
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
-           <version>6.1.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
-            <version>3.4.3</version>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.21.0</version>
+            <version>${commons-io.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
-            <version>1.19.0</version>
         </dependency>
         <dependency>
             <groupId>commons-validator</groupId>
             <artifactId>commons-validator</artifactId>
-            <version>1.10.1</version>
+            <version>${commons-validator.version}</version>
         </dependency>
         <!-- Axis2 core (JSON-RPC/MCP only — SOAP deps excluded) -->
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-kernel</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
             <exclusions>
                 <!-- SOAP/WS-* deps not needed for JSON-RPC/MCP -->
                 
<exclusion><groupId>org.apache.axis2</groupId><artifactId>axis2-saaj</artifactId></exclusion>
@@ -174,27 +199,27 @@
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-transport-http</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-transport-local</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-json</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-adb</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-spring</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
@@ -205,126 +230,123 @@
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-transport-h2</artifactId>
-            <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents.core5</groupId>
             <artifactId>httpcore5-h2</artifactId>
-            <version>5.4.3</version>
         </dependency>
         <!-- Axiom (XML object model — still needed by kernel internals) -->
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-impl</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-jakarta-activation</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <!-- Deps still needed at runtime (transitive from kernel) -->
         <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>stax2-api</artifactId>
-            <version>4.2.1</version>
+            <version>${stax2-api.version}</version>
         </dependency>
         <!-- commons-fileupload -->
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-fileupload2-core</artifactId>
-            <version>2.0.0-M5</version>
+            <version>${commons-fileupload2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
-            <version>2.0.0-M5</version>
+            <version>${commons-fileupload2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.owasp.esapi</groupId>
             <artifactId>esapi</artifactId>
-            <version>2.7.0.0</version>
+            <version>${esapi.version}</version>
             <classifier>jakarta</classifier>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.apache.httpcomponents.core5</groupId>
             <artifactId>httpcore5</artifactId>
-            <version>5.4.3</version>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents.client5</groupId>
             <artifactId>httpclient5</artifactId>
-            <version>5.6.3</version>
         </dependency>
     </dependencies>
+
     <build>
         <plugins>
+            <!--
+              The openapi module has to reach WEB-INF/modules as 
openapi-<version>.mar.
+              Resolving it as an artifact rather than copying it out of
+              ${settings.localRepository} keeps it working with a mirror, a
+              non-default repository path, and timestamped remote snapshots.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <version>3.8.1</version>
                 <executions>
                     <execution>
-                        <id>unpack</id>
-                        <phase>package</phase>
+                        <id>copy-openapi-mar</id>
+                        <phase>prepare-package</phase>
                         <goals>
-                            <goal>unpack</goal>
+                            <goal>copy</goal>
                         </goals>
                         <configuration>
                             <artifactItems>
                                 <artifactItem>
-                                    <groupId>userguide.springboot</groupId>
-                                    <artifactId>axis2-json-api</artifactId>
-                                    <version>0.0.1-SNAPSHOT</version>
-                                    <type>war</type>
-                                    <overWrite>false</overWrite>
-                                    
<outputDirectory>${project.build.directory}/deploy/axis2-json-api</outputDirectory>
-                                    <includes>**/*.class,**/*.xml</includes>
-                                    <excludes>**/*test.class</excludes>
+                                    <groupId>org.apache.axis2</groupId>
+                                    <artifactId>axis2-openapi</artifactId>
+                                    <version>${axis2.version}</version>
+                                    <type>jar</type>
+                                    
<outputDirectory>${deploy.dir}/WEB-INF/modules</outputDirectory>
+                                    
<destFileName>openapi-${axis2.version}.mar</destFileName>
                                 </artifactItem>
                             </artifactItems>
-                            <includes>**/*.java</includes>
-                            <excludes>**/*.properties</excludes>
                             <overWriteReleases>true</overWriteReleases>
                             <overWriteSnapshots>true</overWriteSnapshots>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
+            <!--
+              Each service archive is a jar holding nothing but 
META-INF/services.xml;
+              the implementation classes are loaded from WEB-INF/classes.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <version>3.1.0</version>
                 <executions>
                     <execution>
-                        <id>install</id>
+                        <id>axis2-repository</id>
                         <phase>prepare-package</phase>
                         <configuration>
                             <target>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/Login.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/Login.aar">
                                     <metainf 
file="resources-axis2/login_resources/services.xml"/>
                                 </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/testws.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/testws.aar">
                                     <metainf 
file="resources-axis2/test_service_resources/services.xml"/>
                                 </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/BigDataH2Service.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/BigDataH2Service.aar">
                                     <metainf 
file="resources-axis2/bigdata_h2_resources/services.xml"/>
                                 </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/FinancialBenchmarkService.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/FinancialBenchmarkService.aar">
                                     <metainf 
file="resources-axis2/finbench_resources/services.xml"/>
                                 </jar>
-                                <copy 
todir="${project.build.directory}/deploy/axis2-json-api/WEB-INF/conf">
+                                <copy todir="${deploy.dir}/WEB-INF/conf">
                                     <fileset dir="resources-axis2/conf">
                                         <include name="axis2.xml"/>
                                     </fileset>
                                 </copy>
-                                <mkdir 
dir="${project.build.directory}/deploy/axis2-json-api/WEB-INF/modules"/>
-                                <copy 
file="${settings.localRepository}/org/apache/axis2/axis2-openapi/${axis2.version}/axis2-openapi-${axis2.version}.jar"
-                                      
tofile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/modules/openapi-${axis2.version}.mar"
-                                      overwrite="true"/>
-                                <!-- The exploded WAR is at 
target/deploy/axis2-json-api/ (produced by
-                                     maven-war-plugin's exploded goal). No 
separate unzip step needed.
-                                     For Tomcat deployment, copy this 
directory to webapps/axis2-json-api. -->
                             </target>
                         </configuration>
                         <goals>
@@ -333,6 +355,13 @@
                     </execution>
                 </executions>
             </plugin>
+            <!--
+              war:exploded writes into ${deploy.dir} during package, merging 
with the
+              services, conf and modules put there above.  It is the only 
producer of
+              the deployable directory - do not add a step that unpacks the 
packaged
+              .war on top of it, since at prepare-package that file does not 
exist yet.
+              For Tomcat, copy this directory to webapps/.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
@@ -349,11 +378,11 @@
                             <filtering>true</filtering>
                         </resource>
                     </webResources>
-                    
<webappDirectory>${project.build.directory}/deploy/axis2-json-api</webappDirectory>
+                    <webappDirectory>${deploy.dir}</webappDirectory>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>enforce-java</id>
+                        <id>exploded</id>
                         <goals>
                             <goal>exploded</goal>
                         </goals>
@@ -383,7 +412,6 @@
                 <dependency>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-starter-web</artifactId>
-                    <version>3.4.3</version>
                 </dependency>
             </dependencies>
         </profile>
diff --git 
a/modules/samples/userguide/src/userguide/springbootdemo-wildfly/pom.xml 
b/modules/samples/userguide/src/userguide/springbootdemo-wildfly/pom.xml
index a476996372..c6b72cbef0 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo-wildfly/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo-wildfly/pom.xml
@@ -1,434 +1,496 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  ~ 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.
-  -->
-
-<!--
-  springbootdemo-wildfly — WildFly 32+ / Java 21+ deployment of the same
-  Spring Boot + Axis2 demo that springbootdemo-tomcat11 targets for Tomcat 11.
-  Tested on WildFly 39.0.1.Final / OpenJDK 25.
-
-  Java source is shared from ../springbootdemo-tomcat11/src/main/java via
-  build-helper-maven-plugin.  The only new artifacts here are:
-    src/main/webapp/WEB-INF/jboss-deployment-structure.xml
-    src/main/webapp/WEB-INF/jboss-web.xml
-
-  Build:   mvn package -DskipTests
-  Deploy:  see README.md (rsync + touch .dodeploy)
-  JDK:     Compiled at Java 21 source level; tested on OpenJDK 21 and OpenJDK 
25.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>userguide.springboot</groupId>
-    <artifactId>axis2-json-api</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <packaging>war</packaging>
-    <name>axis2-json-api-wildfly</name>
-    <description>Spring Boot + Axis2 demo — WildFly 32+ / Java 21+ (tested on 
WildFly 39 / Java 25)</description>
-
-    <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.4.3</version>
-        <relativePath/>
-    </parent>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>21</java.version>
-        <spring-boot.version>3.4.3</spring-boot.version>
-        <axis2.version>2.0.1-SNAPSHOT</axis2.version>
-        <!-- Shared source root — avoids duplicating 37 Java files -->
-        
<tomcat11.src>${project.basedir}/../springbootdemo-tomcat11</tomcat11.src>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.zaxxer</groupId>
-                    <artifactId>HikariCP</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>3.20.0</version>
-        </dependency>
-        <dependency>
-            <groupId>jakarta.activation</groupId>
-            <artifactId>jakarta.activation-api</artifactId>
-            <version>2.1.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.angus</groupId>
-            <artifactId>angus-activation</artifactId>
-            <version>2.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jaxb</groupId>
-            <artifactId>jaxb-runtime</artifactId>
-            <version>4.0.5</version>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jaxb</groupId>
-            <artifactId>jaxb-xjc</artifactId>
-            <version>4.0.5</version>
-        </dependency>
-        <dependency>
-            <groupId>jakarta.xml.bind</groupId>
-            <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>4.0.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-log4j2</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-jul</artifactId>
-            <version>2.25.3</version>
-        </dependency>
-        <!-- No spring-boot-devtools: WildFly hot-reload works differently -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>4.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-configuration-processor</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-starter-logging</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- Servlet API is provided by WildFly (Undertow) -->
-        <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-            <version>6.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-security</artifactId>
-            <version>3.4.3</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>2.21.0</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.19.0</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-validator</groupId>
-            <artifactId>commons-validator</artifactId>
-            <version>1.10.1</version>
-        </dependency>
-        <!-- axis2 -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-fileupload2-core</artifactId>
-            <version>2.0.0-M5</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
-            <version>2.0.0-M5</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-kernel</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-transport-http</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <!-- HTTP/2 Transport for Enterprise Big Data Processing -->
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-transport-h2</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <!-- HTTP/2 Dependencies -->
-        <dependency>
-            <groupId>org.apache.httpcomponents.core5</groupId>
-            <artifactId>httpcore5-h2</artifactId>
-            <version>5.4.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-transport-local</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-json</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-ant-plugin</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-adb</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-java2wsdl</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-metadata</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-spring</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-jaxws</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-openapi</artifactId>
-            <version>${axis2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.neethi</groupId>
-            <artifactId>neethi</artifactId>
-            <version>3.2.2</version>
-        </dependency>
-        <dependency>
-            <groupId>wsdl4j</groupId>
-            <artifactId>wsdl4j</artifactId>
-            <version>1.6.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.xmlschema</groupId>
-            <artifactId>xmlschema-core</artifactId>
-            <version>2.3.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.woodstox</groupId>
-            <artifactId>stax2-api</artifactId>
-            <version>4.2.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.woden</groupId>
-            <artifactId>woden-core</artifactId>
-            <version>1.0M10</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-impl</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-dom</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-jakarta-activation</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-legacy-attachments</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.ws.commons.axiom</groupId>
-            <artifactId>axiom-jakarta-jaxb</artifactId>
-            <version>2.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.ws.rs</groupId>
-            <artifactId>jsr311-api</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.owasp.esapi</groupId>
-            <artifactId>esapi</artifactId>
-            <version>2.7.0.0</version>
-            <classifier>jakarta</classifier>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents.core5</groupId>
-            <artifactId>httpcore5</artifactId>
-            <version>5.4.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents.client5</groupId>
-            <artifactId>httpclient5</artifactId>
-            <version>5.6.3</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <!--
-              Share Java source and resources from springbootdemo-tomcat11.
-              No Java files live in this module — it only adds WildFly WEB-INF 
resources.
-            -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>3.6.0</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals><goal>add-source</goal></goals>
-                        <configuration>
-                            <sources>
-                                <source>${tomcat11.src}/src/main/java</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>add-resource</id>
-                        <phase>generate-resources</phase>
-                        <goals><goal>add-resource</goal></goals>
-                        <configuration>
-                            <resources>
-                                <resource>
-                                    
<directory>${tomcat11.src}/src/main/resources</directory>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-<plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>3.1.0</version>
-                <executions>
-                    <execution>
-                        <id>install</id>
-                        <phase>prepare-package</phase>
-                        <configuration>
-                            <target>
-                                <!-- .aar files reference resources-axis2 in 
the shared tomcat11 dir -->
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/Login.aar">
-                                    <metainf 
file="${tomcat11.src}/resources-axis2/login_resources/services.xml"/>
-                                </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/testws.aar">
-                                    <metainf 
file="${tomcat11.src}/resources-axis2/test_service_resources/services.xml"/>
-                                </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/BigDataH2Service.aar">
-                                    <metainf 
file="${tomcat11.src}/resources-axis2/bigdata_h2_resources/services.xml"/>
-                                </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/services/FinancialBenchmarkService.aar">
-                                    <metainf 
file="${tomcat11.src}/resources-axis2/finbench_resources/services.xml"/>
-                                </jar>
-                                <copy 
todir="${project.build.directory}/deploy/axis2-json-api/WEB-INF/conf">
-                                    <fileset 
dir="${tomcat11.src}/resources-axis2/conf">
-                                        <include name="axis2.xml"/>
-                                    </fileset>
-                                </copy>
-                                <mkdir 
dir="${project.build.directory}/deploy/axis2-json-api/WEB-INF/modules"/>
-                                <copy 
file="${settings.localRepository}/org/apache/axis2/axis2-openapi/${axis2.version}/axis2-openapi-${axis2.version}.jar"
-                                      
tofile="${project.build.directory}/deploy/axis2-json-api/WEB-INF/modules/openapi-${axis2.version}.mar"
-                                      overwrite="true"/>
-                                <!-- exploded/ view is produced by 
maven-war-plugin's exploded goal (package phase) -->
-                            </target>
-                        </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-war-plugin</artifactId>
-                <version>3.5.1</version>
-                <configuration>
-                    <!--
-                      src/main/webapp/WEB-INF/ contains 
jboss-deployment-structure.xml
-                      and jboss-web.xml — picked up automatically from here.
-                    -->
-                    <webResources>
-                        <resource>
-                            
<directory>${tomcat11.src}/src/main/resources</directory>
-                            <includes>
-                                <include>**/*.xml</include>
-                                <include>**/application.properties</include>
-                            </includes>
-                            <targetPath>WEB-INF/classes</targetPath>
-                            <filtering>true</filtering>
-                        </resource>
-                    </webResources>
-                    
<webappDirectory>${project.build.directory}/deploy/axis2-json-api</webappDirectory>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>enforce-java</id>
-                        <goals>
-                            <goal>exploded</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  ~ 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.
+  -->
+
+<!--
+  springbootdemo-wildfly — WildFly 32+ / Java 21+ deployment of the same
+  Spring Boot + Axis2 demo that springbootdemo-tomcat11 targets for Tomcat 11.
+  Tested on WildFly 39.0.1.Final / OpenJDK 25.
+
+  Java source, resources and the Axis2 repository content are all shared from
+  ../springbootdemo-tomcat11 — keep the dependency list here in step with that
+  module's.  The only new artifacts here are:
+    src/main/webapp/WEB-INF/jboss-deployment-structure.xml
+    src/main/webapp/WEB-INF/jboss-web.xml
+
+  Build:   mvn package -DskipTests
+  Deploy:  see README.md (rsync + touch .dodeploy)
+  JDK:     Compiled at Java 21 source level; tested on OpenJDK 21 and OpenJDK 
25.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>userguide.springboot</groupId>
+    <artifactId>axis2-json-api</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>war</packaging>
+    <name>axis2-json-api-wildfly</name>
+    <description>Spring Boot + Axis2 demo — WildFly 32+ / Java 21+ (tested on 
WildFly 39 / Java 25)</description>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>3.5.16</version>
+        <relativePath/>
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>21</java.version>
+
+        <axis2.version>2.0.2-SNAPSHOT</axis2.version>
+
+        <!-- Shared source root — avoids duplicating 37 Java files -->
+        
<tomcat11.src>${project.basedir}/../springbootdemo-tomcat11</tomcat11.src>
+        <!-- Exploded WAR handed to WildFly; see README.md. -->
+        
<deploy.dir>${project.build.directory}/deploy/axis2-json-api</deploy.dir>
+
+        <!--
+          Versions spring-boot-dependencies already manages, overridden here by
+          setting the BOM's own property.  Do not replace these with a 
<version>
+          on the dependency: that pins the direct dependency only and leaves
+          transitive users of the same artifact on the Boot version, which is 
how
+          log4j-jul 2.25.x previously ended up beside log4j-core 2.24.3.
+        -->
+        <commons-codec.version>1.22.1</commons-codec.version>
+        <commons-lang3.version>3.20.0</commons-lang3.version>
+        <httpclient5.version>5.6.3</httpclient5.version>
+        <httpcore5.version>5.4.3</httpcore5.version>
+        <jakarta-servlet.version>6.1.0</jakarta-servlet.version>
+        <log4j2.version>2.25.4</log4j2.version>
+
+        <!-- Versions Spring Boot does not manage. -->
+        <axiom.version>2.0.0</axiom.version>
+        <commons-collections4.version>4.4</commons-collections4.version>
+        <commons-fileupload2.version>2.0.0-M5</commons-fileupload2.version>
+        <commons-io.version>2.22.0</commons-io.version>
+        <commons-validator.version>1.10.1</commons-validator.version>
+        <esapi.version>2.7.0.0</esapi.version>
+        <jsr311.version>1.1.1</jsr311.version>
+        <neethi.version>3.2.3</neethi.version>
+        <stax2-api.version>4.2.1</stax2-api.version>
+        <woden.version>1.0M10</woden.version>
+        <xmlschema.version>2.3.2</xmlschema.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.zaxxer</groupId>
+                    <artifactId>HikariCP</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-runtime</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-xjc</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-jul</artifactId>
+        </dependency>
+        <!-- No spring-boot-devtools: WildFly hot-reload works differently -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-collections4</artifactId>
+            <version>${commons-collections4.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- Servlet API is provided by WildFly (Undertow) -->
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons-io.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-validator</groupId>
+            <artifactId>commons-validator</artifactId>
+            <version>${commons-validator.version}</version>
+        </dependency>
+        <!-- axis2 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-core</artifactId>
+            <version>${commons-fileupload2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
+            <version>${commons-fileupload2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-http</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <!-- HTTP/2 Transport for Enterprise Big Data Processing -->
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-h2</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <!-- HTTP/2 Dependencies -->
+        <dependency>
+            <groupId>org.apache.httpcomponents.core5</groupId>
+            <artifactId>httpcore5-h2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-local</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-json</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-ant-plugin</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-adb</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-java2wsdl</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-metadata</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-spring</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-jaxws</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-openapi</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.neethi</groupId>
+            <artifactId>neethi</artifactId>
+            <version>${neethi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.xmlschema</groupId>
+            <artifactId>xmlschema-core</artifactId>
+            <version>${xmlschema.version}</version>
+        </dependency>
+        <!--
+          stax2-api only.  The Woodstox implementation comes in transitively 
with
+          Axiom (com.fasterxml.woodstox:woodstox-core); adding the retired
+          org.codehaus.woodstox:woodstox-core-asl on top of it puts two StAX
+          implementations on the classpath, and which one wins is then decided 
by
+          ServiceLoader ordering.
+        -->
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>stax2-api</artifactId>
+            <version>${stax2-api.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.woden</groupId>
+            <artifactId>woden-core</artifactId>
+            <version>${woden.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-impl</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-dom</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-jakarta-activation</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-legacy-attachments</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ws.commons.axiom</groupId>
+            <artifactId>axiom-jakarta-jaxb</artifactId>
+            <version>${axiom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>jsr311-api</artifactId>
+            <version>${jsr311.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.owasp.esapi</groupId>
+            <artifactId>esapi</artifactId>
+            <version>${esapi.version}</version>
+            <classifier>jakarta</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents.core5</groupId>
+            <artifactId>httpcore5</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents.client5</groupId>
+            <artifactId>httpclient5</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!--
+              Share Java source and resources from springbootdemo-tomcat11.
+              No Java files live in this module — it only adds WildFly WEB-INF 
resources.
+            -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.6.0</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals><goal>add-source</goal></goals>
+                        <configuration>
+                            <sources>
+                                <source>${tomcat11.src}/src/main/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>add-resource</id>
+                        <phase>generate-resources</phase>
+                        <goals><goal>add-resource</goal></goals>
+                        <configuration>
+                            <resources>
+                                <resource>
+                                    
<directory>${tomcat11.src}/src/main/resources</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!--
+              The openapi module has to reach WEB-INF/modules as 
openapi-<version>.mar.
+              Resolving it as an artifact rather than copying it out of
+              ${settings.localRepository} keeps it working with a mirror, a
+              non-default repository path, and timestamped remote snapshots.
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.8.1</version>
+                <executions>
+                    <execution>
+                        <id>copy-openapi-mar</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.axis2</groupId>
+                                    <artifactId>axis2-openapi</artifactId>
+                                    <version>${axis2.version}</version>
+                                    <type>jar</type>
+                                    
<outputDirectory>${deploy.dir}/WEB-INF/modules</outputDirectory>
+                                    
<destFileName>openapi-${axis2.version}.mar</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!--
+              Each service archive is a jar holding nothing but 
META-INF/services.xml;
+              the implementation classes are loaded from WEB-INF/classes.  The
+              services.xml files live in the shared tomcat11 directory.
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <id>axis2-repository</id>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <target>
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/Login.aar">
+                                    <metainf 
file="${tomcat11.src}/resources-axis2/login_resources/services.xml"/>
+                                </jar>
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/testws.aar">
+                                    <metainf 
file="${tomcat11.src}/resources-axis2/test_service_resources/services.xml"/>
+                                </jar>
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/BigDataH2Service.aar">
+                                    <metainf 
file="${tomcat11.src}/resources-axis2/bigdata_h2_resources/services.xml"/>
+                                </jar>
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/FinancialBenchmarkService.aar">
+                                    <metainf 
file="${tomcat11.src}/resources-axis2/finbench_resources/services.xml"/>
+                                </jar>
+                                <copy todir="${deploy.dir}/WEB-INF/conf">
+                                    <fileset 
dir="${tomcat11.src}/resources-axis2/conf">
+                                        <include name="axis2.xml"/>
+                                    </fileset>
+                                </copy>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!--
+              war:exploded writes into ${deploy.dir} during package, merging 
with the
+              services, conf and modules put there above.  It is the only 
producer of
+              the deployable directory - do not add a step that unpacks the 
packaged
+              .war on top of it, since at prepare-package that file does not 
exist yet.
+              src/main/webapp/WEB-INF/ contributes 
jboss-deployment-structure.xml and
+              jboss-web.xml, picked up automatically from there.
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <webResources>
+                        <resource>
+                            
<directory>${tomcat11.src}/src/main/resources</directory>
+                            <includes>
+                                <include>**/*.xml</include>
+                                <include>**/application.properties</include>
+                            </includes>
+                            <targetPath>WEB-INF/classes</targetPath>
+                            <filtering>true</filtering>
+                        </resource>
+                    </webResources>
+                    <webappDirectory>${deploy.dir}</webappDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>exploded</id>
+                        <goals>
+                            <goal>exploded</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml 
b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
index fade7d9f0e..27fd54036a 100644
--- a/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
+++ b/modules/samples/userguide/src/userguide/springbootdemo/pom.xml
@@ -19,6 +19,14 @@
   ~ under the License.
   -->
 
+<!--
+  springbootdemo — Spring Boot + Axis2 demo deployed to an external application
+  server (no embedded container).  See 
src/site/xdoc/docs/json-springboot-userguide.xml.
+
+  Build:  mvn clean package
+  Output: target/deploy/axis2-json-api.war/ — an exploded WAR directory, named
+          with the .war suffix because WildFly takes the deployment name from 
it.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
@@ -33,7 +41,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.4.3</version>
+        <version>3.5.16</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
@@ -41,15 +49,45 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>17</java.version>
-        <spring-boot.version>3.4.3</spring-boot.version>
-        <axis2.version>2.0.1-SNAPSHOT</axis2.version>
+
+        <axis2.version>2.0.2-SNAPSHOT</axis2.version>
+
+        <!-- Exploded WAR handed to the application server; see the header 
comment. -->
+        
<deploy.dir>${project.build.directory}/deploy/axis2-json-api.war</deploy.dir>
+
+        <!--
+          Versions spring-boot-dependencies already manages, overridden here by
+          setting the BOM's own property.  Do not replace these with a 
<version>
+          on the dependency: that pins the direct dependency only and leaves
+          transitive users of the same artifact on the Boot version, which is 
how
+          log4j-jul 2.25.x previously ended up beside log4j-core 2.24.3.
+        -->
+        <commons-codec.version>1.22.1</commons-codec.version>
+        <commons-lang3.version>3.20.0</commons-lang3.version>
+        <httpclient5.version>5.6.3</httpclient5.version>
+        <httpcore5.version>5.4.3</httpcore5.version>
+        <jakarta-servlet.version>6.1.0</jakarta-servlet.version>
+        <log4j2.version>2.25.4</log4j2.version>
+
+        <!-- Versions Spring Boot does not manage. -->
+        <axiom.version>2.0.0</axiom.version>
+        <commons-collections4.version>4.4</commons-collections4.version>
+        <commons-fileupload2.version>2.0.0-M5</commons-fileupload2.version>
+        <commons-io.version>2.22.0</commons-io.version>
+        <commons-validator.version>1.10.1</commons-validator.version>
+        <esapi.version>2.7.0.0</esapi.version>
+        <jsr311.version>1.1.1</jsr311.version>
+        <neethi.version>3.2.3</neethi.version>
+        <stax2-api.version>4.2.1</stax2-api.version>
+        <woden.version>1.0M10</woden.version>
+        <xmlschema.version>2.3.2</xmlschema.version>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <!-- Required in this userguide for 
-                 org.springframework.dao.DataAccessException 
+            <!-- Required in this userguide for
+                 org.springframework.dao.DataAccessException
             -->
             <artifactId>spring-boot-starter-data-jpa</artifactId>
             <exclusions>
@@ -62,32 +100,22 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.18.0</version>
         </dependency>
         <dependency>
             <groupId>jakarta.activation</groupId>
             <artifactId>jakarta.activation-api</artifactId>
-            <version>2.1.3</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>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>4.0.1</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -96,18 +124,17 @@
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-jul</artifactId>
-            <version>2.24.3</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
             <scope>runtime</scope>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
-            <version>4.4</version>
-       </dependency>
+            <version>${commons-collections4.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
@@ -118,7 +145,7 @@
             <artifactId>spring-boot-configuration-processor</artifactId>
             <optional>true</optional>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
@@ -135,267 +162,244 @@
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
-           <version>6.1.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
-            <version>3.4.3</version>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
-            <version>2.18.0</version>
+            <version>${commons-io.version}</version>
         </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
-            <version>1.15</version>
         </dependency>
         <dependency>
             <groupId>commons-validator</groupId>
             <artifactId>commons-validator</artifactId>
-            <version>1.7</version>
+            <version>${commons-validator.version}</version>
         </dependency>
         <!-- axis2 -->
-       <dependency>
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-fileupload2-core</artifactId>
-            <version>2.0.0-M2</version>
+            <version>${commons-fileupload2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-fileupload2-jakarta-servlet6</artifactId>
-            <version>2.0.0-M2</version>
-        </dependency>
-       <dependency>
-               <groupId>org.apache.axis2</groupId>
-               <artifactId>axis2-kernel</artifactId>
-               <version>2.0.1-SNAPSHOT</version>
-       </dependency>
-       <dependency>
-               <groupId>org.apache.axis2</groupId>
-               <artifactId>axis2-transport-http</artifactId>
-               <version>2.0.1-SNAPSHOT</version>
-       </dependency>
-       <!-- HTTP/2 Transport for Enterprise Big Data Processing -->
-       <dependency>
-               <groupId>org.apache.axis2</groupId>
-               <artifactId>axis2-transport-h2</artifactId>
-               <version>2.0.1-SNAPSHOT</version>
-       </dependency>
-       <!-- HTTP/2 Dependencies -->
-       <dependency>
-               <groupId>org.apache.httpcomponents.core5</groupId>
-               <artifactId>httpcore5-h2</artifactId>
-               <version>5.4.3</version>
-       </dependency>
-       <dependency>
-               <groupId>org.apache.axis2</groupId>
-               <artifactId>axis2-transport-local</artifactId>
-               <version>2.0.1-SNAPSHOT</version>
-       </dependency>
-       <dependency>
-               <groupId>org.apache.axis2</groupId>
-               <artifactId>axis2-json</artifactId>
-               <version>2.0.1-SNAPSHOT</version>
-       </dependency>
+            <version>${commons-fileupload2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-kernel</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-http</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <!-- HTTP/2 Transport for Enterprise Big Data Processing -->
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-h2</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <!-- HTTP/2 Dependencies -->
+        <dependency>
+            <groupId>org.apache.httpcomponents.core5</groupId>
+            <artifactId>httpcore5-h2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-transport-local</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.axis2</groupId>
+            <artifactId>axis2-json</artifactId>
+            <version>${axis2.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-ant-plugin</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-adb</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-java2wsdl</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-metadata</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-spring</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-jaxws</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.axis2</groupId>
             <artifactId>axis2-openapi</artifactId>
-           <version>2.0.1-SNAPSHOT</version>
+            <version>${axis2.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.neethi</groupId>
             <artifactId>neethi</artifactId>
-           <version>3.2.2</version>
+            <version>${neethi.version}</version>
         </dependency>
         <dependency>
             <groupId>wsdl4j</groupId>
             <artifactId>wsdl4j</artifactId>
-           <version>1.6.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.woodstox</groupId>
-            <artifactId>woodstox-core-asl</artifactId>
-            <version>4.4.1</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.xmlschema</groupId>
             <artifactId>xmlschema-core</artifactId>
-            <version>2.3.0</version>
+            <version>${xmlschema.version}</version>
         </dependency>
+        <!--
+          stax2-api only.  The Woodstox implementation comes in transitively 
with
+          Axiom (com.fasterxml.woodstox:woodstox-core); adding the retired
+          org.codehaus.woodstox:woodstox-core-asl on top of it puts two StAX
+          implementations on the classpath, and which one wins is then decided 
by
+          ServiceLoader ordering.
+        -->
         <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>stax2-api</artifactId>
-            <version>4.2.1</version>
+            <version>${stax2-api.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.woden</groupId>
             <artifactId>woden-core</artifactId>
-            <version>1.0M10</version>
+            <version>${woden.version}</version>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-impl</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-dom</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-jakarta-activation</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-legacy-attachments</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.ws.commons.axiom</groupId>
             <artifactId>axiom-jakarta-jaxb</artifactId>
-            <version>2.0.0</version>
+            <version>${axiom.version}</version>
         </dependency>
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>jsr311-api</artifactId>
-            <version>1.1.1</version>
+            <version>${jsr311.version}</version>
         </dependency>
         <dependency>
             <groupId>org.owasp.esapi</groupId>
             <artifactId>esapi</artifactId>
-            <version>2.6.0.0</version>
+            <version>${esapi.version}</version>
             <classifier>jakarta</classifier>
         </dependency>
-       <dependency>
+        <dependency>
             <groupId>org.apache.httpcomponents.core5</groupId>
             <artifactId>httpcore5</artifactId>
-            <version>5.4.3</version>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents.client5</groupId>
             <artifactId>httpclient5</artifactId>
-            <version>5.6.3</version>
         </dependency>
     </dependencies>
+
     <build>
         <plugins>
+            <!--
+              The openapi module has to reach WEB-INF/modules as 
openapi-<version>.mar.
+              Resolving it as an artifact rather than copying it out of
+              ${settings.localRepository} keeps it working with a mirror, a
+              non-default repository path, and timestamped remote snapshots.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <version>3.8.1</version>
                 <executions>
                     <execution>
-                        <id>unpack</id>
-                        <phase>package</phase>
+                        <id>copy-openapi-mar</id>
+                        <phase>prepare-package</phase>
                         <goals>
-                            <goal>unpack</goal>
+                            <goal>copy</goal>
                         </goals>
                         <configuration>
                             <artifactItems>
                                 <artifactItem>
-                                    <groupId>userguide.springboot</groupId>
-                                    <artifactId>axis2-json-api</artifactId>
-                                    <version>0.0.1-SNAPSHOT</version>
-                                    <type>war</type>
-                                    <overWrite>false</overWrite>
-                                    
<outputDirectory>${project.build.directory}/deploy/axis2-json-api.war</outputDirectory>
-                                    <includes>**/*.class,**/*.xml</includes>
-                                    <excludes>**/*test.class</excludes>
+                                    <groupId>org.apache.axis2</groupId>
+                                    <artifactId>axis2-openapi</artifactId>
+                                    <version>${axis2.version}</version>
+                                    <type>jar</type>
+                                    
<outputDirectory>${deploy.dir}/WEB-INF/modules</outputDirectory>
+                                    
<destFileName>openapi-${axis2.version}.mar</destFileName>
                                 </artifactItem>
                             </artifactItems>
-                            <includes>**/*.java</includes>
-                            <excludes>**/*.properties</excludes>
                             <overWriteReleases>true</overWriteReleases>
                             <overWriteSnapshots>true</overWriteSnapshots>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
+            <!--
+              Each service archive is a jar holding nothing but 
META-INF/services.xml;
+              the implementation classes are loaded from WEB-INF/classes.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
                 <version>3.1.0</version>
                 <executions>
                     <execution>
-                        <id>install</id>
+                        <id>axis2-repository</id>
                         <phase>prepare-package</phase>
                         <configuration>
                             <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>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/services/testws.aar">
-                                    <metainf 
file="resources-axis2/test_service_resources/services.xml"/>
-                                </jar>
-                                <jar 
jarfile="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/services/BigDataH2Service.aar">
-                                    <metainf 
file="resources-axis2/bigdata_h2_resources/services.xml"/>
-                                </jar>
-                                <copy 
todir="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/conf">
-                                    <fileset dir="resources-axis2/conf">
-                                        <include name="axis2.xml"/>
-                                    </fileset>
-                                </copy>
-                                <!-- Create openapi module archive for 
WEB-INF/modules -->
-                                <mkdir 
dir="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/modules"/>
-                                <copy 
file="${settings.localRepository}/org/apache/axis2/axis2-openapi/${axis2.version}/axis2-openapi-${axis2.version}.jar"
-                                      
tofile="${project.build.directory}/deploy/axis2-json-api.war/WEB-INF/modules/openapi-${axis2.version}.mar"
-                                      overwrite="true"/>
-                                <unzip 
src="${project.build.directory}/axis2-json-api-0.0.1-SNAPSHOT.war" 
dest="${project.build.directory}/exploded"/>
-                                <jar 
jarfile="${project.build.directory}/exploded/WEB-INF/services/Login.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/Login.aar">
                                     <metainf 
file="resources-axis2/login_resources/services.xml"/>
                                 </jar>
-                                <jar 
jarfile="${project.build.directory}/exploded/WEB-INF/services/testws.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/testws.aar">
                                     <metainf 
file="resources-axis2/test_service_resources/services.xml"/>
                                 </jar>
-                                <jar 
jarfile="${project.build.directory}/exploded/WEB-INF/services/BigDataH2Service.aar">
+                                <jar 
jarfile="${deploy.dir}/WEB-INF/services/BigDataH2Service.aar">
                                     <metainf 
file="resources-axis2/bigdata_h2_resources/services.xml"/>
                                 </jar>
-                                <copy 
todir="${project.build.directory}/exploded/WEB-INF/conf">
+                                <copy todir="${deploy.dir}/WEB-INF/conf">
                                     <fileset dir="resources-axis2/conf">
                                         <include name="axis2.xml"/>
                                     </fileset>
                                 </copy>
-                                <!-- Create openapi module archive for 
exploded WEB-INF/modules -->
-                                <mkdir 
dir="${project.build.directory}/exploded/WEB-INF/modules"/>
-                                <copy 
file="${settings.localRepository}/org/apache/axis2/axis2-openapi/${axis2.version}/axis2-openapi-${axis2.version}.jar"
-                                      
tofile="${project.build.directory}/exploded/WEB-INF/modules/openapi-${axis2.version}.mar"
-                                      overwrite="true"/>
                             </target>
                         </configuration>
                         <goals>
@@ -404,10 +408,16 @@
                     </execution>
                 </executions>
             </plugin>
+            <!--
+              war:exploded writes into ${deploy.dir} during package, merging 
with the
+              services, conf and modules put there above.  It is the only 
producer of
+              the deployable directory - do not add a step that unpacks the 
packaged
+              .war on top of it, since at prepare-package that file does not 
exist yet.
+            -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>3.4.0</version>
+                <version>3.5.1</version>
                 <configuration>
                     <webResources>
                         <resource>
@@ -420,11 +430,11 @@
                             <filtering>true</filtering>
                         </resource>
                     </webResources>
-                    
<webappDirectory>${project.build.directory}/deploy/axis2-json-api.war</webappDirectory>
+                    <webappDirectory>${deploy.dir}</webappDirectory>
                 </configuration>
                 <executions>
                     <execution>
-                        <id>enforce-java</id>
+                        <id>exploded</id>
                         <goals>
                             <goal>exploded</goal>
                         </goals>

Reply via email to