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>
