Rapidoid - Extremely Fast, Simple and Powerful Java Web Framework!

Admin Center

Starting from v5.1, Rapidoid includes Admin Center. It is accessible only by users with an "administrator" role.

App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_

Application info:

Key Value
Application JAR N/A
Application path (root packages) org.rapidoid.http.handler
Active profiles
 default
 dev
Command line arguments N/A

System metrics:

Application routes:

Verb Path Zone Content type MVC View name Roles
GET POST /_ main html _
GET POST /_/beans main html _/beans
GET /_/classpath main html _/classpath
GET POST /_/config main html _/config
GET POST /_/deploy main html _/deploy
GET POST /_/entities main html _/entities
GET /_/graphs/{id:.*} main json
POST /_/jar main json
GET POST /_/jmx/classes main html _/jmx/classes
GET POST /_/jmx/compilation main html _/jmx/compilation
GET POST /_/jmx/gc main html _/jmx/gc
GET POST /_/jmx/memory main html _/jmx/memory
GET POST /_/jmx/mempool main html _/jmx/mempool
GET POST /_/jmx/os main html _/jmx/os
GET POST /_/jmx/runtime main html _/jmx/runtime
GET POST /_/jmx/threads main html _/jmx/threads
GET POST /_/metrics main html _/metrics
GET POST /_/routes main html _/routes
GET POST /_/terminate main html _/terminate
POST /_login main json
GET /_logout main json logged_in
GET /_status main json
App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/routes

Application routes:

Verb Path Zone Content type MVC View name Roles Handler
GET POST /_ main html _ mvc(() -> ...)
GET POST /_/beans main html _/beans mvc(() -> ...)
GET /_/classpath main html _/classpath mvc(() -> ...)
GET POST /_/config main html _/config mvc(() -> ...)
GET POST /_/deploy main html _/deploy mvc(() -> ...)
GET POST /_/entities main html _/entities mvc(() -> ...)
GET /_/graphs/{id:.*} main json json((Req req, Double from, Double to, String id) -> ...)
POST /_/jar main json json((Req) -> ...)
GET POST /_/jmx/classes main html _/jmx/classes mvc(() -> ...)
GET POST /_/jmx/compilation main html _/jmx/compilation mvc(() -> ...)
GET POST /_/jmx/gc main html _/jmx/gc mvc(() -> ...)
GET POST /_/jmx/memory main html _/jmx/memory mvc(() -> ...)
GET POST /_/jmx/mempool main html _/jmx/mempool mvc(() -> ...)
GET POST /_/jmx/os main html _/jmx/os mvc(() -> ...)
GET POST /_/jmx/runtime main html _/jmx/runtime mvc(() -> ...)
GET POST /_/jmx/threads main html _/jmx/threads mvc(() -> ...)
GET POST /_/metrics main html _/metrics mvc(() -> ...)
GET POST /_/routes main html _/routes mvc(() -> ...)
GET POST /_/terminate main html _/terminate mvc(() -> ...)
POST /_login main json json((Req, Resp) -> ...)
GET /_logout main json logged_in json((Req, Resp) -> ...)
GET /_status main json json(() -> ...)

Admin routes:

Verb Path Zone Content type MVC View name Roles Handler
App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/beans

Application context of managed beans:

Key Value
Provided classes N/A
Provided instances N/A
Managed instances N/A
By type N/A
App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/config

on

Key Value
port 8888
address 0.0.0.0

admin

Key Value
port same
address 0.0.0.0

app

Key Value
search false
navbar true
fluid false
cdn auto
contextPath
home /
menu N/A

main-zone

N/A

admin-zone

Key Value
home /_
brand <i class="fa fa-dashboard"></i> Admin
search false
fluid false
menu
Key Value
Overview /_
Application
Key Value
Routes /_/routes
Beans /_/beans
Configuration /_/config
Deploy /_/deploy
Terminate / Restart /_/terminate
Data
Key Value
Entities /_/entities
Details
Key Value
Metrics /_/metrics
Classpath /_/classpath
JMX
Key Value
Memory pool /_/jmx/mempool
JVM Threads /_/jmx/threads
Operating system /_/jmx/os
Garbage collection /_/jmx/gc
Memory /_/jmx/memory
Runtime /_/jmx/runtime
Classes /_/jmx/classes
Compilation /_/jmx/compilation

users

Key Value
admin
Key Value
roles administrator

jobs

Key Value
executor
Key Value
threads 256
scheduler
Key Value
threads 64

hibernate

Key Value
c3p0
Key Value
debug false
initialPoolSize 5
minPoolSize 5
maxPoolSize 100
acquireIncrement 5
maxStatementsPerConnection 10
idleConnectionTestPeriod 300
dialect org.hibernate.dialect.HSQLDialect
connection
Key Value
driver_class org.hsqldb.jdbc.JDBCDriver
url jdbc:hsqldb:mem:public
username sa
password
hbm2ddl
Key Value
auto update

c3p0

Key Value
debug true
initialPoolSize 5
minPoolSize 5
maxPoolSize 100
acquireIncrement 5
maxStatementsPerConnection 10
idleConnectionTestPeriod 300

oauth

Key Value
google
Key Value
scope profile,email
clientId YOUR_GOOGLE_CLIENT_ID_HERE
clientSecret
github
Key Value
scope user:email
clientId YOUR_GITHUB_CLIENT_ID_HERE
clientSecret
facebook
Key Value
scope public_profile,email
clientId YOUR_FACEBOOK_CLIENT_ID_HERE
clientSecret
linkedin
Key Value
scope r_basicprofile,r_emailaddress
clientId YOUR_LINKEDIN_CLIENT_ID_HERE
clientSecret

http

Key Value
timeout 30000
timeoutResolution 5000
maxPipeline 10
serverName Rapidoid
mandatoryHeaders
Key Value
connection true
date true
server true
contentType true

token

Key Value
ttl 0

jdbc

Key Value
driver org.hsqldb.jdbc.JDBCDriver
url jdbc:hsqldb:mem:public
username sa
password
ClasspathUtil.appJar("/opt/app.jar");
App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/deploy

Upload an application JAR to re-deploy:

HTTP API for Deployment:

POST http://your-app-domain/_/jar?_token=<token>
POST DATA: file=<your-jar>

Building and deploying with Maven:

mvn clean package && cp target/*.jar target/_app_.jar && curl -F 'file=@target/_app_.jar' 'http://App/_/jar?_token='

App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/terminate

Terminate / restart the application?

App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/jmx/mempool

Memory pool:

Name Type Memory manager names Usage Peak usage Collection usage
Code Cache Non-heap memory CodeCacheManager
12345
12345
12345
12345
12345
12345
12345
12345
Metaspace Non-heap memory Metaspace Manager
-1
12345
12345
12345
-1
12345
12345
12345
Compressed Class Space Non-heap memory Metaspace Manager
12345
12345
12345
12345
12345
12345
12345
12345
PS Eden Space Heap memory
 PS MarkSweep
 PS Scavenge
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
PS Survivor Space Heap memory
 PS MarkSweep
 PS Scavenge
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
PS Old Gen Heap memory PS MarkSweep
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
12345
App.bootstrap().adminCenter();

Let's send some HTTP requests and check the results:

GET /_/jmx/threads

JVM Threads:

12345
true
12345
12345
N/A
N/A
true
12345
true
true
true
false
true
12345
true
true
12345