У меня есть установка, в которой я запускаю 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, которые я больше не могу найти ...