Skip to content

GeoServer Cloud 3.0.0

Latest

Choose a tag to compare

@groldan groldan released this 17 Jun 22:49
· 2 commits to main since this release
v3.0.0
37692d6

GeoServer Cloud 3.0.0 is the first release built on GeoServer 3.0.0. Beyond tracking the new upstream major, this release modernizes the entire foundation of the platform: a move to the Spring Boot 4 / Spring Framework 7 generation, a servlet-based API gateway, Consul service discovery, and a new build-time configuration transpiler that replaces GeoServer's runtime XML wiring with generated Java configuration. The result is a faster, leaner, and more maintainable cloud-native GeoServer.

This is a major release with breaking changes. Please read the Migration Guide (2.28.x to 3.0.0) before upgrading.

Highlights

  • Built on GeoServer 3.0.0, inheriting its features and security hardening.
  • Spring Boot 4 / Spring Framework 7 / Spring Cloud 2025.1 across all services.
  • Servlet-based API gateway: the gateway moves from WebFlux to Spring Cloud Gateway Server MVC, simplifying request handling and aligning the whole stack on a single (WebMVC) programming model (#782, #819).
  • HashiCorp Consul replaces Netflix Eureka for service discovery (#798).
  • XML-to-Java configuration transpiler: a new annotation processor converts GeoServer's Spring XML into generated Java @Configuration, with build-time @Bean generation replacing runtime component scanning, for faster, more predictable startup (#805, #817, #832).
  • Faster startup: JVM AOT cache training baked into the images (#818), parallel JNDI DataSource setup (#812), and a startup actuator endpoint for monitoring (#768).
  • Native multi-platform Docker builds on per-architecture runners, replacing QEMU emulation (#820).
  • Refreshed UI: the initial GeoServer 3 theme (#793) and a full-screen OpenLayers 10 layer preview (#800).
  • GeoServer ACL 3.0.0 integration (#869, #829, #821).

API Gateway and Web Stack

  • Replace the WebFlux gateway with Spring Cloud Gateway Server MVC (#782).
  • Switch the gateway to a reactor-netty HTTP client, with improved error handling and graceful shutdown via actuator (#819).
  • Remove the controller hack for OWS service endpoints and clean up handler-mapping migration (#766, #767).
  • Fix GWC virtual service URLs (#767).

Configuration Transpiler

  • Replace GeoServer XML Spring configurations with Java @Configuration generated by a new transpiler annotation processor (#805).
  • Replace runtime component scanning with build-time @Bean generation (#817).
  • Fix transpiler handling of package-private types and dotted bean names (#832).
  • Refactor catalog/config Jackson DTOs for a clean, consistent distinction from the actual object class names (#765).

Service Discovery and Messaging

  • Migrate service discovery from Netflix Eureka to HashiCorp Consul (#798).
  • Fix RabbitMQ 4.x rejecting Spring Cloud Bus anonymous queue declarations (#835).
  • Fix the spring.cloud.bus.destination property for Spring Cloud 2025.1 (#813).

GeoWebCache

  • Backwards-compatible serialization for GeoServerTileLayerInfo after [GEOS-12049] removed GWC in-memory support (#779).
  • Enable GWC DiskQuota with the pgconfig backend, with expanded REST API integration tests (#862, #864).
  • Fix a "not found" error when deleting a layer with the pgconfig backend (#867).

pgconfig Catalog Backend

  • Cascade workspace changes to resources and layer groups (#856).
  • Evict cached layer lists on workspace/namespace rename (#857).
  • Tighten simplejndi cohesion and decouple pgconfig at runtime (#823).

Performance and Build

  • Add JVM AOT cache training to the Docker images for faster startup (#818).
  • Replace QEMU-emulated multi-platform builds with native per-platform runners (#820).
  • Set up JNDI DataSources in parallel (#812).
  • Enable the actuator startup endpoint for performance monitoring (#768).

Compatibility and Data

  • Disable DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES when parsing catalog objects, and add backwards-compatibility tests for Jackson 2 JSON property naming (#761, #764).
  • Fix an error that prevented saving customized feature type attributes (#759).
  • Fix an NPE caused by PMTiles layer groups (#755).

User Interface

  • Initial GeoServer 3 theme ([GEOS-12063] / [GSIP-238], #793).
  • Full-screen OpenLayers 10.0.8 layer preview ([GEOS-12067], #800).

Documentation

  • Reorganize deployment documentation around local Kubernetes onboarding (#833).
  • Document the Docker image architecture (#751).
  • Add SECURITY.md (#851), supporters documentation (#786), and contributor recognition guidance (#787).

Breaking Changes

See the Migration Guide for details and steps. In short:

  • Service discovery: Eureka is replaced by Consul (hashicorp/consul), affecting Docker Compose and Kubernetes deployments.
  • Gateway: now servlet-based (Spring Cloud Gateway Server MVC) instead of WebFlux.
  • Docker Compose profiles: the config-first profile is no longer included by default in the base service templates and must be set explicitly when using the Config Server.
  • Removed: the JDBC catalog/config backend and the leftover geoserver.security.enabled property (#777).
  • Message broker: RabbitMQ 4.x is supported and used by the example deployments; the Spring Cloud Bus uses transient queues, so no broker data migration is required.
  • Versioning: GeoServer Cloud now follows GeoServer's version (3.0.0) instead of the previous four-part scheme.

Contributors

Thanks to everyone who made this release possible: @groldan, @vuilleumierc, and @jemacchi.

Full Changelog: v2.28.4.0...v3.0.0