tomcat学习篇

要求:

  1. 为Apache HTTP Server服务器添加JSP网页支持。
  2. 能够访问Tomcat容器的Web管理界面,以便管理各种JSP、Servelet应用。

u 知识提示

在各种企业级网站应用系统中,JSP也是使用较多的一种网站开发语言,对于这样的网站服务器,必须能够支持Java环境、JSP解析,比如安装Tomcat、Jboss等JSP容器。另外一方面,Apache HTTP Server对静态HTML页面的处理能力要更加优秀一些,因此若能将Apache与Tomcat等JSP容器整合在一起使用,将可以获得更好的网站服务体验。

这种情况下,Apache仍然作为浏览器访问的前端服务,当客户机请求访问*.jsp网页时,再自动调用后端的tomcat服务进行解析,并将结果页面返回给客户机。其间的沟通过程需要安装连接器mod_jk来完成。

一、安装并配置jdk开发环境

1.安装

[[email protected] ~]# cp /var/ftp/pub/jdk-6u20-linux-i586.bin /usr/local/

[[email protected] ~]# cd /usr/local/

[[email protected] local]# chmod a+x jdk-6u20-linux-i586.bin

[[email protected] local]# ./jdk-6u20-linux-i586.bin

执行jdk安装程序后将会显示软件许可协议,按回车或空格键翻页至末尾,按照提示输入“yes”回车确认,等待1~2分钟左右即可完成安装。

2.配置

(1)为jdk的安装目录及执行程序创建链接文件,以方便使用。

[[email protected] ~]# alternatives --install /usr/bin/java java /usr/local/jdk1.6.0_20/bin/java 1

[[email protected] ~]# alternatives --install /usr/bin/javac javac /usr/local/jdk1.6.0_20/bin/javac 1

[[email protected] ~]# alternatives --config java

[[email protected] ~]# alternatives --config java

共有 3 个程序提供“java”。

选择    命令

-----------------------------------------------

1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java

*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk/bin/java

3           /usr/local/jdk1.6.0_20/bin/java

按 Enter 来保存当前选择[+],或键入选择号码:3

[[email protected] ~]# alternatives --config javac

共有 3 个程序提供“javac”。

选择    命令

-----------------------------------------------

1           /usr/lib/jvm/java-1.4.2-gcj/bin/javac

*+ 2           /usr/lib/jvm/java-1.6.0-openjdk/bin/javac

3           /usr/local/jdk1.6.0_20/bin/javac

按 Enter 来保存当前选择[+],或键入选择号码:3

2)修改/etc/profile文件,添加Java开发环境需要的变量设置。

[[email protected] ~]# vi /etc/profile

…… //省略部分内容

JAVA_HOME=/usr/local/jdk1.6.0_20

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

[[email protected] ~]# source /etc/profile

3.测试

(1)查看安装的jdk程序版本信息。

[[email protected] ~]# java -version

java version "1.6.0_20"

Java(TM) SE Runtime Environment (build 1.6.0_20-b02)

Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

(2)编写一个java测试小程序,并编译执行。

[[email protected] ~]# vi HelloWorld.java

public class HelloWorld {

public static void main(String args[]) {

System.out.println("HelloWorld!!");

}

}

[[email protected] ~]# javac HelloWorld.java               //编译程序

[[email protected] ~]# java HelloWorld                    //运行HelloWorld.class程序

HelloWorld!!                                        //显示运行结果

二、安装并配置Tomcat容器

1.安装

Tomcat的安装过程非常简单,只需要将源码包解压至目的文件夹即可。

[[email protected] ~]# tar zxf apache-tomcat-7.0.23.tar.gz

[[email protected] ~]# mv apache-tomcat-7.0.23 /usr/local/tomcat

2.配置

(1)为Tomcat的安装目录及启动、关闭服务的脚本创建链接文件,方便使用。

[[email protected] ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/sbin/tomcat-up

[[email protected] ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/sbin/tomcat-down

(2)修改/etc/profile文件,设置Tomcat服务需要使用的变量CACTLINA_HOME。

[[email protected] ~]# vi /etc/profile                  //修订原有的JDK环境

…… //省略部分内容

JAVA_HOME=/usr/local/jdk1.6.0_20

CATALINA_HOME=/usr/local/tomcat

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CATALINA_HOME CLASSPATH PATH

[[email protected] ~]# source /etc/profile

(3)修改tomcat-users.xml文件,添加管理员帐户“benet”设置。

[[email protected] ~]# vi /usr/local/tomcat/conf/tomcat-users.xml

<?xml version=‘1.0‘ encoding=‘utf-8‘?>

<tomcat-users>

<role rolename="manager-gui"/>

<user username="benet" password="pwd123" roles="manager-gui"/>

</tomcat-users>

3.测试

(1)启动tomcat服务,并确认tomcat服务的监听状态。

[[email protected] ~]# tomcat-up

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.6.0_20

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[[email protected] ~]# netstat -anpt | grep java

tcp        0      0 :::8009        :::*          LISTEN      2591/java

tcp        0      0 :::8080        :::*          LISTEN      2591/java

(2)访问http://your_server_ip:8080/ ,可以看到tomcat的Web首页

(3)通过“Manager App”按钮可以经登录后对Tomcat进行管理

三、将Tomcat服务与Apache服务进行连接

1.安装mod_jk模块。

[[email protected] ~]# cp mod_jk-1.2.31-httpd-2.2.x.so /usr/local/apache2/modules/

2.调整Apache服务、Tomcat服务的相关配置。

(1)修改httpd.conf配置文件,添加jdk调用设置。

[[email protected] ~]# vi /usr/local/apache2/conf/httpd.conf

…… //省略部分内容

DocumentRoot "/usr/local/apache2/htdocs"

…… //省略部分内容

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkShmFile logs/mod_jk.shm

JkLogLevel notice

JkMount /*/*.jsp benet

JkMountCopy All

AddType application/x-jsp .jsp

(2)添加tomcat配置文件,并建立Web应用目录链接。

[[email protected] ~]# vi /usr/local/apache2/conf/workers.properties

worker.list=benet

worker.benet.port=8009

worker.benet.host=localhost

worker.benet.type=ajp13

worker.benet.lbfactor=1

[[email protected] ~]# cd /usr/local/tomcat/

[[email protected] tomcat]# mv webapps webapps.origin

[[email protected] tomcat]# ln -sf /usr/local/apache2/htdocs/ webapps

(3)重启apache和tomcat服务

[[email protected] tomcat]# tomcat-down ; tomcat-up

[[email protected] tomcat]# /usr/local/apache2/bin/apachectl restart

3.部署JSP应用目录

将JSP应用上传到Apache的网页根目录下(如/apps/),并链接到Tomcat的webaaps/。本例中将创建一个JSP测试网页showtime.asp,用来输出系统时间。

[[email protected] ~]# mkdir /usr/local/apache2/htdocs/apps/

[[email protected] ~]# vi /usr/local/apache2/htdocs/apps/showtime.jsp

<%@page language="java" import="java.util.*" %>

<h2>Now, the time&date is: <%out.println(new Date());%></h2>

4.访问http://192.168.4.11/apps/showtime.jsp 进行测试

网页中应正常输出提示信息机当前的系统时间

常用命令:

[[email protected] ~]# jps
20232 Bootstrap
6550 Jps

获取java进程信息
[[email protected] ~]# jps -lvm
20232 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp
6571 sun.tools.jps.Jps -lvm -Denv.class.path=.:/usr/local/jdk1.6.0_45/lib:/usr/local/jdk1.6.0_45/jre/lib -Dapplication.home=/usr/local/jdk1.6.0_45 -Xms8m

[[email protected] ~]#jstack

[[email protected] ~]# jmap

[[email protected] ~]# jhat

JVM故障排除:
1.jps 获取进程的PID
2.jstack pid >> java.txt 导出CPU占用高进程的线程栈
3,top -H -p PID 查看对应进程的那个线程占用CPU过高
4,echo “obase=16;PID” |bc 将线程的PID转换为16进制
5,在第二部导出的java.txt 中查找转换为16进制的线程PID,找到对应的线程栈
6,分析负载高的线程栈都是什么业务操作,优化程序并处理问题

时间: 2024-08-04 13:20:16

tomcat学习篇的相关文章

转载 Tomcat集群配置学习篇-----分布式应用

Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小型公益网站到也无所谓,但如果是比如像大型航空公司售票等电子商务网站,每天每小时都有大量的订单业务,如果这些售票系统一旦崩溃后,再去重启,这些时间和客户的损失就直接会影响到航空公司的利益,这些损失如何去避

Tomcat 学习进阶历程之Tomcat架构与核心类分析

前面的http及socket两部分内容,主要是为了后面看Tomcat源码而学习的一些网络基础.从这章开始,就开始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源码之前,准备先看一下Tomcat的架构与一些核心类的简单分析,并简单介绍一下Tomcat是如何处理一次Http请求的.这部分内容有相当一部分来源于网络,在此,感谢原作者的贡献. Tomcat的总体架构 Tomcat的架构关系可以从Tomcat的配置文件server.xml中看到端倪. 从上图中可以看出Tomcat 的心脏

我的2015碎碎念—学习篇、项目篇、工作篇、生活篇

去年在日记作了一次年度总结过后,我就对自己说以后每年年末都要做一次总结,这对自己是非常有帮助的,在这2015年最后一个月,是该整理下自己在即将结束的一年里的所得所失,给过去的自己盖个章,给未来的自己提个醒! 学习篇 为了吸收正能量,一开始就先总结下自己这一年的学习生涯吧. 从C#转JAVA, 可以说15年大半年的时间都花在了研究语言开发上,幸好最终出了一个小小的项目安慰自己,了了迷茫期间最重要的一件事(看来换工作不成问题了). 读书 学习总离不开看书,15年的读书情况可以分为两个阶段: 换工作之

JAVA Web学习篇--Servlet

Servlet由来 做过BS项目的人都知道,浏览器可以依据HTML静态标记语言来显示各式各样的网页.可是假设我们须要在网页上完毕一些业务逻辑:比方登陆验证.或者说网页显示的内容在server的数据库中.假设是这样,除了负责显示的HTML标记之外,必须还要有完毕这些业务功能的代码存在.这样的网页我们就叫做动态网页. 对于静态网页而言,server上存在的是一个个纯HTML文件.当client浏览器发出HTTP请求时,server能够依据请求的URL找到相应的HTML文件,并将HTML代码返回给cl

JAVA学习篇--Java类加载

由来: 与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序(解释性语言).当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Javaclass加载到JVM里头运行,负责加载Javaclass的这部分就ClassLoader.中文叫做类加载器. 类加载器就好比一个代理,你需要什么,我通过类加载器将你需要的内容返回给你! 类加载器有什么作用? 当程序需要的某个类,那么需要通过类加载器把类的二进制加载到内存中. 解释: 类加载器也是Java类,因为其他是java类的

JAVA学习篇--JSP实现原理

JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. 起源: 在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变.如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难. 解决方案: 为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java 

我的2014碎碎念—学习篇、实习篇、工作篇、生活篇

继去年作了一次年度总结过后,我就发誓说以后每年年末都要做一次总结,这对自己是非常有帮助的,无奈由于天性懒散,2015年都过去好几天了,才花了点心思整理下自己在过去一年里的所得所失,给过去的自己盖个章,给未来的自己提个醒! 学习篇 为了传播正能量,一开始就先总结下自己这一年的学习生涯吧. 发表研究生小论文可以说14年大半年的时间都花在了做研究生论文项目上面,幸好最终出了一篇小论文并得以发表录用,了了研究生期间最重要的一件事(看来毕业不成问题了). 读书学习总离不开看书,14年的读书情况可以分为两个

Tomcat 学习进阶历程之Tomcat启动过程分析

本节通过跟踪Tomcat的源码来分析Tomcat是如何启动及装配各个组件的.最好下载Tomcat的源码导入到Eclipse,这样方便跟踪.方法可参考: http://www.cnblogs.com/huangfox/archive/2011/10/20/2218970.html 在Tomcat的启动脚本篇,我们分析过,当执行Start.bat文件时,最后实际调用的是BootStrap.java类.如下图: 如上图,实际调用BootStrap,并传递一个名为'start'参数. 在BootStra

Linux新手入门书籍推荐 鸟哥的linux私房菜-基础学习篇

这本书写的不错.赞~\(≧▽≦)/~ 2017-02-24 下午,我开始在Linux下写第一个.c程序,在终端打印hello world.gcc 源代码文件之后,输出可执行文件,但是 当我输入文件名执行它的时候,却提示我 无法找到命令.于是我找百度,查资料,花了半个小时,终于找到解决方法了, 输入"./filename"即可.... 2017-02-25 我看<基础学习篇>这本书,在P158页下面的例题讲解中找到了昨天下午异常的解析.我就很是感慨,心想:要是早看这本书,半个