Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

15.2. JBoss ON グループおよびインベントリーの確認

スクリプトには、2 つのコマンドラインパラメーターが必要です。1 つ目は、グループにインストールされる新しいアプリケーションのパスである必要があります。2 つ目は、グループ自体の名前です。これらのパラメーターはスクリプトで解析されます(詳細はを参照してください 「コマンドとスクリプト引数を渡す」)。
例:
if( args.length < 2 ) usage();
				
var fileName = args[0];
var groupName = args[1];
次に、パスが有効かどうかを確認し、現在のユーザーがそのパスを読み取りできるかどうかを確認します。これは、以下のように Java クラスを使用して行います。
// 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();
}
グループが JBoss ON サーバーに存在することを確認します。
// find resource group
var rgc = new ResourceGroupCriteria();
rgc.addFilterName(groupName);
rgc.fetchExplicitResources(true);
var groupList = ResourceGroupManager.findResourceGroupsByCriteria(rgc);
ここでは、リソースを取得することです。
rgc.fetchExplicitResources(true);
グループが見つかったかどうかを確認します。
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( group.explicitResources == null || group.explicitResources.size() == 0 ) {
    println("  Group does not contain explicit resources --> exiting!" );
    usage();
}
var resourcesArray = group.explicitResources.toArray();
resourceArray グループに属するすべてのリソースが含まれるようになりました。次に、アプリケーションがデプロイされる前に再起動が必要な JBoss AS 5 サーバーインスタンスがあるかどうかを確認します。
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);
}
これには、JBoss AS 5 サーバーリソースタイプのみがトップレベルのリソースタイプを持つグループが必要です。JBoss AS 5 インスタンスが server 含まれるようになりました。これには、完全に設定する必要があるため、サーバーを再読み取りする必要があります。CLI は内部的に単純な JPA 永続を使用し、すべての依存オブジェクトを常にフェッチする訳ではありません。
次に、サーバーインスタンスの子をすべて追跡し、アプリケーションのリソース名を見つけます。
var children = server.children;
for( c in children ) {
    var child = children[c];
				
    if( child.name == packageName ) {
    }
}
packageName デプロイされたアプリケーションとして JBoss ON GUI に示されるように、バージョン情報とパスのないアプリケーションの名前です。
元のバージョンのアプリケーションのバックアップを作成します。
println("    download old app to /tmp");
child.retrieveBackingContent("/tmp/" + packageName + "_" + server.name + "_old");
パスでデコードされたサーバー名を持つ古いアプリケーションのコピーが /tmp/ ディレクトリーにあります。
サーバーをシャットダウンし、新しいアプリケーションコンテンツをサーバーにアップロードします。
println("    stopping " + server.name + "....");
try {
    server.shutDown();
}
catch( ex ) {
    println("   --> Caught " + ex );
}
				
				
println("    uploading new application code");
child.updateBackingContent(fileName);
				
println("    restarting " + server.name + "....." );
				
try {
    server.start();
}
catch( ex ) {
    println("   --> Caught " + ex );
}