Maven tomcat7: развертывание завершается с отказом доступа
У меня есть tomcat7. Доступ к менеджерскому приложению (http://localhost: 7777/manager/html) отлично работает с учетными данными, определенными в tomcat-users.xml.
Теперь я хочу развернуть приложение с maven3. Я настроил плагин tomcat maven:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<url>http://localhost:7777/manager</url>
<server>localhost7777</server>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<url>http://localhost:7777/manager</url>
<server>localhost7777</server>
</configuration>
</plugin>
В mavens setting.xml я добавил запись для сервера:
<servers>
<server>
<id>localhost7777</id>
<username>manager</username>
<password>secret</password>
</server>
</servers>
Теперь приложение будет успешным. Но цель tomcat7: deploy приводит к сообщению об отказе в доступе от tomcat:
...
[INFO] Deploying war to http://localhost:7777/workload-monitor
Uploading: http://localhost:7777/manager/deploy?path=%2Fworkload-monitor&update=true
Uploaded: http://localhost:7777/manager/deploy?path=%2Fworkload-monitor&update=true (2329 KB at 55435.1 KB/sec)
[INFO] <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
[INFO] <html>
[INFO] <head>
[INFO] <title>403 Access Denied</title>
[INFO] <style type="text/css">
[INFO] <!--
...
Может ли кто-нибудь дать мне подсказку?
Ответы
Ответ 1
Не отвечая на вопрос, проблема, похоже, связана с тем, что tomcat:deploy
пытается развернуть webapp до http://localhost:7777/manager/deploy
, а tomcat7 - URL-адрес развертывания http://localhost:777/manager/html/deploy
. Кажется, что нет способа указать это как конфигурацию плагина.
Ответ 2
Чтобы ответить на этот вопрос, я на самом деле столкнулся с этой проблемой, настроив свой ящик ubuntu недавно, и мое решение вместо /html было на самом деле указывать на /text: Code:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<username>admin</username>
<password>admin</password>
</configuration>
</plugin>
Ответ 3
Решение, описанное в http://mycodenotes.wordpress.com/2011/01/25/mvn-tomcatdeploy-to-tomcat-7/, работало для меня.
Плагин mvn tomcat-maven-plugin отлично работает с tomcat 5.5, но при попытке развернуть его в экземпляр tomcat 7 он дает ошибку 403. Оказывается, tomcat 7 изменил URL-адреса для развертывания, поэтому вам нужно настроить плагин для использования этого другого URL-адреса. Вы можете сделать это со следующей конфигурацией плагина:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager/html</url>
</configuration>
</plugin>
Магия находится в настройке URL, которая теперь использует /manager/html, а не по умолчанию URL-адрес just/manager. Исходный источник для этой информации: http://www.jroller.com/Fabszn/entry/tomcat_7_et_le_plugin
Ответ 4
Это работает со следующими настройками:
MAVEN_HOME/CONF/settings.xml:
<server>
<id>myTomcat</id>
<username>admin</username>
<password>admin</password>
</server>
TOMCAT_HOME/CONF/кот-users.xml:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script" />
pom.xml:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<server>myTomcat</server>
<url>http://localhost:8080/manager/text</url>
<path>/${project.build.finalName}</path>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Развертывание с помощью
mvn clean install tomcat7:redeploy