Broadleaf Microservices
  • v1.0.0-latest-prod

Broadleaf Microservices Starter Base Release Notes

2.0.0-GA

Spring Boot Upgrade

  • As of Broadleaf Release Train 3.0.0-GA, all common libraries have been upgraded to support Spring Boot 4.1 and Java 25.

New Features & Support

  • Build client projects on Java 25 by default. Java 17 and 21 remain accepted values for javaMajorVersion; a project that does not set one explicitly now builds on 25, and the generated Dockerfile’s builder image is pinned per target version.

  • Generate right-sized JVM and pod resources in the Helm charts, replacing the single shared heap setting.

    • Each flex package and the gateway now receive their own JAVA_OPTS — heap, metaspace, compressed class space, code cache and an explicit MaxDirectMemorySize — sized per package from observed steady-state usage rather than inheriting -Xmx1500m from the shared environment configMap. BROADLEAF_CACHE_CAFFEINE_HEAP bounds the on-heap Caffeine tier, which otherwise defaults to 1000MB.

    • Memory request equals memory limit, sized to cover the JVM ceiling plus the native memory Kubernetes counts against a container but the JVM does not manage — thread stacks, GC structures, JIT scratch and allocator arenas. Under-budgeting that headroom is the usual cause of OOMKilled (exit 137) on a pod whose heap looks healthy.

    • CPU is set as a low request with a higher burst limit, so startup and traffic spikes are not throttled. The explicit CPU request also works around a cgroup v2 issue: when no container in the pod requests CPU, the runtime does not delegate the cpu controller to the pod’s cgroup, and an injected native sidecar such as the OpenTelemetry collector then fails to start the pod.

    • JAVA_OPTS and BROADLEAF_CACHE_CAFFEINE_HEAP are now required values in the flex and gateway deployment templates. A chart rendered from an existing values-<env>.yaml that supplies neither fails rather than falling back to a default. Add both to any environment overlay, and review the generated resources block before rolling out — pods that previously ran without limits will now have them.

    • The shared JAVA_OPTS and SPRING_CACHE_TYPE entries are removed from the common environment configMap. See the memory sizing guidance for how the values are derived, and override resources or JAVA_OPTS per environment as needed.

  • Extract application layers in the generated Dockerfile with the tools jarmode, since Spring Boot 4 removes layertools. The exploded layout now sits under extracted/; a customized Dockerfile or image build that referenced the old top-level dependencies/, application/, spring-boot-loader/ or snapshot-dependencies/ paths needs updating.

  • Use the JDK-based Kubernetes client transport in place of fabric8’s Vert.x default, which requires an older Netty than the managed version. This restores Camel lease updates in clustered deployments.

Bug Fixes

  • Fix a startup failure caused by a secure property whose name resolves to blank — for example an entry beginning with _EXTENSION. Such properties are now skipped with a warning naming the offending entry and its BROADLEAF_SECURE_ENV_DIR_PATH source, instead of aborting the application. An empty set of manifest security properties is no longer contributed at all.

  • Fix intermittent data loader failures and duplicated schema rows caused by concurrent Liquibase scope collisions and races in progress-bar rendering across the parallel loader threads.

1.1.8-GA

New Features & Support

  • Updated Data module to support Spring Boot 3.3 & 3.5.

  • Added support for KRaft Strimzi, see more details in our Kafka + KRaft + Strimzi Operator documentation.

  • Enhanced JpaEntityScanScope to allow for inclusion and exclusion conditions, instead of relying on missing classpath entries alone.

  • Added support for custom flex component profile configurations.

  • Added support for subscription and workflow components.

  • Enhanced diagnostic logging of Data module failures.

  • Added support for downloading ConfigServer assembly.

  • Added new properties for Services

    • Registered new pricingclient OAuth2 credentials.

    • Added new offerprovider and cancellationpolicyprovider configurations for Subscription Operation Service workflows.

    • Added new orderprovider configuration for Pricing Service, Inventory Service, Notification Service, and Subscription Operation Service.

Bug Fixes

  • Fixed a bug to ensure the scheduledjob component now references the processing flex package instead of the supporting flex package in the SecurityTool.

  • Fixed a bug for evaluation credential users that prevented access to zookeeper and kafka images.

  • Fixed a bug where the library component override file is not found for components using an altName.