развернуть уже установленное приложение в WebLogic 10.3.4 с помощью wlfullclient.jar - PullRequest
1 голос
/ 31 января 2012

У меня установлено приложение с именем HelloWorld, но оно не развернуто.Его состояние Installed, например:

enter image description here

Когда я пытаюсь развернуть его на целевом сервере, скажем AdminServer, это приводит к созданиюновое приложение с именем helloworld.war , которое развернуто в AdminServer, тогда как исходное приложение HelloWorld остается в состоянии Installed.Приложение helloworld.war находится в состоянии Active ... Снимок:

enter image description here

Вот код, который я использую для развертывания уже установленного приложения:

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*/ );

Однако есть два удивительных факта.

Во-первых, при запуске этого кода в версиях WebLogic от 9.x до 10.3. 3 он прекрасно работает.

Во-вторых, при запуске этого кода из приглашения WLST с jython он также отлично работает даже в версии 10.3. 4 (я могу прикрепить точные команды, хотя они такие же, как и в javaкроме синтаксических усыновлений) ...

Мой вопрос: как мне заставить его работать также на 10.3.4?

1 Ответ

0 голосов
/ 06 февраля 2012

Мне следовало подумать, что никто не ответит на этот вопрос ...:)

Во всяком случае, я нашел решение. Я должен был бы использовать 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) среди целей и запускает приложение.

Кроме того, после глубокого изучения jython-скриптов и jar-файлов WebLogic я обнаружил, что это именно то, что делается при вызове redeploy в WLST.

...