Examples#
Ready-to-run applications in
examples/ to try Verbatime on. Each
one runs in Docker Compose and builds the agent from the repository.
You need Docker with Compose v2, and JDK Mission Control with the Verbatime plugin.
Try one#
- Start an example.
cd examples/spring-boot-mvc docker compose up --build - Within 60 seconds, connect JDK Mission Control to
localhost:7091and press Start recording. The roots are already set, and startup is recorded too. - Send load for 30 seconds.
docker compose --profile load run --rm load - Press Stop recording, then shut the example down.
docker compose down -v
Run one example at a time. They all use port 8080 for HTTP and port 7091 for JMX.
Pick an example#
Every example runs the same small order workload, so their recordings are easy to compare.
Web servers#
| Example | What it shows |
|---|---|
plain-httpserver |
The JDK's built-in HTTP server, with no framework |
spring-boot-mvc |
Spring Boot MVC on embedded Tomcat |
thymeleaf |
Spring Boot MVC rendering HTML with Thymeleaf |
scheduled-task |
Spring Boot running the work from @Scheduled |
undertow |
Embedded Undertow with a blocking handler |
helidon-se |
Helidon SE on virtual threads |
micronaut |
Micronaut on Netty |
quarkus |
Quarkus REST in JVM mode |
WAR on an application server#
| Example | What it shows |
|---|---|
tomcat-war |
A WAR of plain servlets on Tomcat |
jetty-war |
The same WAR on Jetty |
wildfly-war |
The same WAR on WildFly, which loads classes through JBoss Modules |
open-liberty-war |
The same WAR on Open Liberty, an OSGi runtime on OpenJ9 |
Databases#
Each of these starts PostgreSQL in its own container.
| Example | What it shows |
|---|---|
jdbc-hibernate |
Spring Data JPA with Hibernate and HikariCP |
mybatis |
A MyBatis mapper |
r2dbc |
Reactive database access with Spring Data R2DBC |
Async and messaging#
| Example | What it shows |
|---|---|
spring-boot-webflux |
Spring Boot WebFlux on Reactor Netty |
virtual-threads |
spring-boot-mvc on virtual threads |
ktor-coroutines |
A Kotlin suspend handler in Ktor that switches dispatchers |
kafka-consumer |
Spring Boot sending to and consuming from Kafka |
grpc |
A grpc-java unary service |
Tests and batch jobs#
These record from startup to exit and write the recording to their recordings/ directory. See
Agent alone.
| Example | What it shows |
|---|---|
junit-maven |
JUnit tests run by Maven Surefire |
junit-gradle |
JUnit tests run by Gradle |
spring-batch |
A Spring Batch job that runs and exits |
Options#
Set these when you run docker compose up.
| Variable | What it does |
|---|---|
VERBATIME_EXTRA |
Adds agent arguments |
JMX_HOST |
The host name JDK Mission Control connects to, instead of localhost |
VERBATIME_JVM_EXTRA |
Adds JVM options. Only in open-liberty-war |
Set the same values for the load command too. Otherwise Compose restarts the application, and
the recording with it.