Назад | Перейти на главную страницу

Как удаленно перезапустить домен WebLogic с помощью Ant?

У меня есть установка, в которой я запускаю Oracle BPEL Process Manager в наборе серверов WebLogic 9.2. У меня есть система управления выпусками на другом сервере, которая собирает и развертывает чемоданы BPEL на этих серверах с помощью Ant. Рекомендация Oracle заключается в том, что чемодан явно развертывается на первом узле в кластере BPEL PM, а все остальные узлы впоследствии перезапускаются (в отличие от прямого развертывания чемодана в каждом узле).

У меня есть следующие задачи в сценарии Ant для выполнения этого набора действий:

<wlserver host="${node.hostname}" port="${node.port}" 
          configFile="${user.home}/.ant/weblogic/config/${env}/${node.config}"
          username="${bpel.cluster.user}" password="${bpel.cluster.password}" 
          action="reboot"/> 

Однако эта задача, похоже, хочет запустить локальный сервер, а затем выдать ему команду «перезагрузить» вместо подключения к удаленному экземпляру и его перезагрузки. Фактически, почти каждый пример, который я нашел до сих пор, похоже, предполагает, что я собираюсь развернуть / настроить / администрировать домен на своей рабочей станции или что я собираюсь выполнить сценарий Ant на том же сервере, где находится домен. настроен. Я не хочу ничего из этого.

Есть ли способ управлять удаленным доменом WebLogic программным способом из Ant?

Вы можете перезагрузить управляемый сервер WebLogic удаленно с помощью задачи wlserver ANT, но такие запросы должны выполняться через сервер администратора домена. Например:

<wlserver 
    adminserverurl="t3://myadminhost:7001"
    username="weblogicAdminUser"
    password="weblogicPassword"
    servername="MyManagedServer" 
    action="reboot"
    noExit="true"/>

При этом использование задачи ANT для перезагрузки управляемого сервера может быть ненадежным. Вместо этого я бы рекомендовал использовать Weblogic Scripting Tool (WLST).

Ответ положительный. Возможно, есть способы получше, но вот как я это делаю:

Моя установка Ant использует библиотеку maverick-ssh для открытия ssh-соединения с сервером (задача ssh). Затем он передает наше развертывание (zip и war-файл) на сервер, а затем выполняет сценарий оболочки, который использует WLST для развертывания его на «локальном» сервере.

Вот задача муравья:

<target name="transfer-build" description="">
    <property name="transfer.host" value="${deploy.host}"/>
    <property name="transfer.user" value="${deploy.user}"/>
    <property name="transfer.pass" value="${deploy.pass}"/>
    <property name="transfer.cwd"  value="${dir.war.tmp}"/>
    <property name="transfer.conf" value="${file.conf_zip}"/>
    <property name="transfer.war"  value="${file.tds_war}"/>

    <ssh host="${transfer.host}" username="${transfer.user}" password="${transfer.pass}" version="2">
        <sftp action="put" remotedir="${dir.deploy}" verbose="false">
            <fileset dir="${transfer.cwd}" >
                <include name="${transfer.conf}"/>
                <include name="${transfer.war}"/>
            </fileset>
        </sftp>
        <exec cmd="~/deploy-build.sh ${transfer.conf} ${transfer.war}"/>
    </ssh>
</target>

И соответствующая часть из скрипта deploy-build.sh:

# issue the redeploy command
java weblogic.Deployer -adminurl t3://`hostname`:9000 -user weblogic -password weblogicadmin -name fooapp -deploy /path/to/weblogic/user_projects/domains/mydomain/fooapp.war

Благодарность за вызов команды WLST идет на некоторые справочные документы BEA, которые я больше не могу найти ...