外置tomcat部署项目(容器化适配)

1、增加servlet启动方式 ServletInitializer

把ServletInitializer复制到启动类目录,和启动类同包同目录。

2、修改组件类型为war(不添加的话默认打包类型为jar)

在pom文件中添加如下配置

<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

因为打包时会出现如下错误:

将其找不到的文件忽略即可

参考链接:https://blog.csdn.net/dalei9243/article/details/118752204

3、将tomcat上传至服务器指定目录

以下是tomcat目录结构

4、将项目打成的war包放到tomcat的webapp目录下

5、进入tomcat的bin目录下,修改catalin.sh文件 

必要:(添加如下一行【将启动的服务注册至nacos】:wq保存)  

-Dnacos.standalone=true -Dnacos.address=localhost:8848"

6、进入bin目录下启动tomcat:sh start.sh

问题整理

1、spring-cloud应用无法部署在同一个容器中的问题(启动子项出错):

 在yml文件中添加如下配置,用于区分 : spring.jmx.default-domain:xxx(服务名)

详细教程:https://blog.csdn.net/cnhome/article/details/52249289

2、tomcat sh shutdown.sh 杀死不了tomcat:

Linux版

第一步 :vim修改tomcat下bin/catalina.sh文件,添加如下,主要是记录tomcat的pid,如下:

第一步 :vim修改tomcat下bin/catalina.sh文件,添加如下,主要是记录tomcat的pid,如下:

第二步 vim tomcat的shutdown.sh文件,在最后一行加上-force:

详细教程:无法杀死tomcat

windows版

执行shutdown.bat脚本。需要注意的是:得等服务彻底起来之后再执行该脚本,否则无法立刻杀死。

3、网关无法调用外置tomcat中启动的服务:404(重点)

gateway网关由于其特殊性,不能在tomcat的wabapp目录下启动,只能通过常规的jar包目录,命令形式或其他形式启动.

解决方案:

(个人排查问题时:新建了一个spring cloud gateway项目,启动最小化项目进行测试网关无法访问内部问题 )网站:https://start.spring.io/ 引入项目

方案一:重写路由的方式:这里我是通过重写路由的方式实现的,因为我个人通过添加路由前缀和截断的方式并没有生效:

- RewritePath=/api-form/?(?<segment>.*),/xxxx-form-app/$\{segment} 

初始化项目网关配置(个人验证问题时的配置)

方案二:添加路由前缀和截断方式的教程:https://blog.csdn.net/cnhome/article/details/52249289

注:外置tomcat启动的项目,访问路径变成其具体服务的包名

内置tomcat时访问路径:192.168.1.142/api/api-form/form/core/formPc/query

外置tomcat时访问路径:192.168.1.142:8080/lanxxx-form-app/form/core/formPc/query

如果网关服务注册到了nacos,直接修改nacos上的配置文件即可

4、内部feign调用404问题:

当我们解决了外部调用404的问题之后 就要考虑内部feign调用时路径拼接是否正确,

方式一:为每一个feign接口添加上我们tomcat里启动服务的包名:

/xxx-bpm-app/bpm/core/bpmInst/getMyAllDraftBpmInst,

方式二:配置全局feign接口访问前缀,需根据当前路径前缀决定拼接的前缀为哪个具体的服务.(目前采用的是方案一)

如bpm,全局feign前缀需要根据当前路径前缀做判断。

a6579fce910990fa3b445ba4d4ccc050.png

5、无法绑定语句错误:invalid bound statement not found

需要将mapper.xml配置文件等源码(resource)拷到tomcat的webapp目录下WEB-INF下的classes目录下。注意:一定要重启tomcat,否则不生效。

6、各服务单独打包报找不到符号:

1、在root下clean===>install

2、这时单独打包就不报错了

7、启动tomcat 打开文件过多报错

方案一:修改最大文件数:

1、vim /etc/security/limits.conf

添加如下参数:

2、

使用命令:ulimit -a 查看每个用户允许打开的最大文件数

ulimit -n 65535(设置文件限制数)

详细教程:Tomcat报java.io.IOException: 打开的文件过多_运维笔录 美玲的技术博客_51CTO博客

方案二:

将tomcat内存调大

linux系统编辑catalina.sh文件:vim /home/chrtc/jar/apache-tomcat-9.0.67/bin/catalina.sh

添加如下参数:JAVA_OPTS="$JAVA_OPTS -Xms4g -Xmx4g"(具体多大由我们自己设置)

修改后重启tomcat生效。

详细教程:Tomcat修改内存_tomcat设置内存大小_爱人间的博客-CSDN博客

8、bpm流程服务启动失败

通过排查后发现,通过war包启动并没有走重写的doStart方法,故报空指针异常这与tomcat的classloader加载原理有关.

解决方案:

将整个包拷到bpm-app下

重新打包部署。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值