Red Hat Training

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

第16章 例: バンドルを使用したアプリケーションのデプロイ(JBoss EAP 4、5、および 6)

バンドルは、更新されたアプリケーションを JBoss EAP 6 サーバーにデプロイする非常にクリーンで簡単な方法です。バンドルシステムは、特定のパッケージの複数のバージョンを維持し、それらのバージョンを指定された互換性のあるグループにデプロイできます。これは、安定したバージョンを実稼働サーバーにデプロイでき、開発バージョンをテストマシンにデプロイできるため、アプリケーションのライフサイクルに最適なワークフローになります。

16.1. 新規アプリケーションの作成

cliRoot/rhq-remoting-cli-4.9.0.JON320GA/samples/modules ディレクトリーの jbossas.js スクリプトは、バンドルバージョンと定義を迅速に作成し、指定の JBoss サーバーにデプロイするカスタム関数のセットを定義します。
この jbossas.js スクリプトでは、関数をサポートするために util.js および bundles.js スクリプトが必要です。これらはすべて cliRoot/rhq-remoting-cli-4.9.0.JON320GA/samples/modules ディレクトリーから自動的に読み込まれます。
deploy-to-and-restart-JBAS.js スクリプトによって、という関数が定義されます。 createAppAndRestartJBAS これにより、バンドルが作成され、デプロイされます。関数は 7 つのパラメーターを取ります。
  • バンドルアーカイブファイルへのパス。
  • バンドル設定に必要なトークンまたは変数が含まれる設定オブジェクト。この例では、プロパティーは渡されず、値は null になります。設定の詳細については、bundles.js ファイルのコメントに表示され、一般的な設定情報が表示され 「シンプル設定プロパティーの変更」 ます。
  • バンドルをデプロイする互換性のあるグループの名前。
  • バンドル宛先の名前。
  • バンドル宛先の説明。
  • バンドルをデプロイするベースディレクトリー、およびオプションでバンドルをデプロイするサブディレクトリー。
例:
rhqadmin@localhost:7080$ var bundleZipFile = /export/bundles/myBundle.zip 
rhqadmin@localhost:7080$ var deploymentConfiguration = null
rhqadmin@localhost:7080$ var groupName = "JBoss EAP 6 Group"
rhqadmin@localhost:7080$ var destinationName = "My App - JBoss EAP 6 Destination"
rhqadmin@localhost:7080$ var destinationDescription = "For my application"
rhqadmin@localhost:7080$ var baseDirName = "Deploy Directory"
rhqadmin@localhost:7080$ var deployDir = "helloWorldApp"
rhqadmin@localhost:7080$ createAppAndRestartJBAS(bundleZipFile, deploymentConfiguration, groupName, destinationName, destinationDescription, baseDirName, deployDir)
deploy-to-and-restart-JBAS.js スクリプトには、サポートを提供する多くのプライベート関数が定義されています。 createAppAndRestartJBAS 関数。これらは deploy-to-and-restart-JBAS.js ファイルのコメントで説明されています。
注記
baseDirName 変数 値は or である必要があり Deploy Directory Profile Directoryます。この 2 つの場所は、スクリプトがアクセスする指定の JBoss EAP リソースの接続情報に基づいて識別されます。
The createAppAndRestartJBAS 関数には、リソースグループの検索、バンドルの作成、およびグループの JBoss サーバーを再起動する 3 つの部分があります。
最初の部分は、特定のグループをグループ名で検索し、単一のリソースグループのみに一致する必要があります。そうでない場合は、エラーを返します。
function createAppAndRestartJBAS(bundleZipFile, deploymentConfiguration, groupName, destinationName, destinationDescription, baseDirName, deployDir) {
    var gcrit = new ResourceGroupCriteria;
    gcrit.addFilterName(groupName);
    gcrit.fetchResourceType(true);

    var groups = ResourceGroupManager.findResourceGroupsByCriteria(gcrit);
    if (groups.empty) {
        throw "Could not find a resource group called " + groupName;
    } else if (groups.size() > 1) {
        throw "There are more than 1 groups called " + groupName;
    }

    var group = groups.get(0);
    var targetResourceType = group.resourceType;
検索手順の一部は、指定の互換性のあるグループのリソースタイプを取得することです。その後、そのリソースタイプは、グループに関連付けられたバンドル宛先の作成に使用されます。
次の部分はバンドルを作成し、サーバーリソースを再起動します。
    var deployFn = function(restartFn) {
バンドルデプロイメントの最初の部分は、バンドルアーカイブをアップロードし、JBoss ON 設定でバンドルバージョンを作成します。
        var bundleVersion = createBundleVersion(bundleZipFile);
次に、宛先を作成します。この宛先は、バンドルをデプロイする場所(ベースディレクトリーおよびデプロイメントディレクトリー)、互換性のあるグループおよびバンドルバージョンに関連付けられます。
        var destination = BundleManager.createBundleDestination(bundleVersion.bundle.id, destinationName, destinationDescription, baseDirName, deployDir, group.id);
宛先とバージョンが定義されたら、ターゲットリソースグループに保存してデプロイできます。
        var deployment = deployBundle(destination,bundleVersion, deploymentConfiguration, "Web application", false);

        if (deployment.status != BundleDeploymentStatus.SUCCESS) {
            throw "Deployment wasn't successful: " + deployment;
        }
デプロイメントが完了すると、スクリプトはグループメンバー(スクリプトのヘルプ機能のいずれかで定義されます deploy-to-and-restart-JBAS.js )を繰り返し処理し、各リソースを再起動します。その後、デプロイメント情報を出力します。
        restartFn(group);

        return deployment;
    };
deploy-to-and-restart-JBAS.js スクリプトは、サポートされるバージョンの JBoss EAP 4、5、または 6 にコンテンツをデプロイできます。バンドルシステムは、グループのリソースタイプに基づいて、リソースプラグインで定義された設定を使用します。再起動操作では、JBoss EAP の各バージョンごとに異なる再起動機能を定義します。
    if (targetResourceType.plugin == "JBossAS" && targetResourceType.name == "JBossAS Server") {
        return deployFn(_restartAS4);
    } else if (targetResourceType.plugin == "JBossAS5" && targetResourceType.name == "JBossAS Server") {
        return deployFn(_restartAS5);
    } else if (targetResourceType.plugin == "JBossAS7" &&
            (targetResourceType.name == "JBossAS7 Standalone Server" ||
                    targetResourceType.name == "JBossAS-Managed")) {
        return deployFn(_restartAS7);
    }

    throw "The resource group the destination targets doesn't seem to be a JBoss AS server group.";
}