При установке antcat для развертывания веб-приложения Tomcat произошла ошибка с разрешением - PullRequest
2 голосов
/ 27 августа 2010

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

1 Ответ

2 голосов
/ 27 августа 2010

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

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

до

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...