我非常努力地在不使用我的IDE(Intellij)的情况下部署我的网站。我有一些重大问题。一旦我解决了一个问题,我就遇到了另外一个障碍,这使我花了几天的挫败感,放弃并回到它身边,甚至离得更近了。所以我希望有人可以在这里帮助我!
首先,我正在使用Intellij,Tomcat 8,JSF和Maven。首先,我对一些事情感到困惑,第一件事是tomcat甚至知道如何部署。其次,经理到底是什么
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.build.finalName}</path>
<update>true</update>
<url>http://localhost:8080/manager/text</url>
<username>tomcat</username>
<password>tomcatuser</password>
</configuration>
</plugin>
第三,文件结构应该看起来如何。因为如果您使用的是apache tomcat,是否所有文件也都进入项目结构?或者,您可以将tomcat分开放置,而只是将您的tomcat链接到包含您的应用程序的正确目录吗?
<role rolename="tomcat" />
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="admin-gui" />
<user username="tomcat" password="tomcatuser"
roles="tomcat,manager-gui,admin-gui,manager-script" />
截至目前,我将apaches文件夹中的所有文件都放入项目的主目录中,因为我遇到了问题并且厌倦了尝试对其进行修复。现在,我正在尝试部署(老实说,我不确定部署和运行之间的区别是什么),我猜测也许部署会重新创建war文件?而运行只是运行当前的war文件?反正不是重点。运行似乎正常,唯一的问题是我无法通过关机停止服务。而且它也有我不想要的上下文路径。如果可能,我不希望使用上下文路径。
下一个问题是,当我运行tomcat7:deploy(在ide中)时,它给了我这个错误。
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy (default-cli) on project JavaServerFaces: Tomcat return http status error: 404, Reason Phrase: Not Found: -> [Help 1]
我认为是因为没有/ manager / text ....,但是我什至不知道经理是什么,所以我有点迷失了。希望有人可以帮助我更好地了解apache tomcat如何构造/完成所有事情。
最佳答案
根据Servlet API,每个Web应用程序都必须打包在自己的“ war”文件中。这是Tomcat的一部分。这适用于任何标准Java Web应用程序服务器。
在Tomcat中部署应用程序several ways。使用Tomcat管理器进行的部署为one of them。 Tomcat管理器只是带有special permissions的另一个Web应用程序,就像部署应用程序所需的一样。管理器应用程序通常与Tomcat binaries一起分发。
Tomcat是服务器。它生活在自己的进程中,默认情况下通过8080端口与世界通信。安装了管理器后,其他进程便可以通过HTTP请求部署应用程序。浏览器或任何其他用户代理。
您的IDE将启动一个Maven进程,该进程使用正式的tomcat7-maven-plugin来执行此类请求。反过来,该插件需要已部署的管理器应用程序,因为它将以war文件为主体执行an HTTP PUT request以便部署您的应用程序。注意,您可以在IDE外部运行Maven,只需要pom.xml文件。
用户和角色文件只是Tomcat中几种可能的身份验证配置之一所需的(全局)文件:MemoryRealm。请注意,经理应用程序在那里需要special roles。
我认为HTTP 404错误是由于您在目标插件所指向的目标Tomcat服务器中没有管理器应用程序而导致的。只需按照Manager App HOWTO的步骤进行正确配置即可。
运行和部署goals of the tomcat7-maven-plugin之间的区别在于,运行将在同一Maven进程中将服务器嵌入其中,而部署目标旨在将War文件部署在另一个可能是远程的进程中。我不知道关机目标无法正常工作,也许您找到了答案in a smiliar question。
还要遵循similar questions,以便将应用程序部署为“ ROOT”应用程序。
希望能有所帮助。