此内容没有您所选择的语言版本。
5. Simple Example: Scripts to Manage Inventory
A lot of enterprise servers have a concept of managed servers. A managed server means that there is a central instance that deploys content or sends configuration to all registered application servers. Using managed servers helps administrators ensure that all active application servers have the same version of the deployed packages and configuration.
Similar behavior can be emulated in JBoss ON by creating a management script that can be invoked to perform actions simultaneously on all members of a JBoss ON group. All of the EAP instances are functionally managed servers, while JBoss ON itself acts as the domain controller.
5.1. Automatically Import New Resources: autoimport.js 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
As soon as a resource is discovered it is, technically, already in the JBoss ON inventory. It is included with a status of
NEW
. That's an in-between state, because JBoss ON is aware that the resource exists, but the resource has not been committed so JBoss ON can't manage it.
A script can be created and run regularly so that any newly-discovered resources can be automatically added to the inventory. This script bases its identification on new resources on the inventory state, so ignored or already imported resources aren't included.
The CLI script runs through three steps:
- It identifies new resources using the
findUncommittedResources()
method. - It gets those new resources' IDs.
- It then imports those resources by invoking the discovery system's import operation.
Only one of the operations is already defined in the remote API —
importResources
. The other two functions — findUncommittedResources
and getIds
— have to be defined in the script.
Uncommited (new) resources can be identified through a
ResourceCriteria
search by adding a search parameter based on the inventory status.
The second function checks that the inventory search actually returned resources and, if so, gets the ID for each resource in the array.
5.2. Simple Inventory Count: inventoryCount.js 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Searches are performed using
*Criteria
classes; for resources, this is ResourceCriteria
. A search can be very specific, passing criteria so that it returns only one resource or a small subset of resource. It is also possible to return everything in inventory.
This script runs a search with no specific criteria (
ResourceCriteria()
), so that every resource matches the search. It then takes the size of the results to produce a simple inventory count.
Removing a resource from the inventory simply removes it from JBoss ON; the server or application itself remains intact on the local system. (This allows the resource to be re-discovered and re-imported later.)
The alert system can launch CLI scripts in response to a fired alert (covered in "Setting up Monitoring, Alerts, and Operations"). One possible response is to uninventory a resource which is not performing well.
This can be a pretty simple little script. To uninventory the resource, simply use the resource ID which was included in the alert and the
uninventoryResource
method:
List<Integer> uninventoryResources(Subject subject, int[] resourceIds);
List<Integer> uninventoryResources(Subject subject, int[] resourceIds);
It is possible to combine the uninventory operation with another task. For example, uninventory one resource and automatically create and import another resource to take its place.
Important
This script is intended to be run directly on the server, such as using the
-f
parameter or through a server-side alert script. This cannot be run using the interactive CLI.
For information on running server-side scripts in response to alerts, see "Setting up Monitoring, Alerts, and Operations".
The alert system can run a script in response to a fired alert. One possible response for a JBoss AS 5 server is to check the JNDI directory and look up the JMX information.
This script first connects to the JNDI directory over JNP, then uses the
assertNotNull
method to get the JMX object. The script then prints the JMX information.