#tomcat #rest #deployment #ant #manager-app
#tomcat #rest #развертывание #ant #менеджер-приложение
Вопрос:
$ ant deploy
Buildfile: /Users/simpatico/SOLR_HOME/build.xml
deploy:
BUILD FAILED
/Users/simpatico/SOLR_HOME/build.xml:531: java.io.IOException: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/deploy?path=/solr
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:228)
Total time: 2 seconds
В build.xml:
<!--http://tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Executing_Manager_Commands_With_Ant-->
<!-- Configure properties to access the Manager application -->
<property name="url" value="http://localhost:8080/manager"/>
<property name="username" value="admin"/>
<property name="password" value="admin"/>
<!-- Configure the custom Ant tasks for the Manager application -->
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
<!-- Configure the context path for this application -->
<property name="path" value="solr"/>
<target name="deploy" description="Install web application"
>
<deploy url="${url}" username="${username}" password="${password}"
path="${path}" war="file:${dist}/solr.war"/>
</target>
Оба пути /solr и solr не работают.
<tomcat-users>
<role rolename="manager-gui"/>
<user password="admin" roles="manager-gui,manager-script,admin" username="admin"/>
</tomcat-users>
РЕДАКТИРОВАТЬ: теперь не удается развернуть, потому что приложение уже существует в path / solr
отменить развертывание: [отменить развертывание] OK — Недеплоированное приложение по контекстному пути / solr
развертывание: сбой [deploy] — Приложение уже существует в path / solr
СБОЙ СБОРКИ / Users / simpatico /SOLR_HOME/build.xml:532: СБОЙ — Приложение уже существует в path / solr
Комментарии:
1. правильно ли настроены роли пользователя admin в tomcat-users.xml для доступа к интерфейсу управления?
2. @simpatico: 403 означает «Запрещено», вы уверены, что указали правильные учетные данные? Кстати, какая версия Tomcat используется (это 5.5)?
3. @barti_ddu — tomcat 7. Я предоставил учетные данные с обеих сторон в q (admin / администратор)
4. @simpatico: afair, URL для развертывания tc7 выглядит следующим образом
http://host:port/manager/text/deploy?path=/foo
5. по какой-то причине SO не показывает часть, которую я добавил к вопросу, которая показывает измененные цели развертывания и отмены развертывания
Ответ №1:
Если вы просмотрите страницу документации приложения Manager, вы увидите, что основное отличие заключается в URL скрипта. В примере используется (обратите внимание на /text
часть):
<property name="url" value="http://localhost:8080/manager/text"/>
В среде * nix вы должны проверить, какой пользователь запускает сервер, и имеет ли этот пользователь правильные разрешения на изменение файлов в вашем веб-каталоге.
Комментарии:
1. @vbence — вы справились с задачей (я просматривал 5.5, который дал Google). Однако теперь оно не развертывается, поскольку приложение уже развернуто, как показано в Q edit.
2. @simpatico просто скопируйте и вставьте задачу отменить развертывание из документации.
3. @vbence — это то, что я сделал, и изменил развертывание, чтобы оно зависело от отмены развертывания
4. @simpatico Я предполагаю, что вы «развернули» свое приложение вручную (не через приложение Manager). Попробуйте удалить его вручную, а затем выполнить первоначальное развертывание
ant
. После этого вы должны иметь возможность отменить его развертывание.5. @vbence — нет, не развертывается вручную.. затем ant deploy это работает (поскольку нечего отменять развертывание), но повторное развертывание ant выдаст ошибку
Ответ №2:
<target name="tomcatdeploy" description="Install web application" >
<deploy_tomcat url="${admin.url}" username="${admin.name}" password="${admin.password}" path="/${webapp}" war="file:${dropoff.warfile.dir}/${webapp}.war"/>
</target>
<target name="check-context">
<available file="${app.base.dir}/${webapp}.war" property="context.present"/>
</target>
<target name="undeploy" depends="check-context" if="context.present" description="Remove web application" >
<undeploy_tomcat url="${admin.url}" username="${admin.name}" password="${admin.password}" path="/${webapp}"/>
</target>
Сначала вызовите «undeploy», затем «tomcatdeploy» задачи ant. Вы должны предоставить значения $ {pamram} по мере необходимости. Задача «отменить развертывание» проверит, существует ли данный файл war в каталоге webapps, если это так, то она фактически отменит развертывание.