Questo contenuto non è disponibile nella lingua selezionata.
15.2. Checking the JBoss ON Groups and Inventory
The script should have two command-line parameters. The first should be the path of the new application that is installed in the group. The second is the name of the group itself. These parameters are parsed in the script (as described in more detail in Section 10.3, “Passing Command and Script Arguments”).
For example:
if( args.length < 2 ) usage();
var fileName = args[0];
var groupName = args[1];
if( args.length < 2 ) usage();
var fileName = args[0];
var groupName = args[1];
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Next, check if the path is valid and if the current user can read it. This is done by using Java classes as shown here:
// check that the file exists and that we can read it
var file = new java.io.File(fileName);
if( !file.exists() ) {
println(fileName + " does not exist!");
usage();
}
if( !file.canRead() ) {
println(fileName + " can't be read!");
usage();
}
// check that the file exists and that we can read it
var file = new java.io.File(fileName);
if( !file.exists() ) {
println(fileName + " does not exist!");
usage();
}
if( !file.canRead() ) {
println(fileName + " can't be read!");
usage();
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Verify that the group really exists on the JBoss ON server:
// find resource group
var rgc = new ResourceGroupCriteria();
rgc.addFilterName(groupName);
rgc.fetchExplicitResources(true);
var groupList = ResourceGroupManager.findResourceGroupsByCriteria(rgc);
// find resource group
var rgc = new ResourceGroupCriteria();
rgc.addFilterName(groupName);
rgc.fetchExplicitResources(true);
var groupList = ResourceGroupManager.findResourceGroupsByCriteria(rgc);
Copy to ClipboardCopied!Toggle word wrapToggle overflow
The important part here is to fetch the resources.
rgc.fetchExplicitResources(true);
rgc.fetchExplicitResources(true);
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Check if there is a group found:
if( groupList == null || groupList.size() != 1 ) {
println("Can't find a resource group named " + groupName);
usage();
}
var group = groupList.get(0);
println(" Found group: " + group.name );
println(" Group ID : " + group.id );
println(" Description: " + group.description);
if( groupList == null || groupList.size() != 1 ) {
println("Can't find a resource group named " + groupName);
usage();
}
var group = groupList.get(0);
println(" Found group: " + group.name );
println(" Group ID : " + group.id );
println(" Description: " + group.description);
Copy to ClipboardCopied!Toggle word wrapToggle overflow
After validating that there is a group with the specified name, check if the group contains explicit resources:
if( group.explicitResources == null || group.explicitResources.size() == 0 ) {
println(" Group does not contain explicit resources --> exiting!" );
usage();
}
var resourcesArray = group.explicitResources.toArray();
if( group.explicitResources == null || group.explicitResources.size() == 0 ) {
println(" Group does not contain explicit resources --> exiting!" );
usage();
}
var resourcesArray = group.explicitResources.toArray();
Copy to ClipboardCopied!Toggle word wrapToggle overflow
resourceArray now contains all resources which are part of the group. Next, check if there are JBoss AS 5 Server instances which need to be restarted before the application is deployed.
for( i in resourcesArray ) {
var res = resourcesArray[i];
var resType = res.resourceType.name;
println(" Found resource " + res.name + " of type " + resType + " and ID " + res.id);
if( resType != "JBossAS5 Server") {
println(" ---> Resource not of required type. Exiting!");
usage();
}
// get server resource to start/stop it and to redeploy application
var server = ProxyFactory.getResource(res.id);
}
for( i in resourcesArray ) {
var res = resourcesArray[i];
var resType = res.resourceType.name;
println(" Found resource " + res.name + " of type " + resType + " and ID " + res.id);
if( resType != "JBossAS5 Server") {
println(" ---> Resource not of required type. Exiting!");
usage();
}
// get server resource to start/stop it and to redeploy application
var server = ProxyFactory.getResource(res.id);
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
This requires a group with only JBoss AS 5 Server resource types as top level resources. Now server contains the JBoss AS 5 instance. This requires re-reading the server because it needs to be fully populated. Internally, the CLI is using simple JPA persistence, and it is necessary to not always fetch all dependent objects.
Next, traverse all the children of the server instance and find the resource name of the application:
var children = server.children;
for( c in children ) {
var child = children[c];
if( child.name == packageName ) {
}
}
var children = server.children;
for( c in children ) {
var child = children[c];
if( child.name == packageName ) {
}
}
Copy to ClipboardCopied!Toggle word wrapToggle overflow
packageName is the name of the application without version information and path as shown in the JBoss ON GUI as deployed applications.
Create a backup of the original version of the application:
println(" download old app to /tmp");
child.retrieveBackingContent("/tmp/" + packageName + "_" + server.name + "_old");
println(" download old app to /tmp");
child.retrieveBackingContent("/tmp/" + packageName + "_" + server.name + "_old");
Copy to ClipboardCopied!Toggle word wrapToggle overflow
A copy of the old application with the server name decoded in path is available in the /tmp/ directory.
Shut down the server and upload the new application content to the server.
Aiutiamo gli utenti Red Hat a innovarsi e raggiungere i propri obiettivi con i nostri prodotti e servizi grazie a contenuti di cui possono fidarsi. Esplora i nostri ultimi aggiornamenti.
Rendiamo l’open source più inclusivo
Red Hat si impegna a sostituire il linguaggio problematico nel codice, nella documentazione e nelle proprietà web. Per maggiori dettagli, visita il Blog di Red Hat.
Informazioni su Red Hat
Forniamo soluzioni consolidate che rendono più semplice per le aziende lavorare su piattaforme e ambienti diversi, dal datacenter centrale all'edge della rete.