Gridens - информационные технологии

Установка ant для развертывания веб-приложения Tomcat не удалась из-за проблемы с разрешением

Я следил за очень хорошим Tomcat6 Руководством для разработчиков приложений. Я взял их build.xml, который содержит удобную муравьиную задачу под названием install, использующую catalina-ant.jar задачу deploy.

<target name="install" depends="compile"
   description="Install application to servlet container">

    <deploy url="${manager.url}"
       username="${manager.username}"
       password="${manager.password}"
           path="${app.path}"
       localWar="file://${build.home}"/>

</target>

Мой проект в настоящее время находится в /home/leif/test/mytomcatapp/.

Мой build.properties выглядит так:

manager.username=admin
manager.password=admin
manager.url=http://localhost:8080/manager/
cataline.home=/usr/share/tomcat6/

А мой /etc/tomcat6/tomcat-users.xml выглядит так:

<role rolename="admin"/>
<role rolename="manager"/>
<user name="admin" password="admin" roles="admin,manager" />

Но когда я делаю ant install для тестирования своего веб-приложения, я получаю сообщение об ошибке при его развертывании:

$ ant install
Buildfile: build.xml
Trying to override old definition of datatype resources

prepare:

compile:

install:
   [deploy] FAIL - Failed to deploy application at context path /mytomcatapp

BUILD FAILED
FAIL - Failed to deploy application at context path /mytomcatapp

А в /var/log/tomcat/catalina.out сказано:

java.io.FileNotFoundException: /home/leif/test/mytomcatapp/build (Permission denied)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:137)
    at org.apache.catalina.manager.ManagerServlet.copyInternal(ManagerServlet.java:1644)
    at org.apache.catalina.manager.ManagerServlet.copy(ManagerServlet.java:1605)
    at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:819)
    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:350)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:636)

Таким образом, менеджер Tomcat не может получить доступ к файлам в моем домашнем каталоге. Там нет ничего шокирующего. Но как должна работать задача ant install? Это, конечно, предполагает, что люди хранят исходный код своего проекта в своем домашнем каталоге и выполняют ant install из этого места. Я бы предпочел не открывать разрешения в моем домашнем каталоге, должен быть лучший способ?

26.08.2010

  • С тех пор я перешел с Ant на Maven для создания своих веб-приложений. Я включаю catalina в качестве зависимости и получаю команду mvn tomcat:deploy и другие бесплатно. Это намного проще и просто работает. mavenhub.com/mvn/central/org.apache.tomcat/ каталина/6.0.32 24.03.2012

Ответы:


1

Вам нужно упаковать свое веб-приложение в файл .war и загрузить его в Tomcat. Если вы используете образец build.xml , просто чтобы цель установки зависела от цели dist, и измените

localWar="file://${build.home}"

to

war="${dist.home}/${app.name}-${app.version}.war"`

В качестве альтернативы измените свой build.xml, чтобы вывести войну в каталог, которым вы можете поделиться с tomcat, например. где-то в /tmp

26.08.2010
  • Спасибо, это натолкнуло меня на мысль определить build.home=/tmp/public/build/ в моем build.properties. Менеджер Tomcat не может с радостью захватить мои файлы для развертывания. 27.08.2010
  • Новые материалы

    Журналы Py № 2: Если, Элиф, Иначе?
    У меня такое чувство, будто я давно ничего не писал, хотя прошло два дня с тех пор, как я опубликовал свою первую историю. В любом случае, сегодня произошло много всего, так что приступим...

    Работа в Реакции
    Я изучаю React в Bloc прямо сейчас. До сих пор я изо всех сил пытался понять темы. Тем не менее, я только что закончил проблему, над которой некоторое время размышлял, и хочу записать свой..

    Нужен ли банкам искусственный интеллект, чтобы кардинально изменить свою работу?
    Почему необходимо использовать искусственный интеллект в банковской сфере? Существенное использование многочисленных инноваций ИИ, таких как машинное обучение , глубокое обучение и..

    Какую последнюю статью вы считаете стоящей поделиться?
    Я люблю читать качественные статьи. Не стесняйтесь делиться своей работой.

    Преобразование CoreML, позволяющее использовать Fast-Neural-Style-Transfer на iOS и MacOS.
    Как использовать Fast-Neural-Style-Transfer на iOS Преобразованная модель: GitHub — john-rocky/CoreML-Models: Преобразованный зоопарк моделей CoreML...

    ИИ в правоохранительных органах: мощный инструмент с двойной природой
    Искусственный интеллект (ИИ) революционизирует правоохранительную деятельность, предлагая инновационные тактики расследования, повышая достоверность доказательств и оптимизируя процессы. Тем..

    Autoencoder Average Distance  — классический способ, используемый внутри Microsoft для выявления сходства…
    Среднее расстояние автоэнкодера (AAD) использует более простой подход для определения расстояния между двумя наборами данных. Нейронный автоэнкодер может преобразовать любой элемент данных в..