Tomcat部署Web应用方面的一些问题(多Tomcat、指定Java、字节码替换)

这篇博文操作的系统环境为CentOS系统,目标是在该系统中部署一个Tomcat以及跑在该Tomcat上的一个Java Web应用。部署的系统环境有限制,主要表现在:该主机上已部署Tomcat,新部署的Tomcat应不影响原Tomcat及相应应用的访问;此外,系统上已安装某一版本的Java,已设置JAVA_HOME等环境变量,而当前应用依赖另一版本的Java,
因此需要在不影响原应用、环境变量配置的基础上解决依赖问题。

Tomcat安装

  安装前需准备好Java环境,配置好JAVA_HOME环境变量(jdk-7u67-linux-x64.rpm)。然后下载Tomcat程序,这里以apache-tomcat-7.0.42.tar.gz为例介绍,可以通过http://pan.baidu.com/s/1i39wjfZ下载。将Tomcat安装文件下载至/usr/local目录下,并解压,将目录名重命名为tomcat,因此Tomcat文件被安装至/usr/local/tomcat下。
  进入/usr/local/tomcat/conf目录,编写配置文件server.xml,修改Tomcat相关配置信息,比如端口号等。
  然后进入/usr/local/tomcat/bin目录下执行,开启和停止的命令分别是:

./startup.sh
./shutdown.sh

为了便于管理该tomcat,可以将其做成系统服务,并随开机自启动,这样处理以后,可以通过service命令开启和关闭。具体做法是:

  • 在/etc/init.d/目录下创建一个系统服务,假如服务名为my_tomcat,则在/etc/init.d/下创建文件my_tomcat,文件内容如下;
    通过“chmod 777 my_tomcat”更改文件权限,使其具有可执行权限;
  • 然后通过“chkconfig –add my_tomcat”添加系统服务,添加完成后可以通过“chkconfig –list | grep my_tomcat”查看;
  • 通过“chkconfig my_tomcat on”设置开机自启动
#!/bin/bash
# chkconfig: - 99 35
#description: manage tomcat
RETVAL=0
start(){
    echo ‘Try to start My Tomcat‘
    cd /usr/local/tomcat/bin
    ./startup.sh
}
stop(){
    echo ‘Try to stop My Tomcat‘
    cd /usr/local/tomcat/bin
    ./shutdown.sh
}
# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
esac

exit $RETVAL

部署多个Tomcat

  首先是在一台主机上,在不影响原有Tomcat和应用的基础上部署新的Tomcat Web服务器,即部署多个Tomcat的问题。
  只要解决各Tomcat端口冲突的问题,就能实现多个Tomcat在同一台主机上运行,解决办法是配置Tomcat的端口信息,使各Tomcat运行过程中不发生端口冲突。需要关注的端口主要时以下几个默认端口:
8005 SHUTDOWN端口:
为避免冲突,看情况改成8006端口

<Server port="8006" shutdown="SHUTDOWN">

8080 访问端口
可改成其他端口

<Connector port="81" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

8009 AJP端口
看情况可改成8010端口

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

  将上面三类端口修改后,就可以避免多个Tomcat之间的冲突

Tomcat指定Java

  前面介绍了怎么在一台主机上同时运行多个Tomcat,而一台主机上也可以部署多个Java,只是环境变量里只能指定一个。同时,也可以为Tomcat专门指定一个Java,而不必是JAVA_HOME中指定的那个。具体做法是修改Tomcat bin目录下的setclasspath.sh脚本,在使用JAVA_HOME和JRE_HOME之前,定义这两个变量。

export JAVA_HOME=/usr/java/jdk1.7.0_67
export JRE_HOME=/usr/java/jdk1.7.0_67/jre

Java Web应用修改后字节码替换

  Java Web应用部署到Tomcat之后,有时会对应用某部分代码进行了修改,为了使修改生效,有时需要重新部署应用。但是这时不必将所有内容重新部署(删除、替换),对于普通的JSP文件很简单,直接替换JSP文件即可。对于Sevlet、Java等需要编译成字节码的源程序的修改,则只需将修改后编译得到的字节码替换即可。编译后的字节码位置位于WEB-INF目录下的classes目录。因此,修改代码后在本地重新部署,然后找到本地应用的WEB-INF/classes目录下的相应.class文件,替换服务器上相应文件即可。需要注意的是:修改后需重启tomcat才能生效。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。