1

インストール済みという名前のアプリケーションがありますが、デプロイさHelloWorldれていません。その状態はInstalled、次のようになります。

ここに画像の説明を入力

AdminServerたとえば、ターゲットサーバーにデプロイしようとすると、元のアプリはそのままの状態でデプロイされるという名前の新しいアプリケーションが作成さ れます。アプリは状態にあるものです...スナップショット:helloworld.war AdminServerHelloWorldInstalledhelloworld.warActive

ここに画像の説明を入力

既にインストールされているアプリをデプロイするために使用するコードは次のとおりです。

File warFilePath = new File("c:/helloworld.war"); // war file path on AdminServer machine

Target adminServerTarget = deployManager.getTarget("AdminServer");
WebLogicTargetModuleID targetModuleID = deployManager.createTargetModuleID(
        "HelloWorld", ModuleType.WAR, adminServerTarget);
WebLogicTargetModuleID[] targetModuleIDs = new WebLogicTargetModuleID[1];
targetModuleIDs[0] = targetModuleID;

ProgressObject redeployProcessObject =
    deployManager.redeploy(targetModuleIDs, warFilePath, null /*no deployment plan*/ );

ただし、驚くべき事実が 2 つあります。

まず、WebLogic バージョン 9.x から 10.3 でこのコードを実行する場合。3よく効きます。

次に、このコードを WLST プロンプトから実行すると、jythonを使用してバージョン 10.3 でも問題なく動作します。4 (構文の採用を除いて Java と同じですが、正確なコマンドを添付できます)...

私の質問は、10.3.4 でも動作させるにはどうすればよいですか?

4

1 に答える 1

0

私は誰もこの質問に答えないだろうと思っていたはずです...:)

とにかく、私は解決策を見つけました。deployの代わりにredeploy使用する必要がありますDeploymentOptions。その名前は既存のアプリケーション名(HelloWorld)です。

      ProgressObject redeployProcessObject = null;
      try {
          final DeploymentOptions options = new DeploymentOptions();
          options.setName(applicationName);
          redeployProcessObject = deployManager.deploy(
              targetModuleIDs, warFilePath, null /*no deployment plan*/, options);
      } catch (TargetException e) {
          final String message =
                  String.format("Deployment of application %s on target %s failed: %s",
                          applicationName, allTargets, e.getMessage());
          _log.error(message, e);
      }

ドキュメントによるとredeploy、現在のアプリケーションファイルとプランのみを更新されたバージョンに置き換えます。deploy一方、ファイルを(AdminServerから)ターゲットに配布し、アプリケーションを起動します。

redeployまた、WebLogicのjythonスクリプトとjarを深く掘り下げた後、これがWLSTで呼び出すときに行われることとまったく同じであることがわかりました。

于 2012-02-06T09:45:16.233 に答える