广告位联系
返回顶部
分享到

springboot /tmp临时目录的具体实现

java 来源:互联网 作者:佚名 发布时间:2024-06-27 21:44:20 人浏览
摘要

1.生成机制 在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下

1.生成机制

在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。

因为流取一次消费之后,后面无法再从流中获取数据,所以缓存方便后续复用;

2.产生异常

上线后可能tomcat临时文件夹会被Linux删除,会报找不到错误,现在赶紧记录一下,已被不时之需

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

cat /usr/lib/tmpfiles.d/tmp.conf

#  This file is part of systemd.

#

#  systemd is free software; you can redistribute it and/or modify it

#  under the terms of the GNU Lesser General Public License as published by

#  the Free Software Foundation; either version 2.1 of the License, or

#  (at your option) any later version.

 

# See tmpfiles.d(5) for details

 

# Clear tmp directories separately, to make them easier to override

v /tmp 1777 root root 10d

v /var/tmp 1777 root root 30d

 

# Exclude namespace mountpoints created with PrivateTmp=yes

x /tmp/systemd-private-%b-*

X /tmp/systemd-private-%b-*/tmp

x /var/tmp/systemd-private-%b-*

X /var/tmp/systemd-private-%b-*/tmp

3.解决办法

3.1 重启大法

既然目录被删除了,重启一下服务,让系统重新生成该目录,临时解决(但是以后目录还可能被删除)

3.1 从Linux层面修改 /tmp目录的清理策略

配置一下不删除tmp目录下的tomcat

1

2

3

4

5

6

7

8

vim /usr/lib/tmpfiles.d/tmp.conf

 

# 添加下面一行

 

x /tmp/tomcat.*

 

# 重启服务

systemctl restart systemd-tmpfiles-clean

3.2 增加JVM配置

1

2

#定临时目录为/app/xxx/tmp

-Djava.io.tmpdir=/app/xxx/tmp(自定义路径)

3.3 增加JVM配置

1

-java.tmp.dir=/data/upload_tmp

3.4 添加spring boot配置

1

2

3

4

spring:

  http:

    multipart:

      location: /data/upload_tmp

3.5 使用配置类配置

在Spring容器中注册MultipartConfigElement对象,通过MultipartConfigFactory指定路径,路径不存在的话就创建

1

2

3

4

5

6

7

8

9

10

11

@Bean

public MultipartConfigElement multipartConfigElement() {

    MultipartConfigFactory factory = new MultipartConfigFactory();

    String location = System.getProperty("user.dir")+"/data/tmp";

    File tmpFile = new File(location);

    if (!tmpFile.exists()){

        tmpFile.mkdirs();

    }

    factory.setLocation(location);

    return factory.createMultipartConfig();

}


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Spring AOP中的环绕通知介绍

    Spring AOP中的环绕通知介绍
    一、什么是AOP? Aspect Oriented Programming(面向切面编程) AOP是Spring框架的第??核?(第??核?是IoC) AOP是一种思想,是对某一类事情的集中处理。 其
  • springboot /tmp临时目录的具体实现
    1.生成机制 在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,
  • java计算日期相差天数的4种简单方法介绍
    方法1:long值相减(推荐) 1 2 3 4 5 6 7 8 9 10 11 12 public static void main(String[] args) { DateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); try { Date
  • SpringCloudStream原理和深入使用介绍

    SpringCloudStream原理和深入使用介绍
    Spring Cloud Stream是一个用于构建与共享消息传递系统连接的高度可扩展的事件驱动型微服务的框架。 应用程序通过inputs或outputs来与Spring Clo
  • gRPC在Java中的实现与应用介绍
    gRPC是由Google开发的高性能、开源的通用远程过程调用(RPC)框架,它基于HTTP/2标准设计,提供了多语言支持,包括Java、C++、Python等。gRPC特别适
  • SpringBoot中@FeignClient注解的作用
    在微服务架构中,服务之间的调用是非常频繁的。为了简化服务之间的调用,Spring Boot 提供了一个叫做 Feign 的组件。Feign 可以帮助我们定义
  • MyBatis-Plus介绍及Spring Boot 3集成指南

    MyBatis-Plus介绍及Spring Boot 3集成指南
    我们每个Java开发者都在使用springboot+mybatis开发时,我们经常发现自己需要为每张数据库表单独编写XML文件,并且为每个表都需要编写一套增
  • MyBatis与Spring中的SqlSession介绍
    在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。 一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接
  • java获取IP和IP的归属地的方法

    java获取IP和IP的归属地的方法
    在Java中,获取IP地址通常指的是获取本地机器的IP地址或者通过某种方式(如HTTP请求)获取的远程IP地址。代码案例如下: 而要获取IP的归属
  • idea没有services窗口、没有springboot启动项问题

    idea没有services窗口、没有springboot启动项问题
    idea没有services窗口、没有springboot启动项 idea没有services窗口 没有springboot启动项。 如果是找不到services窗口,可以在views的tools Windows下找到
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计