编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

在Docker中给JDK打补丁(docker部署jenkins)

wxchong 2024-10-12 12:40:45 开源技术 11 ℃ 0 评论

最近在开发的时候碰到一个问题,就是在用到WxJava接口中去对AES进行解析的时候,碰到了拷贝数组越界异常

me.chanjar.weixin.common.error.WxRuntimeException: java.lang.IllegalArgumentException: 20 > -1508095332

经过排查之后发现这是由于在公众号里面配置的消息加密模式为安全模式,那么所有的信息都会用AES进行加密之后发送过来,而这个在解析的时候会报错,异常报错正常来说也没什么问题,后面去解决就好了,但是随之而来发现另一个问题,就是内存从原来的700M,暴涨到7G,这个内存暴涨情况就很严重了,会对其他服务有影响,于是进行排查,发现这个是在jdk 1.8里面出现的内存暴涨的源头,于是查找到需要去给jdk打补丁。

  • JRE/JDK 8:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

如果安装了JRE,将两个jar文件放到$JAVA_HOME/lib/security目录下覆盖原来的文件

如果安装了JDK,将两个jar文件放到$JAVA_HOME/jre/lib/security目录下覆盖原来文件

由于我们的系统是在Docker中运行的,在Docker中,如果你在容器运行时对文件进行修改,当容器重新启动时,所有的改动都将会丢失。这是因为Docker容器的设计理念是"不可变的",也就是说,一旦容器创建,其内部的状态就不应再改变。这样做的好处是可以确保容器的可移植性和可复制性。为了在Docker中给JDK打补丁,就需要在Docker镜像构建时就应用这些补丁。

简单点说就是要把这两个补丁文件放在我们的jar包里面一起传到服务器,然后Docker构建的时候自动把这两个补丁文件放到对应目录上,这样才能在Docker上完成修复的过程。

COPY target/classes/your-patch-file $JAVA_HOME/jre/lib/security/your-patch-file

打包发布之后,发现程序依旧会有报错,但是目前来看内存不会暴涨到7G的情况,后面还要继续观察,看是否需要哪里进行优化。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表