首页 文章

启动/ catalina脚本中的tomcat爆炸战争和人工爆炸战争之间的区别?

提问于
浏览
1

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

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

有没有办法打包我的战争,以便tomcat将爆炸与WEB-INF作为爆炸的战争目录的直接孩子?为什么tomcat爆炸战争与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

1 回答

  • 1

    您的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

相关问题