gpt4 book ai didi

java - tomcat在startup/catalina脚本中的爆战和手动爆战的区别?

转载 作者:行者123 更新时间:2023-11-28 22:11:15 29 4
gpt4 key购买 nike

我已将我的 .war 文件复制到本地 tomcat 服务器的 webapps 文件夹中。当我启动 tomcat 时,.war 被分解为与我用 jar -xf 手动分解时不同的结构。当我手动展开 .war 时,我将 WEB-INF 文件夹作为 app 文件夹的子文件夹(如下)。这就是我想要的。

两者启动都很好,但是当 tomcat 爆炸我的 war 时,发送资源请求总是返回 404。我认为 WEB-INF 需要是爆炸 war 目录的子目录才能请求返回 200。手动爆炸 .war inside webapps然后运行 ​​tomcat 工作,并在自动爆发 war 后停止 tomcat,将 WEB-INF 向上移动一级,然后重新启动 tomcat 也可以工作。

有没有办法打包我的 war 以便 tomcat 将 WEB-INF 作为展开的 war 目录的直接子目录展开它?为什么 tomcat 引爆 war 与 jar -xf 有什么不同?

Tomcat

exploded_war
├── app_name
│   └── WEB-INF
│   ├── classes
│   │   └── ...
│   ├── servlet.xml
│   ├── lib
│   │   ├── ...
│   └── web.xml
└── META-INF
└── ...

手动

exploded_war
└── WEB-INF
├── classes
│   └── ...
├── servlet.xml
├── lib
│   ├── ...
└── web.xml

编辑 - 这是我在项目文件夹中执行的构建脚本 -

mvn package
cp src/WEB-INF/*.xml /target/app_name/WEB-INF
cd target
jar -cvf app_name.war app_name/WEB-INF
cp app_name.war {path_to}/apache-tomcat-8.5.13/webapps

最佳答案

您的 WAR 文件结构不正确。 WAR 文件不得在其根目录中包含应用程序名称文件夹。您需要从 jar 命令中删除 app_name 文件夹。

    mvn package    cp src/WEB-INF/*.xml /target/app_name/WEB-INF     cd target/app_name    jar -cvf ../app_name.war WEB-INF     cd ..    cp app_name.war {path_to}/apache-tomcat-8.5.13/webapps

例如,请参见以下屏幕截图:

WAR Structure

关于java - tomcat在startup/catalina脚本中的爆战和手动爆战的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476459/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com