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 ); }