This is an implementation of the Opbeans Demo app in Java as an Spring Boot application . It uses the same database schema as the Node version.
By default it will use a pre-populated in memory H2 database.
To run the application run the following command from the opbeans
folder:
./mvnw spring-boot:run
To run locally, including Server, Kibana and Elasticsearch, use the provided docker compose file by running the command
docker compose up
- Start Elastic Cloud trial (if you don't have it yet)
- Add environmental variables
ELASTIC_CLOUD_ID
andELASTIC_CLOUD_CREDENTIALS
(in formatlogin:password
) - Add environmental variable
STACK_VERSION
to match your deployed Elasticsearch version. - Run
docker compose -f docker-compose-elastic-cloud.yml up
The simplest way to test this demo is by running:
make test
Tests are written using bats under the tests dir
Publish the docker image with
VERSION=1.2.3 make publish
NOTE: VERSION refers to the tag for the docker image which will be published in the registry
Database can be overridden by using system properties and overriding values from the application property files:
./mvnw spring-boot:run -Dspring.jpa.database=POSTGRESQL -Dspring.datasource.driverClassName=org.postgresql.Driver -Dspring.datasource.url=jdbc:postgresql://localhost/opbeans?user=postgres&password=verysecure
Another possible way is to create a different property file like application-customdb.properties and enabling it with a profile:
./mvnw spring-boot:run -Dspring.profiles.active=customdb
The application has a built-in bug that you can trigger by
navigating to the path /is-it-coffee-time
.
The Opbeans Java can use the APM Agent Java or the OpenTelemetry java implementation
in order to choose one of other you have to set the environment variable APM_AGENT_TYPE
to elasticapm
when you use the APM Agent Java and opentelemetry
to use OpenTelemetry java implementation.
Finally, there is also the none
value that will make Opbeans run without any instrumentation agent.
When OpenTelemetry agent is enabled, the OpenTelemetry environment variables should be properly set to allow the application to send spans created through manual instrumentation. see the docker-compose file for more details about the environment variables, and OpenTelemetry SDK Autoconfigure for more details.