Welcome to the Java Enterprise Application Platform (jEAP) umbrella repository. jEAP provides a suite of libraries and tools designed to assist in developing Java-based software applications based on Spring Boot. Each jEAP repository addresses specific cross-functional needs, including but not limited to logging, monitoring, messaging, security and encryption.
The jEAP suite provides developers with a set of ready-to-use solutions for common challenges when developing enterprise applications using Spring Boot. Building on the blueprint provided by jEAP allows you to focus on business logic and functionality, with jEAP providing solutions for the reusable cross-functional aspects.
This umbrella repository is a guide to the individual components of the jEAP suite. We recommend exploring each repository to understand how it can be applied to your projects.
This repository is Open Source Software licensed under the Apache License 2.0.
Here is a list of all the repositories in the jEAP umbrella, along with a brief description of their purpose:
-
jeap-archrepo-service Service template which provides a centralized system for automatically managing and documenting the application architecture inventory. A service instance can be created by depending on this template, then adding specific configuration.
-
jeap-audit This library simplifies the process of creating and dispatching audit records by offering a fluent builder API for the CreateAuditRecordCommand, ensuring consistent audit record structure across all jEAP-based services. The library supports reliable audit record delivery through integration with the messaging-outbox pattern, guaranteeing that audit commands are persistently stored and eventually delivered even in the face of system failures.
-
jeap-bptest-orchestrator Service providing an orchestrator for business process tests
-
jeap-bptestagent-api TestAgent API for Business Process Tests
-
jeap-cli A command-line interface (CLI) tool for interacting with source code repositories using jEAP. Automates tasks such as updating dependencies and migrating to new Java or Spring Boot versions.
-
jeap-crypto Provides utilities for client-side encryption of data-at-rest.
-
jeap-db-schema-publisher
Publishes database schemas to the Architecture Repository at startup of a Spring Boot application. This is useful for documenting DB schema definitions and creating data catalogs. -
jeap-deploymentlog-service Service template to trace the deployments of microservice on stages. A service instance can be created by depending on this template, then adding specific configuration.
-
jeap-error-handling Service template to support error handling patterns for errors, i.e. retry for temporary issues, persistence and retry/handling for permanent errors. A service instance can be created by depending on this template, then adding specific configuration.
-
jeap-governance-service Service template to provide a quick overview of system and service compliance with defined policies. A service instance can be created by depending on this template,then adding specific configuration and extending it with plugin implementations.
-
jeap-initializer This library enables generating ready-to-use codebases for bootstrapping projects. It creates code based on existing, working and tested project templates hosted in Git repositories.
-
jeap-internal-spring-boot-parent Internal Spring Boot parent project for jEAP. Manages the Spring Boot version and inherits dependency management for common dependencies from Spring Boot. Also provides common Maven Plugin pre-configuration to streamline project setup. This parent is mostly used jEAP-internally by jEAP libraries.
-
jeap-license-template Provides a template for the Maven License Plugin to generate a markdown file listing third-party dependency licenses.
-
jeap-message-contract-service Service template to manage messaging contracts used in compatibility checks upon deployment of a service, similar to consumer-driven contract testing. A service instance can be created by depending on this template, then adding specific configuration.
-
jeap-message-exchange-service Service template for exchanging incoming and outgoing messages with external parties, using an HTTP-based messagebox API. A service instance can be created by depending on this template, then adding specific configuration.
-
jeap-message-type-registry Defines standardized message types used by jEAP libraries and products.
-
jeap-messaging Supports applications by providing messaging functionality based on Avro and Spring Kafka. Also eases integration of different Kafka authenthication mechanism, and implements the Transactional Outbox pattern in a re-usable library.
-
jeap-messaging-outbox This library is an implementation of the Transactional outbox pattern
-
jeap-messaging-sequential-inbox This library allows to configure the order in which messages will be processed in a microservice, which may be different from the order in which the messages were received.
-
jeap-oauth-mock-server Service which provides a configurable OAuth2/OpenID-Connect server for local development and testing.
-
jeap-process-archive-reader This library can be used to retrieve an object from the process archive (S3) and convert it directly into the target object.
-
jeap-process-archive-service Service template that provides a way to archive artifacts pertaining to a process. Such artifacts might be required to be archived for audit purposes or due to business requirements. A service instance can be created by depending on this template,then adding specific configuration and extending it with plugin implementations.
-
jeap-archive-type-registry Archive type registry used internally by jEAP libraries and products. Contains for example the definition of the Process Snapshot archive type.
-
jeap-process-context-service Service template that provides a way to store and retrieve context information pertaining to a process. This context information might be required to be stored for audit purposes or due to business requirements. A service instance can be created by depending on this template,then adding specific configuration and extending it with plugin implementations.
-
jeap-server-sent-events This library provides a way to send real-time events from the server to the client using Server-Sent Events (SSE). It allows for efficient and scalable communication between the server and the client, enabling real-time updates and notifications.
-
jeap-spring-boot-config-aws-starter Integrates with AWS AppConfig and AWS Secrets Manager.
-
jeap-spring-boot-db-migration-starter Spring Boot starter for running DB migrations as separate jobs (i.e. on k8s).
-
jeap-spring-boot-parent A Maven parent inheriting from
jeap-internal-spring-boot-parent. Its main purpose is managing the versions of jEAP dependencies such as jEAP Starters, jEAP Messaging and jEAP Crypto. This is the Maven parent applications based on jEAP should use. -
jeap-spring-boot-starters Contains various Spring Boot starters to simplify application setup and configuration. See jeap-spring-boot-starters/README.md for a full list of the provided starters.
-
jeap-spring-boot-tls-starter This library enables TLS on the Spring Boot web server and optionally generates a certificate at startup, suitable for encrypted communication between an AWS ALB and the Spring Boot application.
-
jeap-spring-boot-roles-anywhere-starter This library provides seamless integration with AWS IAM Roles Anywhere in Spring Boot. Enables secure, certificate-based credentials without external helper tools.
-
jeap-test-message-type-registry Message type registry used internally by jEAP for testing purposes.
-
jeap-truststore-maven-plugin A Maven plugin for generating Java trust stores, making it easy to handle certificate management.
To build jEAP libraries from source, you will usually be able to start a build using the provided Apache Maven Wrapper script in the repository. The following command will build the project, run all tests and install the library in your local Apache Maven repository:
./mvnw installNote that jEAP libraries may have additional build requirements, such as specific Java versions. Please refer to the individual repository's README.md or pom.xml for more information.
jeap-messaging libraries that serialize/deserialize Kafka records using a Confluent Avro Schema Registry require dependencies from the Confluent Maven Repository. To build these libraries, you need to configure the Confluent repository either in your Maven settings.xml or locally in the repository's pom.xml. For more information, please refer to the Maven documentation and the Confluent Java Client documentation.
<repositories>
<repository>
<id>confluent</id>
<url>https://packages.confluent.io/maven/</url>
</repository>
</repositories>If you would like to report a potential security issue in a jEAP repository, please follow the procedure described in SECURITY.md.
At this point in time, jEAP is released as open source software based on the EMBAG law.
We do not currently accept external contributions. Please refrain from providing code changes or pull requests as we are unable to accept them.
For questions, please contact the maintainers at jeap-community@bit.admin.ch.