Tomcat 部署问题汇总!
Tomcat 部署问题汇总!
1. 概述
本文介绍Tomcat 服务器部署 中一些报错及解决方案。
2. 示例
2.1 决策平台中文无法搜索
问题描述:
Tomcat 独立部署 成功后,在决策平台内搜索时,输入中文无法正常搜索,但在本地输入中文进行搜索是可以的。
解决方案:
Tomcat 的默认编码格式不是 UTF-8,具体原因参见文档:Tomcat7 编码修改为 UTF-8
需要修改 %Tomcat_HOME%conf 目录下的 server.xml 文件,将代码中的编码修改为 UTF-8 格式,如下图所示:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8" />
2.2 JDK12 环境下报错
问题描述:
JDK12 环境下将报表工程部署到 Tomcat 服务器端,会报 500 错误。如下图所示:
解决方案:
JDK9 及之后的版本是没有 tools.jar 的,安装低版本 JDK 部署即可。
2.3 报错404
2.3.1 案例一
问题描述:
The origin server did not find a current representation for the target resource or is not willing to disclose that one exist.
解决方案:
确保访问 11.0 报表工程时 URL 是正确的:http://localhost:8080/webroot/decision,工程路径不能漏掉,且路径中大小写敏感。
这个报错大概率是 Tomcat 和 JDK 版本引起的,推荐使用 Tomcat8.5.57 及以上版本,或者 Tomcat8 最新版本;JDK 要求 1.8 且小版本需在 JDK8u102 以上。
2.3.2 案例二
问题描述:
The requested resource is not available.
解决方案:
需要检查一下 JDK 的环境变量配置是否有错,特别是有没有设置 JAVA_HOME。
Tomcat 版本太低也可能会导致这个错误,推荐使用 Tomcat8.5.57 及以上版本,或者 Tomcat8 最新版本。
2.3.3 案例三
问题描述:
Tomcat 启动报错:fine assist start failed
解决方案:
检查环境变量指向的%JRE_HOME%bin底下没有 attach.dll,若没有 attach.dll 文件,需要将%JAVA_HOME%jdkjrebin下的 attach.dll 文件拷贝到此路径下。
2.3.4 案例四
问题描述:
日志报错:The error reported was [E:tomcatapache-tomcat-7.0.79bintcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform]
解决方案:
检查 JDK 版本是否与操作系统对应,如32位的系统只能使用32位的 JDK,64位的系统只能使用64位的 JDK。
2.3.5 案例五
问题描述:
Tomcat 升级或更换为其他版本后,访问报表时报404错误,且日志文件中存在 RFC 系列错误信息。
解决方案:
方法1:
修改 %Tomcat_HOME%conf 目录下的 server.xml 文件,在 server.xml 中添加如下代码,重启服务器即可。
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
relaxedQueryChars='^{}[]|quot' />
方法2:
修改%Tomcat_HOME%confcatalina.properties文件中注释掉的这行。
#tomcat.util.http.parser.HttpParser.requestTargetAllow=|
或 将内容修改为:
tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
如果修改 server.xml 后还是中文乱码,可以在 catalina 文件中添加:
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8
2.4 配置管理员密码出错
问题描述:
使用 exe 安装包安装的 Tomcat,部署工程后设置管理员账号时前端报错:配置管理员密码出错,后台报错:ERROR [standard] Database is not initialized,如下图所示:
1559700368248933.png
解决方案:
这是由于 exe 启动方式内存不足导致的,需要调大 tomcat 启动内存,修改内存方法如下:
双击如下图所示%Tomcat_HOME%bin下的 exe 文件,每个 Tomcat 版本名称不同,Tomcat9 是:Tomcat9w.exe,如下图所示:
Snag_415ebeb.png
双击文件后,打开 Tomcat 服务器管理界面,将启动内存调大,如下图所示:
Snag_4199feb.png
2.5 11.0 工程部署到 Tomcat 后没有生成 fanruan.log
问题描述:
FineReport 11.0 工程部署到 Tomcat 后,%Tomcat_HOME%logs文件夹下没有生成 fanruan.log 文件,无法查看工程执行情况。
而且报错:
java.io.FileNotFoundException: /var/lib/tomcat8/../logs/fanruan.log (No such file or directory)
解决方案:
1)在%Tomcat_HOME%webappswebrootWEB-INF路径下新建一个名为 config 的文件夹。
2)在 config 文件夹中新增log4j.properties文件,如下图所示:
9.png
文件内容如下所示:
log4j.rootLogger=${LOG_ROOT_LEVEL},standard,stdout
log4j.appender.standard=com.fr.third.apache.log4j.DailyRollingFileAppender
log4j.appender.standard.DatePattern='.'yyyy-MM-dd
log4j.appender.standard.File=${LOG_HOME}/../logs/fanruan.log
log4j.appender.standard.layout=com.fr.third.apache.log4j.PatternLayout
log4j.appender.standard.layout.ConversionPattern=%d{HH:mm:ss} %t %p [%c] %m%n
log4j.appender.standard.Append=true
log4j.appender.stdout=com.fr.third.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=com.fr.third.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %t %p [%c] %m%n
用户可在代码第四行修改日志存放路径。
2.6 工程启动时闪退
问题描述:
用户将 FineReport 工程部署到 Tomcat 服务器上,启动 FineReport 工程时出现闪退现象;将 Tomcat 中部署的 FineReport 工程删除,单独启动 Tomcat ,可以正常启动。日志报错如下图所示:
1608602443925430.png
运行到 ResourceUpdateActivator 模块时闪退。
原因分析:
360 安全软件阻挡。
解决方案:
1)把运行 java 程序的 java.exe 添加到信任中,即可正常运行。如下图所示:
注:该方法适用范围:360 天擎-Windows 服务器版。
4.png
2)若采取步骤一后还是无法启动,需关闭「文件系统防护」按钮。如下图所示:
6.png
2.7 Post 提交参数过多时子报表无法显示
问题描述:
当将 FineReport 部署到 Tomcat 上时,当需要将主表的参数通过网络报表全部传递给子表,选择如下图的设置:
image.png
image.png
点击主表的链接,钻取到子表。而有时候主表有需要大量的传递参数,将参数传递和继承给各个子表,会导致子表无法显示无法运算的问题,页面为空白页面或者如下图所示:
image.png
原因分析:
由于 Tomcat 默认的 post 参数的最大大小为 2M, 当超过时将会出错,可以配置 maxPostSize 参数来改变大小。传出的参数大小超过这个限制就会导致上面的问题。
解决方案:
注:该解决方案适用于 Tomcat7 及以上版本。
从 Apache-Tomcat-7.0.63 开始,参数 maxPostSize 的含义就变为: 如果将值设置为 0,表示 POST 最大值为 0,如果将值设置为 -1,表示不限制 post 大小。
在此版本之前设置为 0 表示不限制 post 大小。
在 Tomcat 文件夹下的 conf 文件中的 server.xml 配置中添加:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxPostSize="-1"
maxHttpHeaderSize ="102400"/>
参数说明:
maxPostSize="-1" //-1 表示不限制大小。
maxPostSize:指定 post 方式请求的最大量,没有指定默认为 2097152。
maxHttpHeaderSize ="102400"。
maxHttpHeaderSize:HTTP 请求和响应头的最大量,以字节为单位,默认值为 4096 字节。
2.8 Tomcat 前端报错 400
问题描述
高版本 Tomcat(7.0.76以后)会严格按照对 RFC 3986 规范进行访问解析,而 RFC 3986 规范定义了 URL 中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。传入的参数若不在 RFC3986中 的保留字段中,会报 400 错误。
解决方案
1)修改%Tomcat_HOME%/conf/server.xml文件,增加下面代码:
maxpostsize="209715200"
maxHttpHeaderSize="16384"
relaxedPathChars="[]|"
relaxedQueryChars="[]|{}^`"<>"
useBodyEncodingForURI="true"
URIEncoding="UTF-8"
如下图所示:
1618987868871203.png
2)重启工程。
2.9 云迁移目录丢失
Ubuntu 系统下,将正式环境中的 Tomcat 打包后拷贝到云服务器上,启动Tomcat后,目录丢失,同时,在目录管理中新增目录,提示报错信息“目录已存在”。
2.9.1 报错信息一
问题描述
报错信息如下所示:
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava
.awt.headless=true"? See also: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+got+java.awt.headle ss+problem
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXrender.so.1: cannot open shared
object file: No such file or directory
解决方案
apt-get install libxrender-dev,重启 Tomcat 。
2.9.2 报错信息二
问题描述
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object
file: No such file or directory
解决方案
apt-get install libxtst-dev,重启 Tomcat 。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论