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" />

006fRELkly4gwx5peuco6j30pd0kbq4k

2.2 JDK12 环境下报错

问题描述:

JDK12 环境下将报表工程部署到 Tomcat 服务器端,会报 500 错误。如下图所示:

006fRELkly4gwx5pffoxbj30s80lxn05

解决方案:

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.

006fRELkly4gwx5peeco1j30k304kdfv

解决方案:

确保访问 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.

006fRELkly4gwx5peemkej30c804qweh

解决方案:

需要检查一下 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,如下图所示:

006fRELkly4gwx5pen17bj30qb0kmt911559700368248933.png

解决方案:

这是由于 exe 启动方式内存不足导致的,需要调大 tomcat 启动内存,修改内存方法如下:

双击如下图所示%Tomcat_HOME%bin下的 exe 文件,每个 Tomcat 版本名称不同,Tomcat9 是:Tomcat9w.exe,如下图所示:

006fRELkly4gwx5pfpnqyj30ku0domz2Snag_415ebeb.png

双击文件后,打开 Tomcat 服务器管理界面,将启动内存调大,如下图所示:

006fRELkly4gwx5peg42ij30bi0e474oSnag_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文件,如下图所示:

006fRELkly4gwx5pej96oj30ur041glr9.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 ,可以正常启动。日志报错如下图所示:

006fRELkly4gwx5pkv758j31qe08o0wz1608602443925430.png

运行到 ResourceUpdateActivator 模块时闪退。

原因分析:

360 安全软件阻挡。

解决方案:

1)把运行 java 程序的 java.exe 添加到信任中,即可正常运行。如下图所示:

注:该方法适用范围:360 天擎-Windows 服务器版。

006fRELkly4gwx5ptnty9j31040oh49k4.png

2)若采取步骤一后还是无法启动,需关闭「文件系统防护」按钮。如下图所示:

006fRELkly4gwx5pkl6pnj30a00f84126.png

2.7 Post 提交参数过多时子报表无法显示

问题描述:

当将 FineReport 部署到 Tomcat 上时,当需要将主表的参数通过网络报表全部传递给子表,选择如下图的设置:

006fRELkly4gwx5per65yj30q70cvq3jimage.png

006fRELkly4gwx5pee4qoj30fr0dmdg1image.png

点击主表的链接,钻取到子表。而有时候主表有需要大量的传递参数,将参数传递和继承给各个子表,会导致子表无法显示无法运算的问题,页面为空白页面或者如下图所示:

006fRELkly4gwx5pedo01j30i40bl0ssimage.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"

如下图所示:

006fRELkly4gwx5pek7h4j30q2088aaf1618987868871203.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

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

2022021703525891-158

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>