当前位置: 首页 > news >正文

11. 使用tomcat中碰到的一些问题

文章目录

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

问题一:Tomcat的startup.bat启动后出现乱码

image

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

image

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

image

问题二:一闪而退之端口占用

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

image

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

image

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

image

<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各版本特性

image

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

image

问题五: 在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的持久化数据但又读取失败造成的。此异常不影响系统的使用。

image

可以看到,我正在使用的项目中多了一个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中碰到的一些问题

文章目录 问题一&#xff1a;Tomcat的startup.bat启动后出现乱码问题二&#xff1a;一闪而退之端口占用问题三&#xff1a;非端口问题的一闪而退问题四&#xff1a;服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六&#xff1a;Tom…...

C++解决TCP粘包

目录 TCP粘包问题TCP客户端TCP服务端源码测试 TCP粘包问题 TCP是面向连接的&#xff0c;面向流的可靠性传输。TCP会将多个间隔较小且数据量小的数据&#xff0c;合并成一个大的数据块&#xff0c;然后进行封包发送&#xff0c;这样一个数据包里就可能含有多个消息的数据&#…...

最长快乐前缀——力扣1392

文章目录 题目描述KMP题目描述 KMP class Solution {public:string longestPrefix(string s) {int n = s...

使用java.util.List的containsAll()方法可能导致的问题

今天在偶然之间发现了一个bug&#xff0c;原因居然是使用了containsAll()方法&#xff0c;这个问题很简单&#xff0c;看以下代码就能发现很大的问题。 package collection;import java.util.ArrayList; import java.util.List;/*** author heyunlin* version 1.0*/ public cl…...

在线文本转语音播放 (TTS)

具体请前往&#xff1a;在线文本转语音播放(TTS)...

OPTEE之ARM安全扩展

目录 一、BTI(Branch Target Identification) 二、如何使能OP-TEE core的BTI 三、如何使能TA的BTI 一、BTI(Branch Target Identification) 分支目标识别(BTI)是ARMv8.5(及Armv9.0)扩展&#xff0c;它为间接分支及其目标提供了控制流完整性(CFI)保护&#xff0c;从而有助于限…...

Vue [Day4]

组件的三大组成部分 组件的样式冲突 scoped <style scoped></style>data 是一个函数 components/BaseButton.vue <template><div class"BaseButton"><button click"count--">-</button><span>{{ count }}</…...

google chrome 官方下载

官方渠道&#xff1a; 1、链接直接打开就可以下载&#xff0c;最新版实时更新。 32位&#xff08;x86&#xff09;&#xff1a;https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup.exe 64位&#xff08;x64&#xff09;&#xff1a;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个整数&#xff0c;用空格分隔。 输出 输出排序后的结果&#xff0c;用空格分隔。 输入样例 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重建二叉树背英语单词&#xff0c;看了二十页 06从尾到头打印链表 从尾到头遍历链表 方法一就是用栈来辅助&#xff0c;栈的结构是先进后出的&#xff0c;将链表中的元素加入到栈中去&#xff0…...

K8S系列文章 之 容器存储基础 Volume

Volume Volume是容器数据卷。我们经常创建删除一些容器&#xff0c;但有时候需要保留容器中的一些数据&#xff0c;这时候就用到了Volume。它也是容器之间数据共享的技术&#xff0c;可以将容器中产生的数据同步到本地。实际就是把容器中的目录挂载到运行着容器的服务器或个人…...

【CHI】架构介绍

Learn the architecture - Introducing AMBA CHI AMBA CHI协议导论--言身寸 1. AMBA CHI简介 一致性集线器接口&#xff08;CHI&#xff09;是AXI一致性扩展&#xff08;ACE&#xff09;协议的演进。它是Arm提供的高级微控制器总线架构&#xff08;AMBA&#xff09;的一部分。…...

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是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED输入电压范围从 5 V 到 60V&#xff0c;输出电流 最大可达 2.0A 。根据不同的输入电压和外部器件&#xff0c; 可以驱动高达数十瓦的 LED。内置功率开关&#xff0c;采用高端电流…...

vue3+vite项目配置ESlint、pritter插件

配置ESlint、pritter插件 在 Vue 3 Vite 项目中&#xff0c;你可以通过以下步骤配置 ESLint 和 Prettier 插件&#xff1a; 安装插件&#xff1a; 在项目根目录下&#xff0c;打开终端并执行以下命令安装 ESLint 和 Prettier 插件&#xff1a; npm install eslint prettier e…...

K8S kubeadm搭建

kubeadm搭建整体步骤 1&#xff09;所有节点进行初始化&#xff0c;安装docker引擎和kubeadm kubelet kubectl 2&#xff09;生成集群初始化配置文件并进行修改 3&#xff09;使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4&#xff09;安装CNI网络插件&am…...

Squeeze-and-Excitation Networks阅读笔记一

文章目录 Abstract1 INTRODUCTION Abstract 卷积算子&#xff08;convolution operator&#xff09;是卷积神经网络&#xff08;cnn&#xff09;的核心组成部分&#xff0c;它使网络能够通过融合每层局部接受域内的空间和通道信息来构建信息特征。广泛的先前研究已经调查了这种…...

LabVIEW开发3D颈动脉图像边缘检测

LabVIEW开发3D颈动脉图像边缘检测 近年来&#xff0c;超声图像在医学领域对疾病诊断具有重要意义。边缘检测是图像处理技术的重要组成部分。边缘包含图像信息。边缘检测的主要目的是根据强度和纹理等属性识别图像中均匀区域的边界。超声&#xff08;US&#xff09;图像存在视觉…...

如何写 Skill

核心概念 Skill 是一个自包含的模块&#xff0c;用来给 Claude/Cascade 注入特定领域的知识、工作流和工具。本质上就是一个"新手入职指南"&#xff0c;让通用 AI 变成某个领域的专家。 目录结构 skill-name/ ├── SKILL.md # 必须&#xff0c;核心文件 └…...

内网渗透全流程拆解|从入门到实战,小白也能看懂的步骤

内网渗透不是“盲目尝试”&#xff0c;而是遵循固定流程的系统化操作&#xff0c;核心流程可概括为&#xff1a;信息收集→漏洞利用→权限提升→横向移动→权限维持→痕迹清理&#xff0c;每个环节环环相扣&#xff0c;缺一不可。本文将结合小白易理解的实战场景&#xff0c;详…...

STM32与LoRa实现高压线缆智能监控方案

1. 项目概述高压线缆间隔棒监控装置是一个典型的工业物联网应用案例&#xff0c;它完美展现了如何将嵌入式系统与无线通信技术结合解决传统行业的痛点问题。作为一名在电力监控领域工作多年的工程师&#xff0c;我深知人工巡检高压线路的种种不便——不仅效率低下&#xff0c;而…...

重构求职效率:boss_batch_push批量投递工具的颠覆性价值

重构求职效率&#xff1a;boss_batch_push批量投递工具的颠覆性价值 【免费下载链接】boss_batch_push Boss直聘批量投简历&#xff0c;解放双手 项目地址: https://gitcode.com/gh_mirrors/bo/boss_batch_push boss_batch_push是一款专为Boss直聘平台设计的开源自动化投…...

QtScrcpy全场景投屏效率指南:跨设备协作与多终端控制解决方案

QtScrcpy全场景投屏效率指南&#xff1a;跨设备协作与多终端控制解决方案 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/Qt…...

AIGlasses_for_navigation多场景落地:日常通勤、医院导诊、地铁站导航三场景实测

AIGlasses_for_navigation多场景落地&#xff1a;日常通勤、医院导诊、地铁站导航三场景实测 1. 引言&#xff1a;当导航从手机屏幕“走”到眼前 想象一下这样的场景&#xff1a;你走在陌生的城市街道&#xff0c;要去一个从未去过的咖啡馆。你不需要低头看手机地图&#xff…...

感知损失(Perceptual Loss)在图像风格迁移中的关键作用与实现

1. 为什么感知损失能让AI画出更像艺术家的画&#xff1f; 第一次用传统MSE损失做风格迁移时&#xff0c;我盯着生成的"梵高星空"直挠头——颜色位置都对&#xff0c;但怎么看都像小学生涂鸦。直到尝试了感知损失&#xff0c;画面突然有了笔触的韵律感。这背后的秘密…...

从rdt1.0到rdt3.0:可靠数据传输协议的演进与发送接收端FSM解析

1. 可靠数据传输协议的前世今生 第一次接触可靠数据传输协议&#xff08;Reliable Data Transfer&#xff0c;简称rdt&#xff09;是在十多年前的一个网络编程项目里。当时为了确保数据能准确无误地传输&#xff0c;我翻遍了各种资料&#xff0c;最终在《计算机网络&#xff1a…...

Cocos Creator 屏幕适配实战:从设计分辨率到完美适配的完整指南

1. 理解屏幕适配的核心概念 第一次用Cocos Creator做横屏游戏时&#xff0c;我盯着iPad和手机上完全变形的UI界面愣了半天。这才明白为什么老司机们总说&#xff1a;"屏幕适配不做&#xff0c;上线火葬场"。屏幕适配的本质是解决设计分辨率&#xff08;美术产出资源时…...

python协同过滤算法的基于python二手物品交易网站系统

目录同行可拿货,招校园代理 ,本人源头供货商协同过滤算法在二手物品交易网站中的应用用户行为数据收集基于用户的协同过滤基于物品的协同过滤混合推荐策略冷启动问题处理实时推荐更新推荐结果评估代码实现示例系统功能整合性能优化项目技术支持源码获取详细视频演示 &#xff1…...