11. 使用tomcat中碰到的一些问题
文章目录
- 问题一:Tomcat的startup.bat启动后出现乱码
- 问题二:一闪而退之端口占用
- 问题三:非端口问题的一闪而退
- 问题四:服务器的乱码和跨域问题
- 问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失
- 问题六:Tomcat启动报java.io.EOFException错误
- 问题七:解决跨域问题
问题一:Tomcat的startup.bat启动后出现乱码

找到Tomcat文件下的conf目录,修改logging.properties文件中
java.util.logging.ConsoleHandler.encoding对应的值为GBK

重启Tomcat,你看到的启动页面是这样的话,说明乱码问题已经解决

问题二:一闪而退之端口占用
启动Tomcat出现一闪而退的现象,其实还是可以看到Tomcat终端输出的日志,
这时你需要迅速截图捕获异常,太南了。

最正确的方法是查看日志,找到Tomcat目录下的logs目录中catalina当天的日志,
我这里找到的是C:\develop\Tomcat\apache-tomcat-8.5.47\logs\catalina.2019-10-17.log,
在日志中可以看到类似这样的输出,Address already in use: bind说明是端口占用了

在Tomcat目录找到conf目录中的server.xml配置文件,在Connector标签中修改Tomcat启动端口

<Connector port="9080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
问题三:非端口问题的一闪而退
启动Tomcat直接一闪而退,在logs目录的日志里面找不到错误信息,
这个时候很大可能是因为Tomcat与JDK版本不对应导致的,有可能你的Tomcat是Tomcat9版,而你的JDK是1.7版本的,
Tomcat与JDK版本对应关系可以参考这篇文章Tomcat与JDK版本对应关系,Tomcat各版本特性

问题四:服务器的乱码和跨域问题

问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失
1.修改/tomcat/conf/web.xml文件
<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
2.修改/tomcat/conf/server.xml文件
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html -->
<!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> -->
<!-- Access log processes all example. Documentation at: /docs/config/valve.html -->
<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> -->
<!--<Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>--><!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot" </Context>-->
</Host>
3.总结
重新redeploy的时候,tomcat会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题实际应用中tomcat会startup.bat/shutdown.bat。
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
问题六:Tomcat启动报java.io.EOFException错误
信息如下
2019-11-25 10:24:05 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory ROOT
2019-11-25 10:24:05 org.apache.catalina.session.StandardManager doLoad
严重: IOException while loading persisted sessions: java.io.EOFException
java.io.EOFExceptionat java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280)at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58)at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:465)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5025)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:570)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1010)at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:933)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1267)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:328)at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:308)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1043)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:738)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:289)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardService.startInternal(StandardService.java:442)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:674)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.startup.Catalina.start(Catalina.java:596)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
2019-11-25 10:24:05 org.apache.catalina.session.StandardManager startInternal
严重: Exception loading sessions from persistent storage
java.io.EOFExceptionat java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280)at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58)at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:465)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5025)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:812)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:787)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:570)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1010)at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:933)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1267)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:328)at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:308)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1043)at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:738)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1035)at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:289)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardService.startInternal(StandardService.java:442)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:674)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140)at org.apache.catalina.startup.Catalina.start(Catalina.java:596)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
2019-11-25 10:24:05 org.apache.catalina.startup.HostConfig deployDirectory
错误的原因是:EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败。
这是由于tomcat上次非正常关闭时有一些活动session被持久化(表现为一些临时文件),
在重启时,tomcat尝试去恢复这些session的持久化数据但又读取失败造成的。此异常不影响系统的使用。

可以看到,我正在使用的项目中多了一个sessions.ser文件,把此文件删除即可tomcat即可正常的使用.
如果你的项目中不知道是哪个项目引起的.就把Catalina目录下的所有文件删除,即可.
问题七:解决跨域问题
protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setHeader("Access-Control-Allow-Credentials", "true");resp.setHeader("Access-Control-Allow-Origin", req.getHeader("origin"));resp.setHeader("Access-Control-Allow-Methods", "*");resp.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");resp.setContentType("application/json");resp.setCharacterEncoding("utf-8");super.doOptions(req, resp);}
相关文章:
11. 使用tomcat中碰到的一些问题
文章目录 问题一:Tomcat的startup.bat启动后出现乱码问题二:一闪而退之端口占用问题三:非端口问题的一闪而退问题四:服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六:Tom…...
C++解决TCP粘包
目录 TCP粘包问题TCP客户端TCP服务端源码测试 TCP粘包问题 TCP是面向连接的,面向流的可靠性传输。TCP会将多个间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包发送,这样一个数据包里就可能含有多个消息的数据&#…...
最长快乐前缀——力扣1392
文章目录 题目描述KMP题目描述 KMP class Solution {public:string longestPrefix(string s) {int n = s...
使用java.util.List的containsAll()方法可能导致的问题
今天在偶然之间发现了一个bug,原因居然是使用了containsAll()方法,这个问题很简单,看以下代码就能发现很大的问题。 package collection;import java.util.ArrayList; import java.util.List;/*** author heyunlin* version 1.0*/ public cl…...
在线文本转语音播放 (TTS)
具体请前往:在线文本转语音播放(TTS)...
OPTEE之ARM安全扩展
目录 一、BTI(Branch Target Identification) 二、如何使能OP-TEE core的BTI 三、如何使能TA的BTI 一、BTI(Branch Target Identification) 分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展,它为间接分支及其目标提供了控制流完整性(CFI)保护,从而有助于限…...
Vue [Day4]
组件的三大组成部分 组件的样式冲突 scoped <style scoped></style>data 是一个函数 components/BaseButton.vue <template><div class"BaseButton"><button click"count--">-</button><span>{{ count }}</…...
google chrome 官方下载
官方渠道: 1、链接直接打开就可以下载,最新版实时更新。 32位(x86):https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup.exe 64位(x64):htt…...
Misc取证学习
文章目录 Misc取证学习磁盘取证工具veracryto挂载fat文件DiskGenius 磁盘取证例题[RCTF2019]disk 磁盘[](https://ciphersaw.me/ctf-wiki/misc/disk-memory/introduction/#_2)内存取证工具volatility 内存取证例题数字取证赛题0x01.从内存中获取到用户admin的密码并且破解密码 …...
vue打包到jar资源访问被shiro拦截
1.shiro放发对静态资源的拦截// filterMap.put("/202307171550/**", "anon"); // filterMap.put("/config/**", "anon"); // filterMap.put("/index.html", "anon"); 2.装载资源访问 priva…...
选择排序(指针法)
描述 用选择法对10个整数排序。 输入 输入包含10个整数,用空格分隔。 输出 输出排序后的结果,用空格分隔。 输入样例 1 3 1 4 1 5 9 2 6 5 3 输出样例 1 1 1 2 3 3 4 5 5 6 9 输入样例 2 2 4 6 8 10 12 14 16 18 20 输出样例 2 2 4 6 8 1…...
8.6 day07 休息+剑指offer
文章目录 06从尾到头打印链表03数组中重复的数字04二维数组中的查找05 替换空格06重建二叉树背英语单词,看了二十页 06从尾到头打印链表 从尾到头遍历链表 方法一就是用栈来辅助,栈的结构是先进后出的,将链表中的元素加入到栈中去࿰…...
K8S系列文章 之 容器存储基础 Volume
Volume Volume是容器数据卷。我们经常创建删除一些容器,但有时候需要保留容器中的一些数据,这时候就用到了Volume。它也是容器之间数据共享的技术,可以将容器中产生的数据同步到本地。实际就是把容器中的目录挂载到运行着容器的服务器或个人…...
【CHI】架构介绍
Learn the architecture - Introducing AMBA CHI AMBA CHI协议导论--言身寸 1. AMBA CHI简介 一致性集线器接口(CHI)是AXI一致性扩展(ACE)协议的演进。它是Arm提供的高级微控制器总线架构(AMBA)的一部分。…...
hcip的ospf综合实验
题目 拓扑图 IP地址分配及环回 R1 < Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 172.16.0.1 27 Aug 6 2023 19:03:33-08:00 r1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol I…...
AP5179 高端电流采样降压恒流驱动IC SOP8 LED车灯电源驱动
产品描述 AP5179是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V,输出电流 最大可达 2.0A 。根据不同的输入电压和外部器件, 可以驱动高达数十瓦的 LED。内置功率开关,采用高端电流…...
vue3+vite项目配置ESlint、pritter插件
配置ESlint、pritter插件 在 Vue 3 Vite 项目中,你可以通过以下步骤配置 ESLint 和 Prettier 插件: 安装插件: 在项目根目录下,打开终端并执行以下命令安装 ESLint 和 Prettier 插件: npm install eslint prettier e…...
K8S kubeadm搭建
kubeadm搭建整体步骤 1)所有节点进行初始化,安装docker引擎和kubeadm kubelet kubectl 2)生成集群初始化配置文件并进行修改 3)使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4)安装CNI网络插件&am…...
Squeeze-and-Excitation Networks阅读笔记一
文章目录 Abstract1 INTRODUCTION Abstract 卷积算子(convolution operator)是卷积神经网络(cnn)的核心组成部分,它使网络能够通过融合每层局部接受域内的空间和通道信息来构建信息特征。广泛的先前研究已经调查了这种…...
LabVIEW开发3D颈动脉图像边缘检测
LabVIEW开发3D颈动脉图像边缘检测 近年来,超声图像在医学领域对疾病诊断具有重要意义。边缘检测是图像处理技术的重要组成部分。边缘包含图像信息。边缘检测的主要目的是根据强度和纹理等属性识别图像中均匀区域的边界。超声(US)图像存在视觉…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 核心…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
