您的位置:首页 > 运维架构 > Tomcat

Tomcat相关记录

2016-07-04 15:42 225 查看
1.从页面接收到的中文参数变成了乱码:

<Connector URIEncoding="UTF-8" port="43002" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

可能是这里没有指定URIEncoding的缘故

2.关于在idea中配置tomcat,一定要记得在这里指定application context,我因为没设置这里结果一直报404.



3.第二条,修改后发现访问路径可以自己随意设置,但是部署到服务器后访问的项目名又变回来了。此时可以直接修改项目文件夹的名字。

  比如说你的项目部署位置在%CATALINA_HOME%/webapp下,web-backstage/ 是你的项目文件夹,那你访问的项目名就是web-backstage,将它修改为你想要的就可以.

4.关于日志,CATALINA_OUT,它一般指向的是%CATALINA_BASE%/log/catalina.out

  catalina.out会记录:

  1.标准输出流,System.out,System.err

  2.log4j2框架里的Console的logger

  3.exception的printStackTrace()方法

  4.tomcat的一些运行记录(启动、关闭、错误)

catalina.out的内容会一直增加,最后导致硬盘容量被全部占据。因此需要使用cronolog来分割日志.

  首先下载cronolog,由于墙的存在,可能下不下来。从其他地方找吧。然后执行以下命令

   tar xf cronolog-1.6.2.tar.gz

  cd cronolog-1.6.2

   ./configure

   make && make install

   which cronolog #查看被安装到哪里

  接着修改tomcat目录bin下的catalina.sh文件

  #vi bin/catalina.sh

  找到下面这行:

   org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &

  

  类似这样的行有2处,第一处是tomcat时带“-security”参数的启动,第二处是默认tomcat启动方式,也就是else下面的那部分,我们只修改这里。

  另外还要把touch “$CATALINA_OUT"这行注释掉。

  完整的修改如下:

  # touch "$CATALINA_OUT"
   if [ "$1" = "-security" ] ; then
   if [ $have_tty -eq 1 ]; then
   echo "Using Security Manager"
   fi
   shift
   "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
   -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
   -Djava.security.manager \
   -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
   -Dcatalina.base="$CATALINA_BASE" \
   -Dcatalina.home="$CATALINA_HOME" \
   -Djava.io.tmpdir="$CATALINA_TMPDIR" \
   org.apache.catalina.startup.Bootstrap "$@" start \
   >> "$CATALINA_OUT" 2>&1 &

   else
   "$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
   -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
   -Dcatalina.base="$CATALINA_BASE" \
   -Dcatalina.home="$CATALINA_HOME" \
   -Djava.io.tmpdir="$CATALINA_TMPDIR" \

    org.apache.catalina.startup.Bootstrap "$@" start "2>&1" | /usr/local/sbin/cronolog -S "$CATALINA_BASE"/logs/catalina_ln.out "$CATALINA_BASE"/logs/catalina.%Y-%m-%d-%H.out >> /dev/null &

   fi

保存退出

重启Tomcat服务

解决方法:1.使用Log4j或Log4j2来替换默认的日志实现。2.使用

5.与tomcat相关的环境变量有:CATALINA_HOME、CATALINA_BASE,对应的属性在shell中有catalina.home、catalina.base

  tomcat的目录结构包括:

  bin(运行脚本目录)

  conf(配置目录)

  lib(核心库目录)

  logs(日志目录)

  temp(临时目录)

  webapps(自动装载的应用程序目录)

  work(JVM临时文件目录[java.io.tmpdir])

 而如果要部署多个tomcat实例,其实能公用的只有bin和lib目录,其他目录conf、logs、temp、webapps、work每个tomcat实例必须拥有自己独立的备份。

 因此catalina.home指向公用信息的位置,就是bin和lib的父目录。

 catalina.base指向每个tomcat目录私有信息的位置,就是conf、logs、temp、webapps、work的父目录。

 仅运行一个tomcat实例时,这两个属性指向的位置是相同的。

  ps.一个主机上部署多个tomcat实例,待研究。

6.linux下安装tomcat,截图子tomcat官网评论区

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: