记录一次坑爹的Tomcat部署

来源:互联网 发布:csgo n卡优化 编辑:程序博客网 时间:2024/05/17 01:15

记录一次坑爹的Tomcat部署

- 0x00 前言
最近在做项目的时候, 为了API项目和前端配合, 所以决定用Jenkins做持续集成并部署到Tomcat, 然后再搭建一个Nginx做前端服务器。安装Jenkins、安装Deploy插件、创建项目、配置Subversion、配置Maven、配置Deploy… 一切顺利, 看到打了war成功的放到Tomcat上面啦! WTF? 两个WAR包, 第一个WAR包能正常启动, 第二个WAR包启动不起来?

ERROR: Build step failed with exceptionorg.codehaus.cargo.container.ContainerException: Failed to deploy .......Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Deployed application at context path /restapi-operate but context failed to start......Build step 'Deploy war/ear to a container' marked build as failureFinished: FAILURE



- 0x01 解决过程
难道还需要再配置context? 恩, 果然, 并没什么卵用。
于是乎我重启了下tomcat,发现在tomcat也是只能启动一个,但是可以进到Tomcat的manager点击star按钮启动第二个war包。嗯, 大概知道原因。
好吧,原来啊,我是将2个WAR包部署到Tomcat上的,然鹅我并没有在这两个项目中的web.xml配置

<context-param>    <param-name>webAppRootKey</param-name>    <param-value>operation.root</param-value></context-param>

如果我不配置webAppRootKey, 那么问题来了, 这个webAppRootkey它缺省值是webapp.root, 所以呢,我两个项目的都是webapp.root,导致冲突了, 所以只启动了一个。


- 0x02 解决方案
给两个项目的web.xml文件分别配置上webAppRootKey,但是param-name的值不能一样,也不要是webapp.root


1. 项目一的web.xml增加配置

<context-param>    <param-name>webAppRootKey</param-name>    <param-value>operation.root</param-value></context-param>



2. 项目二的web.xml增加配置

<context-param>    <param-name>webAppRootKey</param-name>    <param-value>supplier.root</param-value></context-param>



3. 提交代码到svn
4. Jenkins重新对两个项目进行构建。
5. 看到Jenkins构建成功,并部署到Tomcat成功

原创粉丝点击