BootUI
Try it
Setup
Features
Workshop
Properties
AI agents
Ecosystem
GitHub
Try it
Setup
Features
Workshop
Properties
AI agents
Ecosystem
GitHub
  • Get started

    • Try the sample app
    • Setup
    • Spring WebFlux
    • Quarkus
    • Java agent
    • Activation and safety
    • Non-standard runtimes
    • Troubleshooting
  • Workshop

    • Workshop overview
    • 00 - Runtime understanding
    • 01 - Setup and tooling
    • 02 - Configuration and wiring
    • 03 - Runtime journal
    • 04 - Runtime Insights
    • 05 - Java instrumentation
    • 06 - Assessment and impact
    • 07 - Agent change loop
    • 08 - Going further
    • Participant worksheet
    • A - Prompts
    • B - Troubleshooting
    • C - Frameworks
    • D - Extensions
  • Features

    • All features
    • Scorecard
    • Live Activity
    • Runtime Insights
    • Advisors
    • Runtime
    • Configuration
    • Database
    • Security
    • Services
    • Diagnostics
    • Java Agent
    • Developer tools
  • Reference

    • Properties
    • Framework support
    • AI agents
    • Command line
    • BootUI family
    • Known limitations
  • Diagnostic checks

    • Architecture
    • REST API
    • Spring
    • Hibernate
    • Database
    • Security
    • Vulnerabilities
    • Memory
    • Pentesting
    • GraalVM readiness
    • CRaC readiness
    • Quarkus
    • Quarkus security
  • Contributing

    • Repository
    • Specification
    • Implementation plan
    • v2 plan
    • Try 2.0 early
    • v2 validation report
    • Releasing 2.0
    • Quarkus design notes
    • WebFlux design notes
  • Privacy

Appendix C - Frameworks

The three-hour core uses Spring MVC because it supplies the full reference fixture and transaction evidence. BootUI serves the same Vue console/JSON contracts on Spring WebFlux and Quarkus, but availability is capability-specific. Do not execute MVC-only fixture URLs on another sample and call a 404 missing evidence.

Spring MVC reference

Use Chapters 01 and 05's launchers. JDBC SQL durations, transaction capture, and eager JPA fixtures support the capstone. BootUI does not supply your application's authentication or database permissions.

See Spring setup and activation.

Spring WebFlux

In a separate terminal/port and disposable release clone:

./bootui-spring-webflux-sample-app/run-local.sh \
  '-Dspring-boot.run.arguments=--server.address=127.0.0.1 --server.port=8086'

For instrumentation, stop that JVM first, then:

./bootui-spring-webflux-sample-app/run-local-agent.sh \
  '-Dspring-boot.run.arguments=--server.address=127.0.0.1 --server.port=8086'

Use http://localhost:8086/bootui. The starter is the same; WebFlux is selected by the application. The launcher warms its own module/agent dependencies.

On Windows, warm and launch with the wrapper:

.\mvnw.cmd -B -ntp "-Dmaven.repo.local=.m2" `
  -pl "bootui-spring-webflux-sample-app,bootui-agent" -am install "-DskipTests"
if ($LASTEXITCODE -ne 0) { throw "WebFlux warm build failed" }
$agent = (Resolve-Path "bootui-agent/target/bootui-agent-2.1.0.jar" -ErrorAction Stop).Path
if ($agent.Contains(",")) { throw "Use an agent jar path without commas" }
.\mvnw.cmd -B -ntp "-Dmaven.repo.local=.m2" "-Dmaven.test.skip=true" `
  -pl bootui-spring-webflux-sample-app spring-boot:run "-Dspring-boot.run.profiles=dev" `
  "-Dspring-boot.run.agents=$agent" `
  "-Dspring-boot.run.arguments=--server.address=127.0.0.1 --server.port=8086"

Choose a route from this sample's Mappings panel, send three bounded requests, and read its journal/profile. Document handler/response phase coverage rather than expecting the MVC breakdown. BootUI does not capture R2DBC SQL; JDBC evidence is available only for actual JDBC integrations. Probes/Code Paths on reactive methods can be assembly-only, not the subscription's end-to-end work.

Read WebFlux setup, support notes, and the live panel reasons.

Quarkus

Use a JDK supported by the workshop release's Quarkus LTS platform. Java 17 is the baseline; a new early-access JDK is not automatically a supported augmentation toolchain.

Additional prerequisite for this appendix: the Quarkus sample uses PostgreSQL Dev Services and requires a running Docker or compatible Podman runtime. It is not the Docker-free MVC core. Alternatively, prepare and configure a local PostgreSQL database as described in the sample README; merely disabling Dev Services does not supply a database. Resolve this before the optional lab, not during the three-hour workshop.

./bootui-quarkus-sample-app/run-local.sh -Dquarkus.http.host=127.0.0.1 -Dquarkus.http.port=8087

Stop it before the agent version:

./bootui-quarkus-sample-app/run-local-agent.sh -Dquarkus.http.host=127.0.0.1 -Dquarkus.http.port=8087

The console is http://localhost:8087/bootui. For Windows:

.\mvnw.cmd -B -ntp "-Dmaven.repo.local=.m2" `
  -pl "bootui-quarkus-sample-app,bootui-agent" -am install "-DskipTests"
if ($LASTEXITCODE -ne 0) { throw "Quarkus warm build failed" }
$repo = Join-Path (Get-Location) ".m2"
$agent = (Resolve-Path "bootui-agent/target/bootui-agent-2.1.0.jar" -ErrorAction Stop).Path
.\mvnw.cmd -B -ntp "-Dmaven.repo.local=$repo" -f bootui-quarkus-sample-app/pom.xml `
  quarkus:dev "-Djvm.args=-javaagent:$agent" "-Dquarkus.http.host=127.0.0.1" "-Dquarkus.http.port=8087"

Use a clone path without spaces for Quarkus's JVM-argument splitting. Do not replace jvm.args on the agent launcher with another value; that can remove the agent. JVM dev/test mode supports instrumentation; no native-mode agent support is implied.

Choose a route from this sample, observe its journal, and inspect a supported code path. Quarkus has no transaction capture. ORM SQL preparation can be recorded with unknown execution duration, so do not grade its result using MVC JDBC timing assertions. Live reload supplies the same-JVM history workflow, with native Quarkus limits.

See Quarkus setup and support notes.

Portability checkpoint

For your chosen stack, write one available source, one unsupported source, one assembly/unknown-duration limit, and the evidence needed for a comparable run. Availability is a product contract, not something to hide by enabling unrelated dependencies.

Return: Workshop overview.

Prev
B - Troubleshooting
Next
D - Extensions

© 2026 Julien Dubois