diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 7919b05b761..d31ed56fc49 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -94,7 +94,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java-version: ['11.x', '17.x', '21.x'] + java-version: ['17.x', '21.x'] fail-fast: false steps: - name: "checking out" @@ -126,19 +126,15 @@ jobs: strategy: matrix: node-version: ['20.x', '22.x', '24.x'] - java-version: ['11.x', '17.x', '21.x'] + java-version: ['17.x', '21.x'] # Reduce the combinations to reduce the total number of jobs exclude: - node-version: '20.x' java-version: '17.x' - node-version: '20.x' java-version: '21.x' - - node-version: '22.x' - java-version: '11.x' - node-version: '22.x' java-version: '21.x' - - node-version: '24.x' - java-version: '11.x' - node-version: '24.x' java-version: '17.x' fail-fast: false @@ -216,14 +212,14 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11.x' + java-version: '17.x' ############ # Publish ########## - name: Set up Maven Central Repository uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '17' distribution: 'temurin' server-id: geosolutions server-username: MAVEN_USERNAME diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4e3f2f5f5fa..5672816bebc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: - master # using filter pattern: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet - '[cC][0-9][0-9][0-9]-+**' # c123 or c123-something for custom branch - - '[0-9][0-9][0-9][0-9].[0-9][0-9].xx' # stable brances. E.g. 2021.01.xx + - '[0-9][0-9][0-9][0-9].[0-9][0-9].xx' # stable branches. E.g. 2021.01.xx - '[geonode]-[0-9].[0-9].x' # stable branches for GeoNode. E.g. geonode-4.4.x jobs: @@ -22,7 +22,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '11.x' + java-version: '17.x' ############ # CACHING ########## diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 09b8de786c0..38212a8e9a7 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -41,7 +41,7 @@ jobs: - name: "setting up Java" uses: actions/setup-java@v1 with: - java-version: '11.x' + java-version: '17.x' ############ # CACHING ########## diff --git a/.github/workflows/post_release.yml b/.github/workflows/post_release.yml index d6b564668bd..d70bf51cc42 100644 --- a/.github/workflows/post_release.yml +++ b/.github/workflows/post_release.yml @@ -21,10 +21,10 @@ jobs: script: | core.setFailed('This workflow can not run on master branch') - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11.x' + java-version: '17.x' distribution: 'adopt' cache: maven diff --git a/.github/workflows/pre_release.yml b/.github/workflows/pre_release.yml index ca21e705e1a..97b36e09ce2 100644 --- a/.github/workflows/pre_release.yml +++ b/.github/workflows/pre_release.yml @@ -37,10 +37,10 @@ jobs: script: | core.setFailed('This workflow can not run on master branch') - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '11.x' + java-version: '17.x' distribution: 'adopt' cache: maven diff --git a/binary/bin-war/pom.xml b/binary/bin-war/pom.xml index 72c10bbe1ad..792ce108f20 100644 --- a/binary/bin-war/pom.xml +++ b/binary/bin-war/pom.xml @@ -14,7 +14,7 @@ http://www.geo-solutions.it UTF-8 - 9.0.116 + 11.0.22 ${mapstore2.version} diff --git a/binary/pom.xml b/binary/pom.xml index b39feebfb82..7f055ae24ac 100644 --- a/binary/pom.xml +++ b/binary/pom.xml @@ -13,7 +13,7 @@ http://www.geo-solutions.it UTF-8 - 9.0.118 + 11.0.22 ${mapstore2.version} diff --git a/binary/tomcat/conf/web.xml b/binary/tomcat/conf/web.xml index b4fc5b61da1..09d0d44fc48 100644 --- a/binary/tomcat/conf/web.xml +++ b/binary/tomcat/conf/web.xml @@ -15,11 +15,10 @@ See the License for the specific language governing permissions and limitations under the License. --> - + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" + version="6.0"> diff --git a/docs/developer-guide/advanced-project-customization.md b/docs/developer-guide/advanced-project-customization.md index 68826f51ee3..ad5f9a68d03 100644 --- a/docs/developer-guide/advanced-project-customization.md +++ b/docs/developer-guide/advanced-project-customization.md @@ -32,12 +32,12 @@ Find the entry for `cargo-maven3-plugin` and add the `systemProperties` tag with cargo-maven3-plugin - tomcat8x + tomcat10x [local_path_to_your_datadir]/datadir/[customInstallationFolder] - https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/8.5.69/tomcat-8.5.69.zip + https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/10.1.55/tomcat-10.1.55.zip diff --git a/docs/developer-guide/configuration-files.md b/docs/developer-guide/configuration-files.md index 15eff1b1532..04a4fbb650a 100644 --- a/docs/developer-guide/configuration-files.md +++ b/docs/developer-guide/configuration-files.md @@ -139,7 +139,7 @@ java -Ddatadir.location=/path/to/data-dir -jar mapstore.war In servlet containers like Tomcat, you can set Java system properties in the `setenv.sh` file (for Unix-based systems) or `setenv.bat` file (for Windows systems) located in the `bin` directory of the Tomcat installation. -If you are using Tomcat as a service, you can set Java system properties in the service configuration file (for instance `/etc/default/tomcat9` in Ubuntu 20.04 ). +If you are using Tomcat as a service, you can set Java system properties in the service configuration file (for instance `/etc/default/tomcat10` in Ubuntu). ### `datadir.location` diff --git a/docs/developer-guide/database-setup.md b/docs/developer-guide/database-setup.md index 468d9ee8214..597e2926ef7 100644 --- a/docs/developer-guide/database-setup.md +++ b/docs/developer-guide/database-setup.md @@ -21,7 +21,7 @@ MapStore has a file called `geostore-datasource-ovr.properties`. This file is on For production deployments, consider using the [externalized configuration](externalized-configuration.md) (`-Ddatadir.location=`) instead. It provides a single data directory that centralizes all MapStore configuration files (database, proxy, JSON configs, etc.) and persists across updates. The `geostore-datasource-ovr.properties` file can simply be placed inside that directory. For instance using tomcat on linux you will have to do something like this to add the environment variable to the JAVA_OPTS -> where to add your JAVA_OPTS depends on your operating system. For instance the file could be `/etc/default/tomcat8`, or similar, in linux debian +> where to add your JAVA_OPTS depends on your operating system. For instance the file could be `/etc/default/tomcat10`, or similar, in linux debian ```properties # here the path to the ovr file diff --git a/docs/developer-guide/mapstore-migration-guide.md b/docs/developer-guide/mapstore-migration-guide.md index a295e9226db..e939c86ea9b 100644 --- a/docs/developer-guide/mapstore-migration-guide.md +++ b/docs/developer-guide/mapstore-migration-guide.md @@ -20,6 +20,139 @@ This is a list of things to check if you want to update from a previous version - Optionally check also accessory files like `.eslinrc`, if you want to keep aligned with lint standards. - Follow the instructions below, in order, from your version to the one you want to update to. +## Migration from 2026.02.00 to 2026.03.00 + +### Spring 7 / Jakarta EE 10 upgrade + +MapStore has been upgraded to Spring Framework 7 and Spring Security 7, moving from the Java EE (`javax.*`) to the Jakarta EE 10 (`jakarta.*`) platform. This is a **breaking change** for the deployment environment and for MapStore projects. + +#### New deployment requirements + +- **Java 17** is now the minimum supported version (Java 8/11 are no longer supported). The CI still tests on Java 17 and 21. +- **Tomcat 10.1** (Jakarta Servlet API 6.0) is the new reference servlet container. The binary distribution ships Tomcat 11. **Tomcat 9 or older cannot run this version of MapStore**, since they are based on the `javax.*` servlet API. + +#### Updating a MapStore project + +The following changes must be applied to your project (see the updated [project templates](https://github.com/geosolutions-it/MapStore2/tree/master/project/standard/templates) for reference): + +**`pom.xml` properties**: update the dependency versions: + +```diff +- 9.0.116 +- 2.16.1 ++ 10.1.55 ++ 2.19.4 + +- 5.3.39 +- 5.7.13 ++ 7.0.8 ++ 7.1.0 +- 1.5.4 +- 2.0.4 +- 4.5.13 +- 3.0.1 +- 2.3.1 ++ 6.0.0 ++ 4.0.3 +- 1.10.2 ++ 1.10.27 + +- 1.10-SNAPSHOT +- 2.6-SNAPSHOT +- 1.6-SNAPSHOT +- 2.3.5 ++ 1.12-SNAPSHOT ++ 2.7-SNAPSHOT ++ 1.7-SNAPSHOT ++ 2.5-SNAPSHOT +``` + +**`web/pom.xml` dependencies**: replace the `javax` artifacts with their `jakarta` equivalents and remove the dependencies that are not used anymore (`net.sf.ehcache:ehcache-web`, `commons-pool:commons-pool`): + +```diff + +- javax.servlet +- javax.servlet-api +- ${javax.servlet-api.version} ++ jakarta.servlet ++ jakarta.servlet-api ++ ${jakarta.servlet-api.version} + +- +- +- net.sf.ehcache +- ehcache-web +- ${ehcache-web.version} +- +- +- commons-pool +- commons-pool +- + +- javax.xml.ws +- jaxws-api ++ jakarta.xml.ws ++ jakarta.xml.ws-api + ${jaxws-api.version} + +``` + +**`web/pom.xml` `printing` profile**: if your project defines the `printing` profile, the same `javax` artifacts appear again in its `` section. Replace them with the `jakarta` equivalents as above, and remove the `httpclient`, `ehcache-web` and `commons-pool` entries: their version properties no longer exist in the root `pom.xml`, so a build with `-Pprinting` would fail on the unresolved placeholders. + +**`web/src/main/webapp/WEB-INF/web.xml`**: update the schema declaration to Jakarta EE 10 and remove the GZip `CompressionFilter`, together with its three `filter-mapping` entries (the filter class comes from the removed `ehcache-web` library, which is not available for the `jakarta.*` namespace): + +```diff +- ++ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"> +``` + +!!! note + The removed `CompressionFilter` used to gzip `*.js`, `*.css` and `*.html` responses out of the box. Compression has to be configured in the deployment environment instead: + + - **Tomcat exposed directly**: enable compression on the connector in `conf/server.xml`: + + ```xml + + ``` + + - **Behind a reverse proxy (recommended)**: enable gzip (or brotli) in the proxy; e.g. for nginx: + + ```nginx + gzip on; + gzip_vary on; + gzip_types text/css text/plain application/javascript application/json application/xml image/svg+xml; + ``` + + - **Docker composition**: nothing to do, compression is already enabled in the bundled nginx configuration (`docker/mapstore.conf`). + + Without it MapStore still works, but the JavaScript bundles are quite big and the first load becomes noticeably slower. + +**`WEB-INF/*-servlet.xml`** (`configs-servlet.xml`, `extensions-servlet.xml`, `loadAssets-servlet.xml`): Spring Security 7 replaced the `global-method-security` element: + +```diff +- ++ +``` + +**Security configuration overrides**: if your project overrides `geostore-spring-security.xml` (e.g. for [LDAP](integrations/users/ldap.md) or database authentication), the file must be aligned with the new Spring Security 7 syntax. Copy the updated reference files from the MapStore repository (`web/src/config/db/geostore-spring-security-db.xml`, `web/src/config/ldap/geostore-spring-security-ldap.xml`) and re-apply your customizations on top of them. + +**Cargo (local test container)**: update the container id and add the logging configuration file: + +```diff +- tomcat9x ++ tomcat10x +``` + +Copy the `logging.properties` file from the MapStore repository (`product/cargo/logging.properties`) into the `web/cargo/` folder of your project and reference it in `cargo.jvmargs` with `-Djava.util.logging.config.file=${project.basedir}/cargo/logging.properties`. Note that `${project.basedir}` points to the `web` module, where the Cargo plugin runs. New projects created from the templates already include this file. + +**Custom Java code**: any custom backend code must be migrated from the `javax.*` to the `jakarta.*` namespace (e.g. `javax.servlet.http.HttpServletRequest` → `jakarta.servlet.http.HttpServletRequest`) and compiled with source/target 17. + +**CI/CD**: update your build infrastructure to use JDK 17 as the build JDK. + ## Migration from 2026.01.02 to 2026.02.00 ### Custom map resolutions moved from `new.json` to the `CRSSelector` plugin diff --git a/docs/developer-guide/requirements.md b/docs/developer-guide/requirements.md index 361cad136d1..8b4ca4fbe3e 100644 --- a/docs/developer-guide/requirements.md +++ b/docs/developer-guide/requirements.md @@ -6,10 +6,10 @@ In this section you can have a glance of the minimum and recommended versions of You can download a java web container like *Apache Tomcat* from and *Java JRE* -| Tool | Link | Minimum | Recommended | Maximum | -|--------|----------------------------------------------------|-----------------|-------------|---------------| -| Java | [link](https://jdk.java.net/archive/) | 111 | 17 | 21 | -| Tomcat | [link](https://tomcat.apache.org/download-90.cgi) | 8.5 | 9 | 92 | +| Tool | Link | Minimum | Recommended | Maximum | +|--------|----------------------------------------------------|------------------|-------------|---------| +| Java | [link](https://jdk.java.net/archive/) | 171 | 17 | 21 | +| Tomcat | [link](https://tomcat.apache.org/download-10.cgi) | 10.12 | 10.1 | 11 | ## Debug / Build @@ -19,15 +19,15 @@ These tools needs to be installed (other than **Java** in versions above above): |-----------------------|------------------------------------------------------------|---------|-------------|-----------------| | npm | [link](https://www.npmjs.com/get-npm) | 8 | 10 | | | NodeJS | [link](https://nodejs.org/en/) | 20 | 20 | 243 | -| Java (JDK) | [link](https://jdk.java.net/archive/) | 11 | 17 | 21 | +| Java (JDK) | [link](https://jdk.java.net/archive/) | 17 | 17 | 21 | | Maven | [link](https://maven.apache.org/download.cgi) | 3.1.0 | 3.6 | | | python4 | [link](https://www.python.org/downloads/) | 2.7.9 | 3.7 | | !!! notes Here some notes about some requirements and reasons for max version indicated, for future improvements and maintenance : - - 1 Java 8 is the minimum version required for running MapStore, but it is not compatible in case you want to use the print module. In this case, you need to use Java 11. - - 2 Running with Tomcat 10 causes this issue [#7524](https://github.com/geosolutions-it/MapStore2/issues/7524). + - 1 Java 17 is the minimum version required since the upgrade to Spring 7 (see the [migration guidelines](mapstore-migration-guide.md)). Previous versions of MapStore could run on Java 8/11. + - 2 Since the upgrade to Spring 7 / Jakarta EE 10, MapStore requires a servlet container supporting the Jakarta Servlet API 6.0 (`jakarta.*` namespace): Tomcat 10.1 is the reference target, and the binary distribution ships Tomcat 11. Tomcat 9 or older (based on the `javax.*` namespace) is **not** supported anymore. - 3 Latest version tested. - 4 Python is only needed for building documentation. diff --git a/java/services/pom.xml b/java/services/pom.xml index 5eae8354eb5..0007b3dcdbd 100644 --- a/java/services/pom.xml +++ b/java/services/pom.xml @@ -86,10 +86,9 @@ - - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api @@ -143,8 +142,8 @@ 3.10.1 utf8 - 8 - 8 + 17 + 17 true UTF-8 - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api - - net.sf.ehcache - ehcache-web - - - - commons-pool - commons-pool - - - javax.xml.ws - jaxws-api + jakarta.xml.ws + jakarta.xml.ws-api diff --git a/java/web/src/main/webapp/WEB-INF/configs-servlet.xml b/java/web/src/main/webapp/WEB-INF/configs-servlet.xml index 247b9626c26..dceda537f3b 100644 --- a/java/web/src/main/webapp/WEB-INF/configs-servlet.xml +++ b/java/web/src/main/webapp/WEB-INF/configs-servlet.xml @@ -13,7 +13,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/java/web/src/main/webapp/WEB-INF/extensions-servlet.xml b/java/web/src/main/webapp/WEB-INF/extensions-servlet.xml index ab32ad3d736..b53c78d8c91 100644 --- a/java/web/src/main/webapp/WEB-INF/extensions-servlet.xml +++ b/java/web/src/main/webapp/WEB-INF/extensions-servlet.xml @@ -13,7 +13,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/java/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml b/java/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml index c1c1ab9387d..a6e59eb1f14 100644 --- a/java/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml +++ b/java/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml @@ -13,7 +13,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/java/web/src/main/webapp/WEB-INF/web.xml b/java/web/src/main/webapp/WEB-INF/web.xml index 5da51060fce..b1b3ca70402 100644 --- a/java/web/src/main/webapp/WEB-INF/web.xml +++ b/java/web/src/main/webapp/WEB-INF/web.xml @@ -1,7 +1,7 @@ - + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"> @@ -54,23 +54,6 @@ /rest/* - - - CompressionFilter - net.sf.ehcache.constructs.web.filter.GzipFilter - - - CompressionFilter - *.css - - - CompressionFilter - *.html - - - CompressionFilter - *.js - noCacheFilter diff --git a/pom.xml b/pom.xml index bb0c9934f5f..7fe32f8f127 100644 --- a/pom.xml +++ b/pom.xml @@ -13,44 +13,39 @@ 8080 - 9.0.116 - 2.16.1 - 31.3 + 10.1.55 + 2.19.4 4.2.12 32.0.0-jre 2.6 3.4.0 - 5.3.39 - 5.7.13 + 7.0.8 + 7.1.0 3.2.2 2.14.0 1.2 - 1.5.4 - 2.0.4 - 4.5.13 - 3.0.1 - 2.3.1 + 6.0.0 + 4.0.3 2.4.2-geoserver 1.13 4.13.2 - 2.19.0 + 2.26.0 2.1.3 4.0.0 1.7.25 - 1.10.2 + 1.10.27 - 2.6-SNAPSHOT - 2.3.5 - 1.6-SNAPSHOT + 2.7-SNAPSHOT + 2.5-SNAPSHOT + 1.7-SNAPSHOT - 2.3 - 3.18.0 + 3.20.0 1.13.0 @@ -140,13 +135,6 @@ - - - org.apache.httpcomponents - httpclient - ${httpclient.version} - - junit junit @@ -160,24 +148,9 @@ test - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - - - net.sf.ehcache - ehcache-web - ${ehcache-web.version} - - - commons-pool - commons-pool - ${commons-pool.version} - - - commons-lang - commons-lang - ${commons-lang-version} + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} org.apache.commons @@ -203,8 +176,8 @@ - javax.xml.ws - jaxws-api + jakarta.xml.ws + jakarta.xml.ws-api ${jaxws-api.version} @@ -223,6 +196,22 @@ javax.annotation javax.annotation-api + + jakarta.activation + jakarta.activation-api + + + jakarta.annotation + jakarta.annotation-api + + + jakarta.xml.bind + jakarta.xml.bind-api + + + jakarta.xml.soap + jakarta.xml.soap-api + @@ -264,7 +253,7 @@ - + it.geosolutions.geostore geostore-webapp @@ -359,6 +348,10 @@ org.apache.httpcomponents httpcore + + jakarta.xml.bind + jakarta.xml.bind-api + @@ -458,6 +451,30 @@ binary + + owasp + + + owasp + + + + + + org.owasp + dependency-check-maven + 12.2.2 + + + + check + + + + + + + @@ -498,19 +515,6 @@ - - org.owasp - dependency-check-maven - 9.0.9 - - true - - - - check - - - diff --git a/product/cargo/logging.properties b/product/cargo/logging.properties new file mode 100644 index 00000000000..0bee6b30e0c --- /dev/null +++ b/product/cargo/logging.properties @@ -0,0 +1,79 @@ +# 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. + +handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.AsyncFileHandler.level = ALL +1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. +1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 +1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +2localhost.org.apache.juli.AsyncFileHandler.level = ALL +2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. +2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 +2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +3manager.org.apache.juli.AsyncFileHandler.level = ALL +3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.AsyncFileHandler.prefix = manager. +3manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +4host-manager.org.apache.juli.AsyncFileHandler.level = ALL +4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. +4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +java.util.logging.ConsoleHandler.level = ALL +java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter +java.util.logging.ConsoleHandler.encoding = UTF-8 + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages for HTTP/2 handling, uncomment the following line: +#org.apache.coyote.http2.level = FINE + +# To see debug messages for WebSocket handling, uncomment the following line: +#org.apache.tomcat.websocket.level = FINE + +# MapStore debugging +#org.apache.catalina.core.StandardContext.level = FINE diff --git a/product/config/db/geostore-spring-security-db.xml b/product/config/db/geostore-spring-security-db.xml index 9964684ac35..a6ab9a3a2e0 100644 --- a/product/config/db/geostore-spring-security-db.xml +++ b/product/config/db/geostore-spring-security-db.xml @@ -15,38 +15,54 @@ - + - + - + + + + + + + - + - + - + - + - - + diff --git a/product/config/ldap/geostore-spring-security-ldap.xml b/product/config/ldap/geostore-spring-security-ldap.xml index fc35f22c8d5..9916bd2970e 100644 --- a/product/config/ldap/geostore-spring-security-ldap.xml +++ b/product/config/ldap/geostore-spring-security-ldap.xml @@ -18,15 +18,16 @@ - + - + + @@ -37,13 +38,17 @@ class="it.geosolutions.geostore.services.rest.security.UserServiceAuthenticationProvider"> - - + + - - + + diff --git a/product/pom.xml b/product/pom.xml index c2b79945cc0..2c2fdb6c1ea 100644 --- a/product/pom.xml +++ b/product/pom.xml @@ -276,7 +276,7 @@ ${cargo.version} - tomcat9x + tomcat10x ${datadir.location} ${security.integration} @@ -297,6 +297,7 @@ ${backend.debug.args} --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED + -Djava.util.logging.config.file=${project.basedir}/cargo/logging.properties ${tomcat.port} low diff --git a/project/standard/templates/pom.xml b/project/standard/templates/pom.xml index 46578a0e9c7..fd17a39eb5c 100644 --- a/project/standard/templates/pom.xml +++ b/project/standard/templates/pom.xml @@ -12,28 +12,28 @@ UTF-8 8080 - 9.0.116 - 2.16.1 + 10.1.55 + 2.19.4 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8989 2.6 3.4.0 + - 5.7.13 - 5.3.39 + 7.0.8 + 7.1.0 + - 1.5.4 - 2.0.4 - 4.5.13 - 3.0.1 - 2.3.1 + 6.0.0 + 4.0.3 4.13.2 4.0.0 - 1.10.2 + 1.10.27 + - 1.10-SNAPSHOT - 2.6-SNAPSHOT - 1.6-SNAPSHOT - 2.3.5 + 1.12-SNAPSHOT + 2.7-SNAPSHOT + 1.7-SNAPSHOT + 2.5-SNAPSHOT diff --git a/project/standard/templates/web/cargo/logging.properties b/project/standard/templates/web/cargo/logging.properties new file mode 100644 index 00000000000..0bee6b30e0c --- /dev/null +++ b/project/standard/templates/web/cargo/logging.properties @@ -0,0 +1,79 @@ +# 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. + +handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.AsyncFileHandler.level = ALL +1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. +1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 +1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +2localhost.org.apache.juli.AsyncFileHandler.level = ALL +2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. +2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 +2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +3manager.org.apache.juli.AsyncFileHandler.level = ALL +3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.AsyncFileHandler.prefix = manager. +3manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +4host-manager.org.apache.juli.AsyncFileHandler.level = ALL +4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. +4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +java.util.logging.ConsoleHandler.level = ALL +java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter +java.util.logging.ConsoleHandler.encoding = UTF-8 + + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +#org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages for HTTP/2 handling, uncomment the following line: +#org.apache.coyote.http2.level = FINE + +# To see debug messages for WebSocket handling, uncomment the following line: +#org.apache.tomcat.websocket.level = FINE + +# MapStore debugging +#org.apache.catalina.core.StandardContext.level = FINE diff --git a/project/standard/templates/web/pom.xml b/project/standard/templates/web/pom.xml index 18b238fd7f7..b05476a443e 100644 --- a/project/standard/templates/web/pom.xml +++ b/project/standard/templates/web/pom.xml @@ -59,21 +59,9 @@ - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - - - - net.sf.ehcache - ehcache-web - ${ehcache-web.version} - - - - commons-pool - commons-pool - ${commons-pool.version} + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} @@ -393,7 +381,7 @@ ${cargo.version} - tomcat9x + tomcat10x https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/${tomcat.version}/tomcat-${tomcat.version}.zip @@ -410,6 +398,7 @@ ${backend.debug.args} --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED + -Djava.util.logging.config.file=${project.basedir}/cargo/logging.properties ${tomcat.port} low @@ -472,11 +461,6 @@ - - org.apache.httpcomponents - httpclient - ${httpclient.version} - junit @@ -492,25 +476,13 @@ - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - - - - net.sf.ehcache - ehcache-web - ${ehcache-web.version} - - - - commons-pool - commons-pool - ${commons-pool.version} + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} - javax.xml.ws - jaxws-api + jakarta.xml.ws + jakarta.xml.ws-api ${jaxws-api.version} diff --git a/project/standard/templates/web/src/main/webapp/WEB-INF/configs-servlet.xml b/project/standard/templates/web/src/main/webapp/WEB-INF/configs-servlet.xml index 9eddc998119..9cf39d6c417 100644 --- a/project/standard/templates/web/src/main/webapp/WEB-INF/configs-servlet.xml +++ b/project/standard/templates/web/src/main/webapp/WEB-INF/configs-servlet.xml @@ -12,7 +12,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/project/standard/templates/web/src/main/webapp/WEB-INF/extensions-servlet.xml b/project/standard/templates/web/src/main/webapp/WEB-INF/extensions-servlet.xml index 206c71b8f40..25d0d06bf9d 100644 --- a/project/standard/templates/web/src/main/webapp/WEB-INF/extensions-servlet.xml +++ b/project/standard/templates/web/src/main/webapp/WEB-INF/extensions-servlet.xml @@ -12,7 +12,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/project/standard/templates/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml b/project/standard/templates/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml index 28d407bae18..220ee5b9e59 100644 --- a/project/standard/templates/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml +++ b/project/standard/templates/web/src/main/webapp/WEB-INF/loadAssets-servlet.xml @@ -12,7 +12,7 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> - + diff --git a/project/standard/templates/web/src/main/webapp/WEB-INF/web.xml b/project/standard/templates/web/src/main/webapp/WEB-INF/web.xml index 03b4a380c06..869be321bfb 100644 --- a/project/standard/templates/web/src/main/webapp/WEB-INF/web.xml +++ b/project/standard/templates/web/src/main/webapp/WEB-INF/web.xml @@ -1,7 +1,7 @@ - + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"> @@ -54,24 +54,6 @@ /rest/* - - - CompressionFilter - net.sf.ehcache.constructs.web.filter.GzipFilter - - - CompressionFilter - *.css - - - CompressionFilter - *.html - - - CompressionFilter - *.js - - noCacheFilter diff --git a/web/src/config/db/geostore-spring-security-db.xml b/web/src/config/db/geostore-spring-security-db.xml index 994fb4ed9ae..6f77fef8a5f 100644 --- a/web/src/config/db/geostore-spring-security-db.xml +++ b/web/src/config/db/geostore-spring-security-db.xml @@ -15,37 +15,54 @@ - + - + - + + + + + + + - + - + - + - + - + diff --git a/web/src/config/ldap/geostore-spring-security-ldap.xml b/web/src/config/ldap/geostore-spring-security-ldap.xml index ff7e73f22a0..6d3242f30ff 100644 --- a/web/src/config/ldap/geostore-spring-security-ldap.xml +++ b/web/src/config/ldap/geostore-spring-security-ldap.xml @@ -18,15 +18,16 @@ - + - + + @@ -37,13 +38,17 @@ class="it.geosolutions.geostore.services.rest.security.UserServiceAuthenticationProvider"> - - + + - - + + @@ -108,9 +113,9 @@ - - - + + + +