反馈已提交

网络繁忙

Tomcat 部署问题汇总

  • 文档创建者:Wendy123456
  • 编辑次数:6次
  • 最近更新:Wendy123456 于 2021-08-30
  • 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" />

    Snag_48d33744.png

    2.2 JDK12 环境下报错

    问题描述:

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

    1578560537302570.png

    解决方案:

    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.

    ]M6SIHFWLA1BS]T9LT{``P6.png

    解决方案:

    确保访问 10.0 报表工程时 URL 是正确的:http://localhost:8080/webroot/decision,工程路径不能漏掉,且路径中大小写敏感。

    2.3.2 案例二

    问题描述:

    The requested resource is not available.

    P623WRFJ$TMMC_$]B52XU%6.png

    解决方案:

    需要检查一下 JDK 的环境变量配置是否有错,特别是有没有设置 JAVA_HOME。

    2.3.3 案例三

    问题描述:

    Tomcat 启动报错:fine assist start failed

    解决方案:

    检查环境变量指向的%JRE_HOME%\bin底下没有 attach.dll,若没有 attach.dll 文件,需要将%JAVA_HOME%\jdk\jre\bin下的 attach.dll 文件拷贝到此路径下。

    2.3.4 案例四

    问题描述:

    日志报错:The error reported was [E:\tomcat\apache-tomcat-7.0.79\bin\tcnative-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%\conf\catalina.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 10.0 工程部署到 Tomcat 后没有生成 fanruan.log

    问题描述:

    FineReport 10.0 工程部署到 Tomcat 后,%Tomcat_HOME%\logs文件夹下没有生成 fanruan.log 文件,无法查看工程执行情况。

    而且报错:

    java.io.FileNotFoundException: /var/lib/tomcat8/../logs/fanruan.log (No such file or directory)

    解决方案:

    1)在%Tomcat_HOME%\webapps\webroot\WEB-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 。

    附件列表


    主题: 部署集成
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭