One useful feature of WildFly is the ability to suspend and resume the server, which allows you to temporarily stop the server from accepting new requests and resume it when needed. This can be useful in a variety of scenarios, such as when you need to perform maintenance on the server or deploy a new application.
In this tutorial, we will take a closer look at the suspend and resume feature of WildFly and show you how to use it from the command line. We will also discuss some of the benefits and potential use cases for this feature.
How to suspend and resume WildFly from the CLI
Firstly, connect to the Command Line Interface.
./jboss-cli.sh
Next, from the CLI and execute:
:suspend
Then, you can check the Server status from the Console or Server logs. For example:
You can also specify a timeout, to force requests to complete by that time:
:suspend(timeout=60)
In Domain mode, to suspend all servers:
:suspend-servers(timeout=60)
In Domain mode, to suspend a single server:
/host=master/server-config=server-one:suspend(timeout=60)
What exactly happens in the subsystems when WildFly has been suspended?
- undertow: The undertow subsystem will wait for all HTTP/HTTPS requests to finish.
- mod_cluster: The modcluster subsystem will notify the load balancer that the server is going to be suspended.
- ejb: The ejb3 subsystem will wait for all remote EJB requests and MDB message deliveries to finish. However, delivery to MDBs is stopped in the PRE_SUSPEND phase. EJB timers are suspended as well.
- JEE Concurrency: The server will wait for all active jobs to finish. All queued jobs will be skipped.
Therefore, when you are in suspend mode you are still able to:
- Deploy/undeploy applications
- Change your configuration
You can check at any time the status of your server by issuing an ls at the root of your configuration:
[standalone@localhost:9990 /] ls core-service name=francesco-pc deployment namespaces=[] deployment-overlay process-type=Server extension product-name=WildFly Full interface product-version=9.0.0.Beta2 path profile-name=undefined socket-binding-group release-codename=Kenny subsystem release-version=1.0.0.Beta2 system-property running-mode=NORMAL launch-type=STANDALONE schema-locations=[] management-major-version=3 server-state=running management-micro-version=0 suspend-state=SUSPENDED management-minor-version=0
On the other hand, new application requests will receive a:
Once completed the running requests, you can either shutdown the server or resume the execution with:
:resume
How to suspend/resume WildFly from the Web Console
You can also perform the same management operations from the Web Console of the application server.
- Log into the Server Console
- Select the Runtime Tab
- In the Server Column, right-click on the View Combo and choose the Action to perform:
Conclusion
This article was a walk trough the management of the application server and how to suspend and resume the execution of core application services