部署WAR文件在Tomcat上给我一个404状态代码?

时间:2010-07-29 17:01:04

标签: java tomcat deployment

我对Tomcat很新。我只是设法构建一个项目并将其导出为WAR文件。我尝试手动将WAR文件复制到Tomcat文件夹,然后重新启动。它创建了文件夹结构和所有内容,但是当我尝试访问应用程序时,我获得了404状态代码。我尝试通过Tomcat管理面板部署它,但我看到了相同的行为。我做了什么从根本上错了吗?

12 个答案:

答案 0 :(得分:10)

假设您拥有Tomcat安装的完全权限,请尝试转到http://localhost:8080/manager/html/,如果您不知道进入该区域的密码,请在{{{{}}中查找tomcat-users.xml文件1}}目录,应该有它。如果它中没有条目,那么您将需要添加如下条目:

${tomcat-installation}/conf

查看您的应用程序是否显示在该屏幕中,如果出现,请单击该链接,看看是否可以将您带到任何地方。如果没有,那么我建议遵循ifishers的建议,并查看日志文件以查看它是否列出任何错误。

但长话短说,很可能是因为项目的<user username="username" password="password" roles="admin,manager" />

而搞砸了

答案 1 :(得分:3)

我最好的猜测是你没有在web.xml中配置欢迎文件。如果你去/ app /你需要一些默认文件。通常,人们要么创建了index.html,要么使用欢迎文件设置将用户指向正确的jsp。

答案 2 :(得分:3)

我有同样的问题。 我的问题是我的应用程序名称和war文件名不同。 我已将war文件名更改为我的应用程序名称。

这里,当您的应用程序部署时,tomcat会自动提取具有相同名称的war文件。在我的情况下,我的服务名称是my-web-service(即https://localhost:8080/my-web-service/),我的war文件名是MY-java-connector-0.0.1-SNAPSHOT.war(这是我的项目文件夹名称)。现在tomcat正在寻找my-web = service文件夹,它找到了epicor-java-connector-0.0.1-SNAPSHOT文件夹。所以将文件夹重命名为my-web = service.war,它正在运行。

答案 3 :(得分:3)

我有同样的问题,我的问题是我通过sftp将文件直接复制到tomcat的webapps目录中,这可能导致轮询问题导致它无法正确部署。 Tomcat监视webapps目录,当它看到.xml它会破解并做它的事情,问题是也许所有东西都没有被复制过。 :(

最好创建一个暂存文件夹,将war移动或复制到该文件夹​​,然后使用linux mv命令将其移动到webapps中 - mv是原子的,所以tomcat在操作完成之前不会做任何事情。< / p>

魔术。

归功于我在javarance上发现的非常随机的帖子,后者又导致:http://pub.admc.com/howtos/tomcat/ch02.html#stagedir-section

希望这有助于其他人:)

答案 4 :(得分:2)

在最近的时间里,如果JAVA_HOME指向的Java版本比WAR中的代码更早,则可能会出现这种情况。 Tomcat可能使用JAVA_HOME来确定在Tomcat的BIN目录中运行startup.bat后显示的JRE_HOME。尽管Tomcat可能会对它获得的Java版本感到满意,但对于应用程序来说,这可能还不够。就我而言,Tomcat 8.0.49可以在JDK1.7上正常运行,而应用程序根本没有初始化(是的,这是一个Spring Boot应用程序,正在解压缩WAR,仅此而已)-没有给出任何错误。将JAVA_HOME设置为JDK1.8的位置后,问题得以解决。

答案 5 :(得分:1)

我也遇到了这个问题。

我的简单迂回解决方案是更改docBase路径。

时出现

问题

docBase=".../tomcat/webapps/app_name.war";

解决问题

docBase=".../tomcat/webapps/app_foldername/web"

答案 6 :(得分:0)

我遇到了与tomcat相同的问题,并通过强制我的IDE创建一个web.xml文件来修复它。我失踪了。它会部署项目,但我仍然会得到404错误。我阅读了其中几篇教程,但无济于事。我在某处读到了需要正确配置web.xml文件的地方。在WEB-INF文件夹中找到web.xml,没有文件夹,也没有web.xml文件。我做了一个快速谷歌如何使用我的IDE创建,然后使用web.xml输出编译我的程序,它解决了我的问题。希望有所帮助。干杯!

答案 7 :(得分:0)

FWIW我遇到了这个问题并通过发现我正在访问错误的主机来修复它,例如“http://wronghost:8080/why_is_this_war_not_there”所以如果它在catalina.out / localhost中说“XX.war已成功部署”。*。可能是粉丝的暗示。

答案 8 :(得分:0)

如果您像我一样使用Spring-Boot创建WAR文件,请确保将以下内容添加到主Application文件中。

@SpringBootApplication
public class serverTestApplication extends SpringBootServletInitializer {


    public static void main(String[] args) {
        SpringApplication.run(serverTestApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(serverTestApplication.class);
    }
}

我在这个问题上停留了一段时间,浏览了许多指南。这是最后显示我没有正确配置我的应用程序的视频: https://www.youtube.com/watch?v=05EKZ9Xmfws

答案 9 :(得分:0)

如果尚未创建任何欢迎页面(如index.html JSP或其他内容),则创建一个欢迎页面。项目必须具有索引页。我刚刚创建了一个say index.html,问题就解决了。???

答案 10 :(得分:0)

我有同样的问题。就我而言,日志文件中没有错误,定义了一个欢迎页面,该页面在Tomcat管理器webapp中列出,并且在我的dev机器上已部署并正常工作。但是,通过http://example.com/myApp访问该应用程序只是返回了404错误。

事实证明,问题出在Apache配置中。 Apache没有安装点,因此它不知道将那些请求代理到Tomcat。

添加适当的指令可解决此问题:

ProxyPass /myApp ajp://127.0.0.1:8009/myApp

答案 11 :(得分:-1)

你试过吗

localhost:8080/app

假设您的war文件是app.war?

编辑评论 - 然后你的web.xml搞砸了。