Tomcat

Exception in thread ""http-bio-xx-exec-xx" java.lang.OutOfMemoryError: PermGen spa...

﹥>﹥吖頭↗ 提交于 2020-12-05 04:51:18
问题描述: Exception in thread "http-bio-8081-exec-850" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-851" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-848" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-853" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-852" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-854" java.lang.OutOfMemoryError: PermGen space Exception in thread "http-bio-8081-exec-855" java.lang.OutOfMemoryError:

tomcat8 url包含|等特殊字符报错400的问题

自闭症网瘾萝莉.ら 提交于 2020-12-05 03:19:18
这个问题纠缠了我很久了,终于在今天早上解决了,感谢自己的不放弃和不断尝试的决心,我坚信,我可以找到解决方式!! 项目用的spring 、spring mvc、hibernate框架,关于统一错误页面在开发的过程中就做过编码,并且一直都很有效,像500,404,403等常规错误码都能得到有效处理, 但是400却不行,而且还暴露tomcat的版本信息,这是很严重的安全漏洞. 先按照网上的说法 将tomcat 8的conf路径下的 catalina.properties 文件进行修改,在最后加入一句:tomcat.util.http.parser.HttpParser.requestTargetAllow=|{} 允许tomcat接收“{”这样的特殊字符,重启后问题依然没有解决,又修改nginx配置文件也不行。 接着又查询到: 根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。 后来有人对此提出了异义,见: https://bz.apache.org/bugzilla/show_bug.cgi?id=60594 经过一番讨价还价,tomcat的开发人员增加一项设置,允许配置在url可以出现的特殊字符

升级到tomcat8碰到的问题总结

本秂侑毒 提交于 2020-12-04 23:56:44
一.url中特殊字符问题 根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。 后来有人对此提出了异义,见: https://bz.apache.org/bugzilla/show_bug.cgi?id=60594 经过一番讨价还价,tomcat的开发人员增加一项设置,允许配置在url可以出现的特殊字符,但也仅限于|,{,}三种,见:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other 该项设置在以下版本的tomcat中有效: - 8.5.x for 8.5.12 onwards - 8.0.x for 8.0.42 onwards - 7.0.x for 7.0.76 onwards 二.jso语法兼容问题: 如果使用到了jsp,则语法方面需要配置一下兼容:在catalina.properties里面加上: org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false org.apache.jasper.compiler.Parser.STRICT

初识springboot

依然范特西╮ 提交于 2020-12-04 18:33:58
springboot其实就是一个spring的框架,但是简化了一堆配置文件,你不需要再烦恼于一堆xml中,而且一个springboot工程还自带了tomcat,你可以非常方便与快速地开始一个javaweb项目。 现在先来讲一下如何开始一个springboot程序,springboot可以通过典型的java开发工具像eclipse或Idea来使用,也可以用命令行工具: Spring Boot CLI ,你需要jdk1.6以上的版本。 关于用命令行的方法就不说了,这里讲一下不用命令行的: 1.使用start.spring.io 这是个网站,是spring提供给我们快速开始一个spring应用的网站: 在这里你可以设置你的项目,选择需要的依赖dependencies,然后点击生成项目就可以下载到本地了,下载下来就是个maven项目,你可以直接用eclipse或者maven来打开它。 这里我们来讲一个用STS来开始一个springboot项目的helloworld例子: 首先点击file然后new,然后选择Spring Starter Project: (你会发现用的还是start.spring.io) 填好信息后下一步 这里选择springboot的版本还有需要的依赖dependencies,这里我们选择1.5版本先,然后依赖先只要一个web(先选了其他的话会有点不同)然后顺着点就好了

记录一次springboot+vue+axios进行大文件上传失败的问题(前端+后端)

 ̄綄美尐妖づ 提交于 2020-12-04 14:20:11
第一步:修改springboot multipart 的配置 spring: servlet: multipart: max -file - size: 5000MB max -request-size: 5000MB 第二步:修改tomcat服务器连接时间(还是springboot的配置文件) server: connection -timeout: 18000000 前端依旧报错:报错如下 第三步:增大前端VUE 发送异步请求axios的超时时间 customRequest(data){ // 上传提交 this. $message .success( " 文件正在上传! " ); const formData = new FormData() ; formData.append('file', data.file); console.log( " data " + data); formData.append('token', " token " ) this.axios({ method: 'post', timeout: 900000, // 这个就是重点 url: ' /hdfs/ saveFile', headers: { }, params:{ }, data: formData }).then((response) => { console.log

该死的线程池,是时候安排一下了

梦想的初衷 提交于 2020-12-03 22:44:11
前言 线程池可以说是 Java 进阶必备的知识点了,也是面试中必备的考点,可能不少人看了 这篇文章 后能对线程池工作原理说上一二,但这还远远不够,如果碰到比较有经验的面试官再继续追问,很可能会被吊打,考虑如下问题: Tomcat 的线程池和 JDK 的线程池实现有啥区别, Dubbo 中有类似 Tomcat 的线程池实现吗? 我司网关 dubbo 调用线程池曾经出现过这样的一个问题:压测时接口可以正常返回,但接口 RT 很高,假设设置的核心线程大小为 500,最大线程为 800,缓冲队列为 5000,你能从这个设置中发现出一些问题并对这些参数进行调优吗? 线程池里的线程真的有核心线程和非核心线程之分? 线程池被 shutdown 后,还能产生新的线程? 线程把任务丢给线程池后肯定就马上返回了? 线程池里的线程异常后会再次新增线程吗,如何捕获这些线程抛出的异常? 线程池的大小如何设置,如何 动态设置 线程池的参数 线程池的状态机画一下? 阿里 Java 代码规范为什么不允许使用 Executors 快速创建线程池? 使用线程池应该避免哪些问题,能否简单说下线程池的最佳实践? 如何优雅关闭线程池 如何对线程池进行监控 相信不少人看了这些问题会有些懵逼 其实这些问题的答案大多数都藏在线程池的源码里,所以深入了解线程池的源码非常重要,本章我们将会来学习一下线程池的源码,相信看完之后

JeecgBoot 2.4 微服务正式版发布,基于SpringBoot的低代码平台

允我心安 提交于 2020-12-03 15:11:52
项目介绍 JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot 引领新的低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性! 当前版本 : v2.4 | 2020-12-01 源码下载 https://github.com/zhangdaiscott/jeecg-boot https://gitee.com/jeecg/jeecg-boot 技术文档 技术官网: http://www.jeecg.com 在线演示: http://boot.jeecg.com 技术文档: http://doc.jeecg.com 常见问题: http://jeecg.com/doc/qa 微服务入门视频: https://www.bilibili.com/video/BV1sZ4y1G7LL QQ群:816531124 升级日志 此版本重构很大,重点升级了微服务模块,完善了微服务所需的各个组件,实现了微服务方案落地( 新版可一秒变微服务)

JeecgBoot 2.4 微服务正式版发布,基于SpringBoot的低代码平台

*爱你&永不变心* 提交于 2020-12-03 14:18:11
项目介绍 JeecgBoot 是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot 引领新的低代码开发模式(OnlineCoding-> 代码生成-> 手工MERGE), 帮助解决Java项目70%的重复工作,让开发更多关注业务。既能快速提高效率,节省研发成本,同时又不失灵活性! 当前版本 : v2.4 | 2020-12-01 源码下载 https://github.com/zhangdaiscott/jeecg-boot https://gitee.com/jeecg/jeecg-boot 技术文档 在线演示: http://boot.jeecg.com 技术文档: http://doc.jeecg.com 微服务入门视频: https://www.bilibili.com/video/BV1sZ4y1G7LL 常见问题: http://jeecg.com/doc/qa QQ群:816531124 升级日志 此版本重构很大,重点升级了微服务模块,完善了微服务所需的各个组件,实现了微服务方案落地( 新版可一秒变微服务); 同时代码生成器也做了重点升级,更加智能;

nginx反向代理二级域名注意事项

我的梦境 提交于 2020-12-03 12:39:31
摘要    本文介绍了利用nginx实现多域名和多站点的绑定的方法及相关注意事项。您也可以只看 标题 或 红色 标注部分。 ☺ 1、应用场景    我们经常会遇到在同一台服务器建立多个Web站点的情况,普遍的做法是为不同的站点配置不同的端口,这样就可以用IP:Port的形式访问。   但是用IP访问毕竟不方便,不生动,不容易记忆。那么,我们可以给每个站点绑定不同的域名。(在这里我们仅谈公网情况)即使我们只有一个域名,我们可以设置多个二级域名,使用Nginx很容易实现。 2、基本要求    通常,网上教程会直接贴一段配置文件的代码,告诉我们如此这般就Ok了。但我发现很多新手看着教程配置,并不能像博主那样就Success了,所以接下来我们谈一下基本原理。   首先,要有一个自己能管理的域名,比如我有一个 postmsg.cn 的域名,就可以生出多个子域名,二世三世千万世……   其次,有一台能访问的公网服务器,可以在这台服务器上建立自己的Web站点,一个两个三四个,对应端口不一。   然后,就是域名和站点的绑定,一个萝卜一个坑,当然也可以多个萝卜一个坑…… 3、一般配置    需要配置的地方有两个,我们先谈首要先决条件,也是有些新手容易忽略的地方。   (1)域名配置     把域名的A记录解析指向我们的公网服务器,这一点一般人都能想到。解析的时候只能加IP,是不能带端口号的

docker,构建nginx反向代理tomcat

岁酱吖の 提交于 2020-12-03 12:39:00
Nginx实现负载均衡是通过配置nginx.conf来实现的,nginx.conf的全部内容如下: user nginx; worker_processes 1 ; error_log /var/log/nginx/ error.log warn; pid /var/run/ nginx.pid; events { worker_connections 1024 ; } http { include /etc/nginx/ mime.types; default_type application /octet- stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' ; access_log /var/log/nginx/ access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65 ; #gzip on; #include /etc/nginx/conf.d /* .conf; upstream tomcat_client {