国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17)

這篇具有很好參考價(jià)值的文章主要介紹了一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

準(zhǔn)備工作:

第一步、漏洞掃描工具trivy;
第二步、掃描后的漏洞存在鏡像漏洞,中間件漏洞和代碼jar包漏洞;
第三步、區(qū)分對外和不對外的服務(wù),先更新對外服務(wù);
第四步、找出一個(gè)對外服務(wù)需要升級的jar
1、spring-web需要升級到6.x,spring-boot需要升級到3.x,JDK需要升級到JDK17(Oracle JDK17三年免費(fèi)授權(quán)從2021年9月到2024年9月,現(xiàn)在已經(jīng)2024年了,所以需要使用OpenJDK17),Java EE轉(zhuǎn)Jakarta;因?yàn)槭褂昧薕penJdk17,cglib代理在2019年8月停止更新,OpenJDK17是2019年9月出來的,也不支持需要修改;
第五步、OpenJDK17需要使用IDEA2022.x才行,升級IDEA;
第六步、下載OpenJDK17

開始處理

第一步、升級OpenJDK(解壓好就可以了);
第二步、更新IDEA的JDK配置
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
第二步、更新Maven配置
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
第三步、升級Jar包,根據(jù)具體使用到的jar更新

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.13</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>jakarta.faces</groupId>
            <artifactId>jakarta.faces-api</artifactId>
            <version>3.0.0</version> <!-- 使用適當(dāng)?shù)陌姹咎?-->
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>4.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>4.0.2</version>
        </dependency>

使用了lombok,可能需要升級,否則編譯報(bào)錯(cuò)

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
            <optional>true</optional>
        </dependency>

Spring-boot 3.x已經(jīng)不使用WebMvcConfigurerAdapter實(shí)現(xiàn)MVC定制,需要替換為WebMvcConfigurer,可以繼承WebMvcConfigurationSupport

使用的HandlerInterceptorAdapter可能不能使用,可以實(shí)現(xiàn)HandlerInterceptor代替

使用了Swagger2,需要移除,swagger2使用javax.servlet.http.HttpServletRequest,會(huì)出現(xiàn)Type javax.servlet.http.HttpServletRequest not present錯(cuò)誤,OpenJDK17使用Jakarta;替換為

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.0.2</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>io.springfox</groupId>-->
<!--            <artifactId>springfox-swagger2</artifactId>-->
<!--            <version>3.0.0</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>io.springfox</groupId>-->
<!--            <artifactId>springfox-swagger-ui</artifactId>-->
<!--            <version>2.9.2</version>-->
<!--        </dependency>-->
@Configuration
public class Swagger3Configuration {
    /**
     * 版本
     */
    private static final String VERSION = "1.0.0";

    private static final String TITLE = "Tracker-API";

    private static final String DESCRIPTION = "Tracker-API接口文檔";

    @Bean
    public OpenAPI springOpenAPI() {
        return new OpenAPI().info(new Info()
                .title(TITLE)
                .description(DESCRIPTION)
                .version(VERSION));
    }
}

標(biāo)簽替換,使用IDEA的批量替換功能,根據(jù)項(xiàng)目實(shí)際情況調(diào)整,可以刪除一些不知道的屬性

@Api(tags = "")@Tag(name = "")
@ApiIgnore→或@Parameter(hidden = true)@Operation(hidden = true)@Hidden
@ApiImplicitParam@Parameter
@ApiParam@Parameter
@ApiImplicitParams@Parameters
@ApiModel(value = "", description= "")@Schema(name= "", description= "")
@ApiModelProperty(value = "", required = true, hidden = true)@Schema(name= "", required = true, accessMode = READ_ONLY)
@ApiOperation(value = "", notes = "")@Operation(summary = "", description = "")
@ApiResponse(code = 404, message = "")@ApiResponse(responseCode = "404", description = "")

第四步、Java EE轉(zhuǎn)Javarta EE
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java
第五步、更新Cglib

<dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
            <version>1.14.11</version>
        </dependency>
        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
            <version>1.14.11</version>
        </dependency>
 inst = new ByteBuddy()
 						//以前cglib代理類
                        .subclass(代理類.class)
                        .method(ElementMatchers.any())
                        //以前cglib代理方法,proxy就是代理對象
                        .intercept(InvocationHandlerAdapter.of((proxy, method, args) -> intercept(proxy, method, args)))
                        .make()
                        .load(MyJedis.class.getClassLoader(), ClassLoadingStrategy.Default.INJECTION)
                        .getLoaded().newInstance();

制作鏡像

第一步、制作基礎(chǔ)鏡像
選擇的是alpine

#執(zhí)行命令 
docker pull alpine
#查看鏡像,一般是最前面一個(gè)
docker images
#登錄鏡像
docker run -it 鏡像ID /bin/sh
#更新安裝包
apk update
# 安裝OpenJDK等
apk add openjdk17 busybox tzdata curl
#安裝/bin/bash
apk add bash
#從新打開一個(gè)窗口,把容器打包成鏡像
docker commit 容器ID xxx.xxx.xxx:alpine-openjdk17-base
#上傳鏡像
docker push 域名:/位置

第二步、更新Dockerfile文件

#獲取基礎(chǔ)鏡像
FROM 域名:/位置/alpine-openjdk17-base
#設(shè)置環(huán)境變量
ENV JVM_OPTS -Xms1024m -Xmx1024m
ENV application xxxxx
ENV apollo false
#從根目錄創(chuàng)建文件夾名稱
RUN mkdir -p /app/$application/conf
COPY target/$application /app/$application
WORKDIR /app/$application
#執(zhí)行命令,在反射時(shí),會(huì)拋出模塊等異常,需要加入add-opens參數(shù)
CMD exec java -Dapollo.enable=${apollo} -Denv=${ENV} --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED $JAVA_OPTS $JVM_OPTS -jar -Xbootclasspath/a:conf xxxxx.jar

如果存在-XX:+UseConcMarkSweepGC JVM參數(shù),需要移除,JDK17已經(jīng)沒有這個(gè)垃圾回收器了;

使用了.gitlab-ci.yml需要更新文件,指定JDK版本

第一步、在GitLab服務(wù)器上上傳解壓的JDK17,獲取解壓路徑;
第二步、在編譯時(shí)指定編譯JDK;
一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java

流水線打包

一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java

鏡像發(fā)布

一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17),java文章來源地址http://www.zghlxwxcb.cn/news/detail-809308.html

到了這里,關(guān)于一次項(xiàng)目漏洞升級的過程(JDK8升級到JDK17)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java jdk8和jdk17同時(shí)存在【環(huán)境配置】

    java jdk8和jdk17同時(shí)存在【環(huán)境配置】

    jdk8:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html jdk17:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html PS:jdk8在下載結(jié)束,安裝的時(shí)候,需要有兩個(gè)文件分別是jre和jdk JRE: 是Java Runtime Environment,是java程序的運(yùn)行環(huán)境。既然是運(yùn)行,當(dāng)然要包含

    2024年02月07日
    瀏覽(31)
  • IDEA構(gòu)建springBoot新項(xiàng)目時(shí)JDK只有17和21,無法選擇JDK8解決方案

    IDEA構(gòu)建springBoot新項(xiàng)目時(shí)JDK只有17和21,無法選擇JDK8解決方案

    今天創(chuàng)建springboot新項(xiàng)目時(shí),發(fā)現(xiàn)IDEA里JDK選項(xiàng)只有17和21,無法選擇本機(jī)的JDK8,網(wǎng)上查資料后發(fā)現(xiàn)是springboot2.7于11.24號后停止維護(hù),基于2.7和java8的spring Initializ官方不再維護(hù),解決方案是在server?URL欄,改start.spring.io為阿里源:https://start.aliyun.com/

    2024年01月17日
    瀏覽(27)
  • Mac卸載jdk8,安裝jdk17

    Mac卸載jdk8,安裝jdk17

    本次操作基于MacBook 因?yàn)楣ぷ餍枰?,需要將jdk版本由jdk8升級到j(luò)dk17,同一臺(tái)機(jī)器上是可以同時(shí)安裝多個(gè)版本的jdk的,但是為了避免一些沖突和未知問題,這里直接卸載舊版本jdk,然后再重新安裝新版本。 先查看本機(jī)安裝的jdk: 刪除java運(yùn)行環(huán)境: 到j(luò)ava的目錄,用ls命令查看機(jī)

    2024年02月08日
    瀏覽(27)
  • JDK8 升級至JDK19

    JDK8 升級至JDK19

    優(yōu)質(zhì)博文IT-BLOG-CN 目前部分項(xiàng)目使用 JDK8 ,部分項(xiàng)目使用 JDK19 因此,環(huán)境變量中還是保持 JDK8 ,只需要下載 JDK19 免安裝版本,通過配置 IDEA 就可以完成本地開發(fā)。 【1】通過快捷鍵 CTRL + SHIFT + ALT + S 或者 File-Project Structure... 設(shè)置 SDK 和 Language level ,不存在 JDK19 時(shí)可通過 Edit

    2024年02月19日
    瀏覽(16)
  • SpringBoot2.7升級項(xiàng)目到Springboot3.1踩坑指南(jdk17/jdk21)

    由于SpringBoot3.x全面擁抱JDK17,兼容jdk21,jdk17乃是大勢所趨。這里是從SpringBoot2.7--SpringBoot3.1踩坑指南。 提前閱讀:jdk8升級JDK17避坑指南(適用于SpringBoot2.3—SpringBoot2.7升級) 國內(nèi)頂級開源項(xiàng)目升級到springBoot3情況,可以作為升級SpringBoot3的風(fēng)向標(biāo)。僅對比國內(nèi)規(guī)模使用,落地過

    2024年03月09日
    瀏覽(28)
  • Java升級JDK17(更高版本同理),修改maven

    記住三個(gè)網(wǎng)址就行:下面這個(gè)是oracle的 Java Platform, Standard Edition 17 ReferenceImplementations https://www.oracle.com/java/technologies/downloads/#jdk17-windows 另外一個(gè) redhat旗下的:這個(gè)是開源的(推薦這個(gè)?。?Red Hat build of OpenJDK Download | Red Hat Developer 找到想要的版本下載即可 注意:JDK9的時(shí)候,

    2024年02月11日
    瀏覽(20)
  • JDK8和JDK17安裝切換,IDEA配置多個(gè)版本JDK

    JDK8和JDK17安裝切換,IDEA配置多個(gè)版本JDK

    JAVA之父高斯林推薦我們用JDK17,請盡快離開JDK8。JDK17 LTS在每個(gè)維度上都是一個(gè)巨大的飛躍: 在Java 17正式發(fā)布之前,Java開發(fā)框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3計(jì)劃在2022年第四季度實(shí)現(xiàn)總體可用性的高端基線: Java 17+(來自 Spring Framework 5.3.x 線中的 Java 8-17)

    2023年04月27日
    瀏覽(27)
  • JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    JDK8,JDK11,JDK17,JDK21及中間版本主要更新特性

    官方地址: https://www.oracle.com/java/technologies/java-se-support-roadmap.html 從上圖可以很清晰得可以看出,JDK7,JDK8,JDK11,JDK17,JDK21是長期維護(hù)的版本。從目前來看,JDK8到2023年已經(jīng)有將近10年的歷史了,大多數(shù)依據(jù)JDK8的相關(guān)技術(shù)內(nèi)容已經(jīng)很成熟了,但是大家也看到,JDK在不斷地迭代,JD

    2024年02月21日
    瀏覽(24)
  • JDK8到JDK17有哪些吸引人的新特性?

    作者:京東零售?劉一達(dá) 2006年之后SUN公司決定將JDK進(jìn)行開源,從此成立了OpenJDK組織進(jìn)行JDK代碼管理。任何人都可以獲取該源碼,并通過源碼構(gòu)建一個(gè)發(fā)行版發(fā)布到網(wǎng)絡(luò)上。但是需要一個(gè)組織審核來確保構(gòu)建的發(fā)行版是有效的, 這個(gè)組織就是JCP(Java Community Process)。2009年,SUN公

    2023年04月18日
    瀏覽(31)
  • JDK8升級JDK11最全實(shí)踐干貨來了

    截至目前(2023年),Java8發(fā)布至今已有9年,2018年9月25日,Oracle發(fā)布了Java11,這是Java8之后的首個(gè)LTS版本。那么從JDK8到JDK11,到底帶來了哪些特性呢?值得我們升級嗎?而且升級過程會(huì)遇到哪些問題呢?帶著這些問題,本篇文章將帶來完整的JDK8升級JDK11最全實(shí)踐。 1)性能提升

    2024年02月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包