Linux下建立多实例Tomcat(独立JVM)

来源:互联网 发布:个人定位软件 编辑:程序博客网 时间:2024/06/12 20:00

说明:本文参照了以下文章:

http://apps.hi.baidu.com/share/detail/24999679

近期因为客户较多,发现在同一台服务器上由于Lerx V2版本不同,导致了Web应用出错。分析原因,发现是由于所有WEB应用共享同一Tomcat进程,而用户类(WEB-INF/classes)下的类文件同名但内容并不相同导致冲突。因此考虑在linux环境下采用独立jvm来处理解决这个问题。

参考上述文章设置,由于文中一些细节没有交待或有错误,因此补充如下。

该文章前部分是apache整合问题,这些内容网上很多,可以参考。lerx网站上也有一些介绍。

从实践中看清tomcat的启动过程与原理就可以轻松完成这一多实例方案。

CATALINA_BASE是一个非常重要的变量,可以认为是应用程序主目录。当tomcat启动时,会从这一目录下寻找它所需要的资源。所以在该目录下,应该有下面一些文件夹:conf、temp、work、logs。对于我来说,一般用户的文件我都会放在同一个目录内,所以,我在目录下还建了bin、public_html文件夹。以下是各文件的简要说明

conf -------- tomcat配置文件目录

temp -------- 临时文件目录

work -------- tomcat工作目录

logs -------- 日志文件目录

bin ------- 执行文件目录

public_html -------- 网站文件目录

根据上述目录结构,可以修改/etc/skel模板文件夹。在这个文件夹下按照上述进行建立文件夹。当建立一个新用户时,会根据这个目录模板产生相应的用户文件夹。

笔者在按参考文章时最后发现无法实现,关键是文中有两个地方没有交待清楚。一是上述文件夹问题,二是应该将Tomcat的conf下的其它文件也要复制到用户目录的conf目录下。

每个server.xml中注意要修改端口号不要相同。比如:第一个应用server.xml中的http采用8081端口,第二个应用server.xml中采用8082端口。

.sh文件可以放在bin目录中。

因此可以export CATALINA_BASE="$PWD/../"来指定。一个更好的方法是将tomcat.sh放在用户目录下,tomcat.sh脚本内容可以如下:

#!/bin/bash
# description:  Start up the Tomcat servlet engine.
# Sourc function library.
. /etc/init.d/functions
RETVAL=$?
export CATALINA_BASE="$PWD"
export CATALINA_HOME="/usr/local/tomcat"
export JVM_OPTIONS="-Xms32m –Xmx64m"
case "$1" in
start)
        if [ -f $CATALINA_HOME/bin/startup.sh ];
          then
            echo $"Start Tomcat"
            $CATALINA_HOME/bin/startup.sh
        fi
        ;;
stop)
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];
          then
            echo $"Stop Tomcat"
            $CATALINA_HOME/bin/shutdown.sh
        fi
        ;;
*)
        echo $"Usage: $0 {start|stop}"
        exit 1
        ;;
esac
exit $RETVAL

目录及文件结构如下:


原创粉丝点击