Tomcat(通用8篇)
Tomcat 篇1
一、背景
随着科学技术的不断进步尤其是软件发布周期不断缩短, 把项目发布到web服务器中 (tomcat jboss) 要webroot下面的文件原样拷贝过去而不是直接使用webroot下的代码。有人问其实没什么区别但是你有没有注意到一个存在的问题:一般j2se改bug的流程发现bug->定位bug->尝试解决该bug->保存该文件 (eclipse编译class) ->调试bug;而j2ee的改bug流程确变成了如下发现bug->定位bug->尝试解决bug->保存该文件 (eclipse编译class) ->发布代码至web服务器->重启web服务器->调试该bug。中间多了一个发布代码等待重启的过程。也许代码量少, 等待重启的过程是可以忍受的。但是后期这个过程真心无法忍受, 一般的项目平均启动一次的时间大概在3分钟左右, 这个时间是严重影响效率的。在实际的新疆九师平安城市项目子系统部署中也会遇到类似的场景。
二、系统目标
让web服务器直接使用工作空间中的webroot下的文件, 而不是需要把文件拷贝到服务器上;让web服务器自动加载新的class而不用reload整个项目。利用虚拟路径的方式, 并且按照总体方案中的方式对tomcat进行配置。使得tomcat可以管理不同目录上的项目。在新疆九师平安城市项目中, 在图像管理系统、视频质量诊断系统、实战平台系统等多系统中可以做到多系统web端统一部署。找到最佳平衡点, 实现多项目同时实现的性能最大化。
三、总体方案
首先需要了解tomcat的发布项目的机制:tomcat发布项目有2种办法。第一种就是把文件复制到webapps下面, 是最常用的办法;第二种就是利用配置文件来告诉tomcat项目所需的文件在哪。即虚拟路径功能使用。第二种步骤如下:首先找到tomcatconfCatalinalocalhost目录 (没有则自行新建) ;新建一个xml文件命名为项目名.xml如test.xml;打开该xml添加如下内容<Context path="/test"reloadable="false"doc Base="D:workspacetestWeb Root"work Dir="D:workspacetestwork"></Context>其中:path代表浏览器访问的应用名;reloadable设置文件修改不自动reload整个应用;doc Base指定该应用所用到的文件的地址;work Dir项目用所用到的jsp编译成class后存放的临时目录;然后启动tomcat正常访问应用, 应用的是工作空间里面的class。在新疆九师平安城市项目中, 可以把两个或多个同时并发量较低的项目, 单点登录、运维管理子系统等同时部署在一个tomcat中, 即方便管理也可实现性能优化。其次, 解决如何class修改以后应用自动使用新的class而不用重新加载重启整个应用。使用插件jrebel, 里面有个jar文件将该jar文件放到tomcat目录中如c:/tomcat中, 配置tomcat让该插件生效打开eclipse找到tomcat的配置在启动参数一栏添加如下代码-noverify-javaagent:c:tomcatjrebel.jar。
四、总结
目前采用Java或JSP开发的应用系统, 大部分都利用Tomcat作为Web应用服务器。Tomcat是一个小型的轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用, 也是开发和调试JSP程序的首选应用服务器。部署不仅要应对来自环境的挑战, 开发环境、测试环境、生产环境等不同环境的转换, 而且由于部署本身的复杂性, 在服务器、项目、人员等规模较大时, 像大型游戏网站、电商网站, 发布都是极其频繁的, 这时在业务复杂、工作难度大等诸多因素下, 快速部署、快速生产显得尤为重要。低效的部署流程亟待改善。本文以平安城市领域的图像、平台、实战、视频质量诊断等子系统为例, 着重介绍tomcat虚拟路径功能在项目部署中的使用。使用tomcat虚拟路径管理web项目的方法是很不错的实用的方法, 多种途径, 包括:用路径来指定新web项目所在文件地址;通过编写配置文件, 将新web项目的配置信息填进去达到管理的目的。本文主要讲解了tomcat的一些核心配置原理, 旨在使开发、运维人员在新疆九师平安城市项目部署有更好的选择, 实现方式。让学习者能够更好的学习和理解tomcat、web相关知识。
参考文献
[1]康小军.《计算机与数字工程》, 2008, 36 (10) :203-205
[2]李萍.《科技情报开发与经济》, 2011, 第12期 (12) :114-116
[3]孙仁鹏, 何淼.Tomcat性能监视和调优研究[期刊论文]-软件导刊, 2012, 11 (12)
[4]陈文超.浅析Tomcat Web服务器基于Apache的集群与负载均衡[期刊论文]-科技资讯, 2012, (6)
Tomcat 篇2
(一)修改Tomcat配置文件方法:
找到Tomcat 目录,打开config/server.xml文件,添加一段代码即可。如红色的字体
URIEncoding=“utf-8” protocol=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8443” /> 这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码(红色部分为新添加的代码) (二)Java代码实现 java.net.URLConnection和java.net.URL是远程读取文件重要的类。因为当前的文件名是中文,如果直接构造字符串http://localhost/download/中文文 件.txt 读取远程文件必要要出错。需要对“中文文件.txt”进行编码,如下代码: try { System.out.println(URLEncoder.encode(“中文文件.txt”, “utf-8”));} catch(UnsupportedEncodingException e){ e.printStackTrace(); } //输入结果为:%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt 电子商务、OA等基于B/S模式的应用系统随着Internet的快速发展而日趋流行。B/S模式的应用系统运行于Web服务器上。目前业界比较成熟的WEB服务器有Web Sphere、Resin、Tomcat等。其中,Tomcat是目前最受开发者欢迎的Web应用服务器,在市场上占有较大的份额。 Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司共同开发。Tomcat曾被JavaWorld杂志的编辑选为最具创新的Java产品,又是SUN公司官方推荐的Servlet/JSP容器。Servlet和JSP的最新规范都在Tomcat的新版本中得到了实现,加上Tomcat性能稳定,因而得到了软件开发商的认可,成为目前流行的Web应用服务器。 Tomcat采用java作为编程语言,由于Tomcat和Java的字符编码处理机制,很多系统开发人员开发Tomcat应用系统的过程中处理中文字符时都会遇到乱码问题。可以说乱码一种普通性的问题,因而有必要深入研究其形成原因,提出解决办法,以供相关开发人员参考。 2 乱码成因 Tomcat应用系统出现乱码的原因,大都与字符集编码转换有关,所以,要探究乱码成因,必须从字符集及其编码谈起。 2.1 字符集与字符编码原理 字符是文字和符号的总称。计算机内部只能识别二进制,计算机要处理各种字符,就需要将字符与二进制内码对应起来,这种对应关系就是字符编码。制定字符编码首先要确定字符集,字符集是指一组字符的集合,定义了可处理字符的边界。将字符集内的字符排序,然后和二进制数字一一对应起来,这就完成了编码的过程。 目前常用的字符集及其编码有以下几种: 1)ASCII:目前计算机中用得最广泛的字符集及其编码,由美国国家标准局(ANSI)制定。ASCII字符集由控制字符和图形字符组成。一个ASCII字符编码占一个字节,其最高位用作奇偶校验位。 2)ISO/IEC 8859-1:国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0x A0-0x FF的范围内,加入192个字母及符号,藉以供使用变音符号的拉丁字母语言使用。 3)GB2312/GBK:GB2312是我国的国家标准编码,用来表示简体汉字和英文字母,是一种混合字节编码,英文字母使用一个字节,编码和ISO8859-1一致,汉字使用两个字节,首字节最高位规定为1。后来的GBK编码能够用来同时表示繁体字和简体字,兼容GB2312。 4)UNICODE:UNICODE是一种把全球所有语言文字统一编码的字符集,每个字符统一使用2个字节。这样理论上一共最多可以表示65,536个字符。基本满足各种语言的使用。 5)UTF:UTF采用UNICODE字符集,是不定长编码,每一个字符的长度从1-6个字节不等。英文字母的编码兼容ISO8859-1。汉字使用三个字节表示。 在实际应用中,开发人员经常需要把字符编码在不同的字符集之间互相转换,由于各字符集的大小和边界不一致,转换时会出现以下几种情况。 1)有些字符集可以兼容另外的字符集,也就是说,同一个字符,在兼容的字符集之间编码一致,比如字符“a”在GBK、ISO8859-1中的编码均为0x61;字符“中”在GBK和GB2312中的编码均为0XD6D0。 2)有些字符在两个字符集之间虽然编码不一致,但在两个字符集之间都有唯一编码,它们可以互相转换而不丢失信息。比如字符“中”字在GBK中的编码为0x D6D0,在UNICODE中的编码为0x4E2D,它们互相转换后仍为“中”字;字符“a”在ISO8859-1中的编码为单字节的0x61,转换到UNICODE字符后变为0x0061,仍为“a”。 3)有些字符集中的字符不属于另外的字符集,这些字符在字符集之间转换时则会丢失原有信息。比如字符“中”字在UNICODE中的编码为0x4E2D,ISO8859-1中没有字符“中”的编码,转换时可能把高位字节截去变为0x2D,即短横线“-”;还可能视每个字节为一个字符,转换结果为0x4E0x2D,即“N-”两个字符;第三种可能会把0x4E2D转换为特定的字符。具体采取哪种转换方案视转换系统而定。但不管采用何种转换方案都丢失字符的原信息,这是产生乱码的最重要原因之一。 2.2 Java对字符编码的处理 Java作为一种全球通用的跨平台编程语言,必须能够处理所有国家的语言文字,基于这一点考虑,Java编译后的字节码文件.class和和虚拟机内部统一使用UNICODE字符集。 Java作为开源软件思想的践行者和先驱,没有硬性规定Java源文件(*.Java)的字符编码标准,而是在使用javac编译时使用选项-encoding指定源文件的字符编码。 如果编译时错误指定了与源文件不兼容的字符集,.class文件中就会出现乱码。 假设有如下类 在简体中文windows XP(以下简称简体中文XP)环境中,大部分编辑器以操作系统字符集GBK保存Java源文件。如果使用javac编译时指定选项-encoding BIG5,则该类的运行结果为 笢恅 究其原因,“中文”在GBK中的编码为0XD6D0、0XCEC4,而0XD6D0、0XCEC4在BIG5字符集中为字符“笢恅”的编码———相同的编码,不同的语义,因此出现了乱码。 3 Tomcat应用系统常见乱码现象及解决办法 3.1 Jsp网页上的文字变成乱码 例如普通的jsp文件testEncoding.jsp中有“中文”二字,客户端浏览该JSP时显示。 原因探究: 在JSP标准的语法中,如果没有显式指定页面使用的字符集,默认采用ISO8859-1。ISO8859-1不包括中文字符,当保存以上JSP文件时,系统试图把“中文”转换成ISO8859-1编码,由此产生了乱码。 解决办法: 如果page Encoding属性存在,JSP的字符编码方式就由page Encoding决定,否则就由content Type属性中的charset决定。test Encoding.jsp应在文件的开关加上语句 其中,page Encoding的值可为任何包含JSP文件中所有字符的字符集。 但是这样做存在很严重的问题,page Encoding选项不能被include子文件继承,子文件必须重新加入该选项,而且该选项在父文件和子文件之间有着严格的要求,子文件必须采用和父文件一致的字符集,而且在书写习惯上必须一致。假设test Encoding.jsp的body部分包含<%@include file="test Include.jsp"%>语句,test Include.jsp文件内容如下: 浏览testEncoding.jsp时,Tomcat会抛出异常“org.apache.jasper.JasperException:/testInclude.jsp(8,0)Page directive:illegal to have multiple occurrences of contentType with different values(old:text/html;charset=GBK,new:text/html;charset=gbk)”。 Tomcat启动时会寻找web.xml中的 这样,即使各jsp文件的page Encoding不一致,Tomcat也能够成功编译输出网页内容。 3.2 POST提交表单时乱码 页面向服务器提交大量数据时一般采用POST方法,开发人员经常遇到此方法提交的数据中的中文字符在服务器端读出来变成乱码的情况。 原因探究: POST方法把数据封装在HTTP头中发送给服务器。客户端封装需要提交的数据时,采用的编码是jsp文件中语句 设置charset的值。对于简体中文网站,一般采用的字符集为GBK或GB2312。缺省情况下,Tomcat使用所驻留的操作系统的字符集编码解释客户端提交的数据。一些版本的LINUX,比如REDHAT,操作系统默认采用的字符集为ISO8859-1。在这样的环境下,Tomcat会把客户端提交的数据解释成乱码。 解决办法: 直观的解决办法是每次处理客户端提交上来的数据前使用语句 request.set Character Encoding("GBK"); 人工告诉Tomcat必须采用的字符集编码。该语句放置在所有读取数据的语句之前: 以上的解决办法虽然直观,但程序员必须在每次读取客户端数据之前设置字符编码,容易出错和遗漏。针对这些缺点,可以使用Tomcat的filter对所有的客户端数据进行统一设置。首先,在web.xml中注册filter。 filter配置中,指定初始化参数字符编码encoding的值为GBK。在filter类中读入该参数的值,并把request的字符编码、response的字符编码设置为encoding。Filter实现如下: 3.3 GET提交数据乱码 少量的数据可以以形如“test URLEncoding.jsp?city=南宁”的URL参数方式提交给服务器。程序员以这种方式提交数据时经常遇到所提交的中文字符在服务器端变成了乱码。 原因探究: 在客户端,附在URL后的参数以操作系统的字符集对其进行编码,简体中文XP环境下,字符集为GBK。数据提交到服务器后,由于URL不属页面内容,JSP页面的编码设置对URL参数无效。默认情况下,Tomcat5使用字符集ISO8859-1解释URL参数,造成两字节的中文字符被解释为两个单独的英文字符。 解决办法: 修改Tomcat配置目录下的server.xml,使用URIEncoding指定URL参数的编码方式: 4 结束语 Tomcat作为B/S模式应用系统的服务器,为信息化的发展作出了巨大贡献,然而乱码是Tomcat应用系统开发人员经常遇到的问题。本文试就笔者实际开发经验从字符集及其编码、Java对字符编码的处理机制、Tomcat对字符编码的处理机制等方面剖析了Tomcat应用系统乱码形成的原因并提出相应的解决办法。希望本文能起到抛砖引玉的作用。 摘要:由于Tomcat和Java对字符集的处理机制和中文编码有冲突,乱码是Tomcat应用系统开发人员经常遇到的问题。该文在论述字符集和字符编码以及java对字符编码的处理机制的基础上,探究了出现的乱码的原因并提出相应解决办法。 关键词:Tomcat,Java,乱码,字符集,字符编码 参考文献 [1]sun公司.java官方文档[EB/OL].(2005-12-31)http://gceclub.sun.com.cn/chinese_java_docs.html. [2]Apache软件基金会.tomcat官方文档[EB/OL].(2006-01-06)http://tomcat.apache.org/tomcat-5.5-doc/setup.html. Linux Shell脚本检测tomcat并自动重启 后台运行命令 sh xxx.sh & 查看后台任务:jobs 召唤到前台:fg jobs编号 可以删掉while循环的代码放到crontab里面定时执行,可以将脚本直接后台运行, #!/bin/bashwhile [ true ]do url=“www.jb51.net/”; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk ‘NR==1{print $2}‘`; if [ $httpOK == “200” ];then tomcat6=`ps -ef | grep tomcat | awk ‘NR==1{print $1“ ”$2;}‘`; user=`echo $tomcat6 | awk ‘NR==1{print $1}‘`; pid=`echo $tomcat6 | awk ‘NR==1{print $2}‘`; if [ $user != “tomcat” ]; thenservice tomcat6 start; elsekill -9 $pid;sleep 5s;service tomcat6 start;service tomcat6 start;service tomcat6 status; fi; fi; sleep 5m;done; 以上所述就是本文的全部内容了,希望大家能够喜欢, Linux Shell脚本实现检测tomcat Tomcat是目前比较流行的Web应用服务器, 最新的Servlet和JSP规范总能在其中得到体现, 深受Java爱好者的喜爱并得到了部分软件开发商的认可。Tomcat在默认配置情况下, 性能难以充分发挥。为了提高处理HT-TP请求的并发能力, 应用在生产环境中, 需要对Tomcat进行性能监视和调优。 1 Tomcat性能监视 为了进行性能调优, 首先要进行性能监视, 找出生产环境下Tomcat的各种参数配置效果, 确定性能瓶颈, 调整资源的分配, 提高并发量。 1.1 性能监视思路 可以通过发送大量HTTP的请求来模拟多用户对Tomcat的并发访问, 使其承受不切实际数量的负荷, 获得错误的情况。也许是Web服务器拒绝连接、或是Java虚拟机耗光内存、或是数据库连接失败、或是其它方面错误, 从而定位系统瓶颈。要选择资源消耗大的代码执行路径, 比如有复杂的业务处理、频繁数据库的交互、大量数据的传递、文件的读写等, 逐步增加并发访问量, 监视Tomcat的状态, 查看实际被处理请求的线程并发数、堆栈内存使用情况、数据库连接是否正常等。 1.2 性能监视工具 JMeter是Apache组织开发的一个用于压力测试和性能测量工具, 可用于对服务器、网络或对象等模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能, 有助于性能的调整。为了方便, 本文中把数据库服务器、Tomcat6、JMeter等安装在一台操作系统为XP的电脑上, 虽然不同的软硬件环境测试的数据结果会有大的差异, 但不影响测试效果。 1.3 实施步骤 (1) 建立测试计划。使用JMeter添加线程组、添加取样器、添加监视器, 测试结果如图1。 (2) 性能监视。利用Tomcat自带的Manager控制台进行性能监视, 查看JVM参数、处理http请求线程数等情况, 如图2。说明默认状态下, Tomcat的JVM最大值为64M, 可以并发处理的最大线程数为40。 (3) 增加负载测试。增加请求线程数为600, 在JMeter的Summary Report中发现Error%为4.02%, 表明服务器端已经来不及处理所有请求, 丢弃了4.02%的http请求。通过Tomcat监视器查看, 发现并发的请求数已达到最大的数值40, 堆内存也几乎使用完。既然有请求的丢弃, 说明实际并发的请求数已经超过了能承受的Max threads数。 急剧增加并发的请求数, 将线程数增加为6 000, JMeter和Tomcat的控制台分别出现了错误, Summary Report的错误率急剧上升到100%。JMeter控制台错误说明其所需的栈空间已经严重不足, 大量并发的请求需要多个线程栈。Tomcat控制台错误说明服务器运行所需的JVM堆内存已经严重不足, 最终拖垮Tomcat。错误提示主要有以下几种: 错误提示一:uncaught Exception java.lang.OutofMemoryError:unable to create new native thread. 原因:操作系统没有足够的内存资源来产生线程, 需要开辟的栈空间不够。 解决方法:相应增加线程默认的总栈空间大小, 以便能生产更多的线程。 错误提示二:java.lang.OutOfMemoryError:Java heap space. 原因:JVM可使用的堆内存不够分配。在大量并发请求时, 实际需要的内存超出堆的最大值时, 虚拟机就会提示内存溢出, 严重时会导致应用服务崩溃。解决办法:相应增加JVM可使用的堆内存。 错误提示三:java.lang.OutOfMemoryError:PermGen space. 原因:JVM可使用的PermGen内存不够分配, 该内存是永久保存区域, 主要JVM用于存放Class和Meta信息。 解决方法:相应增加可使用的永久存储区内存。 2 Tomcat性能优化 性能优化需要逐步调整各方面参数, 不断查看测试效果, 使软硬件整体性能充分发挥, 达到整体最优。 2.1 JVM参数调优 JVM参数的调整需要结合操作系统和Web程序对内存的实际使用情况, 在堆、栈和永久存储区之间合理分配, 使它们协调。可以在startup.bat文件头中试探性修改, 如下: set CATALINA_OPTS=-Xms512m-Xmx1 024m–Xss128k -XX:PermSize=16m-XX:MaxPermSize=32m 使用同样的sample进行测试, 发现Jmeter和Tomcat端不再报异常了, 只是Error%错误率比较大, 测试结果如图3, 监视结果如图4。同时还使用指令jstat查看PermGen永久保存区的分配情况以及JDK自带的jconsole监视服务器整体状态。结果表明调整JVM参数起到了效果, 堆的大小对性能影响较大, 但服务HTTP请求的线程数量不够。 2.2 调整线程池 服务器来不及响应大量并发请求, 会丢弃部分请求, 需要修改连接器的并发线程数。在server.xml的http连接器节点下配置maxThreads="800", 发现请求的丢失比调整前相比少很多, 即Error%的值变小了, 如图5和图6, 表明提高线程池的并发量起效果了。 2.3 调整数据库连接池 如果数据库连接池的最大连接数严重不足, 也会产生“Cannot get a connection”错误。每个线程都可能要访问数据库, 调整好JVM的参数和连接器的并发数, 还需适当增大数据库连接池的并发数。由原来的maxActive="40"变为maxActive="100", 发现错误率降为8.90%, 表明数据库连接池参数的调整, 对性能也有着重要的作用。但是如果过多地增加maxActive的值, 比如为800, 和线程池的maxThreads值一致, 发现错误率反而上升了。因为与数据库交互时, 速度受磁盘转速物理条件的限制, 比在内存中创建线程的速度要慢, 所以如果数据库连接池容量设置过大, 会导致磁盘来不及响应服务连接的请求, 操作系统所需内存的资源也会相应增加, 反而会降低系统整体的性能。 3 结语 Tomcat的性能调优需要结合服务器硬件、操作系统和Web程序对资源的需求, 从堆、栈、线程池、连接池等多方面进行调整, 需要不断地测试, 才能找到合理的参数配置。使用测试工具查看测试结果, 监视工具监视服务器端状态, 分配的各种参数要协调, 使各个环节相对平衡, 这样才能发挥整体性能, 提高并发量。比如, 虽然堆内存中存放着JAVA对象, 需要较多的空间, 但是如果单方面将堆内存设置过大, 反而会使Tomcat的运行变慢, 因为操作系统会缺乏必要的内存资源, 其它参数对应的功能所需的资源也得不到满足, 过度的堆内存反而会白白浪费掉, 线程池、连接池等的设置也是同样的道理。还可以精简配置, 释放不必要的资源和功能, 比如关闭AJP Connector、DNS查询等。 摘要:为使Tomcat能更好地服务大量的并发请求, 提出了不断地进行性能监视、调优、再监视、再调优, 直至系统的各个环节达到相对平衡的思路。可以使用测试工具查看测试结果、监视工具监视服务器端状态, 结合服务器硬件以及操作系统和Web程序对资源的需求, 从堆、栈、线程池、连接池等多方面进行整体调整。实验结果表明, 该方法可以有效提高Tomcat的性能。 关键词:Tomcat,性能监视,系统调优,测试工具,监视工具 参考文献 [1]李萍.浅谈TOMCAT之性能优化[J].科技情报开发与经济, 2011 (12) . [2]赵岗耀.用Lambda Probe监控Tomcat实例的内存使用[J].软件导刊, 2009 (3) . [3]高张, 康小军.提高Tomcat服务器运行性能的研究[J].计算机与数字工程, 2008. [4]JASON BRITTAIN, IAN F DARWIN.Tomcat权威指南[M].第2版.北京:中国电力出版社, 2009. 一、用Keytool工具制作安全证书 Keytool是Java自带的一个数据证书管理工具,主要功能有制作、导入和导出证书。在命令行模式下输入如下模板代码段即可制作证书: keytool-genkey(非对称加密)-alias User(keystore的别名)-keyalg RSA(指定加密算法)-validity 365(有效时间/单位为天)-keystore keystore(指定keystore文件名及存放目录) (一)生成服务器端证书 在命令行模式使用命令: keytool-genkey-v-alias tomcat-keyalg RSA-keystore D:testtomcat.keystore-validity 365 随后填写相关参数,其中参数栏“您的名字与姓氏是什么?”是必填项,并且必须是Tomcat部署主机的域名或IP如sina.com或者192.168.1.1等,在本地做开发测试时,应填入“localhost”。然后生成名为localhost_server.store的文件,其使用的加密算法为RSA,有效期为一年,并存放于D:test目录下,如图1所示。 (二)生成客户端证书 为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12。命令行模式下使用如下命令进行生成: keytool-genkey-v-alias mykey-keyalg RSA-storetype PKCS12-keystore D:testmykey.p12 双击生成的mykey.p12证书文件,将证书导入浏览器,如图2所示。 二、添加服务器和客户端的证书信任 (一)让服务器信任客户端证书 由于服务器必须信任客户端证书,因此,必须把客户端证书添加为服务器的信任证书。由于不能直接将PKCS12格式的证书导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令: keytool-export-alias mykey-keystore D:testmykey.p12-storetype PKCS12-storepass password-rfc–file D:testmykey.cer 下一步是将该文件导入到服务器的证书库,添加一个信任证书,使用如下命令: keytool–import–v–file localhost_trust.cer–keystore localhost_server.store 具体如图3所示。 (二)让客户端信任服务器证书 由于是双向SSL认证,客户端也要验证服务器证书。因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将Keystore格式的证书库导入,因此必须先把服务器证书导出为一个单独的CER文件,使用命令: keytool-keystore D:tomcat.keystore-export-alias tomcat-file D:testtomcat.cer 具体如图4所示。 通过以上命令,服务器证书就被我们导出到“D:testtomcat.cer”文件了。双击tomcat.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。 三、在Tomcat中进行配置 将Tomcat中的server.xml文件中通过查询 scheme=“https”找到相关配置段,去掉注释并替换成如下代码(路径和密码要填写正确): 四、测试 打开Tomc a t服务,在浏览器中输入ht t p s://localhost:8443/,选择证书界面弹出,选“localhost”,点击“确定”,进入Tomcat主页,地址栏后会有“锁”图标(如图5和图6红框所标),表示本次会话已经通过HTTPS验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。至此完成THTTPS双向认证。 摘要:HTTPS提供加密通信及对网络服务器身份的鉴定服务,比传统的HTTP更安全。本文通过描述Keytool工具制作安全证书、添加服务器和客户端的证书信任等具体方法,完成在Tomcat中的配置和测试,实现在常用的轻量级服务器Tomcat里配置HTTPS双向认证。 关键词:身份鉴定,安全证书,HTTPS,证书信任,双向认证 参考文献 [1]李萍.浅谈TOMCAT之性能优化[J].科技情报开发与经济,2011(12):43-44. [2]钟经伟.贯通TOMCAT开发JAVAWEB开发配置整合应用开发详解[M].北京:电子工业出版社,2008. 关键词:说课设计,课程分析,教学设计,教学实施,教学评价 1课程的定位、作用和目标 定位指课程在人才培养方案中属于哪一类型的课程。《Tomcat配置与管理实训》是面向计算机应用技术专业开设的一门岗位能力课程。作用指课程在人才培养过程中的作用, 与前导课程和后续课程的关系, 对学生知识和能力培养所发挥的作用。从专业的课程体系来看, 是在其前导课程《动态网页技术》基础上的延伸和拓展, 并为网站的管理与维护岗位奠定实践基础。目标是指通过这门课程的学习, 学生应掌握的知识、技能和素质。 2课程内容与资源 课程内容的选取要突出岗位 (群) 中知识、技能和素质的需求, 选择的依据要来源于企业的调研结果。 2.1内容选取思路 课程内容的选择标准要依据行业企业发展需要和完成职业岗位实际工作任务的要求, 本课程内容的选取是基于企业不同发展阶段对www服务的需求, 如图1所示。 2.2主要内容及教学进度 课程内容的组织和安排是对教材及相关材料的精心重构和整合, 要符合学生特点、认知特点, 符合企业实际工作需求, 实训课程要突出对学生职业能力的培养, 具体如表1。 2.3教学资源 课程主体教材选用Jason Brittain等编写的《Tomcat权威指南》, 支撑教材使用孙卫琴主编的《Tomcat与Java Web开发技术详解》, 并利用官方网站提供辅助指导。主体教材适合有经验的人员, 支撑教材适合初学者。另外, 还自编了电子讲义和整合了企业案例, 图文并茂。教材的选用注重知识的系统性, 讲义的编写注重理论与实践的结合, 且通俗易懂。 3教学设计与实施 3.1学情分析 课程开设在大二下学期, 有一定的专业基础和动手能力。学生怕长时间或纯粹的理论学习, 而愿意动手, 特别喜欢看到实验成功结果, 但同时解决错误的能力不足, 耐心不够。 3.2教学内容的重、难点和解决办法 课程的重点:Tomcat的基本配置与管理、性能管理、与Apache的集成和集群。 重点解决方法:首先将课程内容提炼成若干个子任务构成, 在每个子任务的实施过程中, 先提出问题, 比如:为什么需要进行数据源的配置?然后教师分步骤分动作演示如何进行配置和测试, 在实践中进行知识的讲解, 学生做好记录。完成后让学生重做, 同时请两三个学生一起上台来做, 一是检验学的情况, 二是出现实际问题集中讨论和解决。让同学们相互学习, 实践的步骤和过程中总犯一些错误, 有实践环境的问题, 有配置方法的问题, 有操作失误的问题等等, 先在同学间相互解决, 解决不了的由老师解决。教师全局把握, 培养良好的学风。最后进行数据源、JNDI、连接池等知识的讲解, 来完成对起始问题的回答。 将任务分步骤分动作演练, 让学生有了感性认识和成就感, 激发了学习兴趣, 发挥了学生的主观能动性。在此基础之上, 结合操作的过程、出现的问题和运行的结果, 进行知识的讲解, 便于学生自然接受, 起到了好的教学效果。 课程的难点:Web运作原理、连接池、虚拟主机、SSL、集群。 难点的解决方法:以解决实际任务和问题之中穿插理论的讲解, 学生以教师的实践和自己的实践来感受和体会, 再对原理知识进行拓展提高, 尽量用图表说明问题。比如, 在演练完了数据源的配置后, 再用图形说明数据源对象由Servlet容器管理, 而不是自行编写代码, New出对象。 将抽象的概念具体化, 再加上实践体验, 就比较容易理解和接受。 3.3教学模式 《Tomcat配置与管理实训》课程注重对学生网站管理与维护岗位能力的培养, 所以采取一体化教学和任务驱动相融合的教学模式。 3.4教学方法应用 实践教学法:分两个层面, 教师对教的实践, 学生对学的实践, 两者缺一不可。学生岗位能力的培养直接依赖于教师岗位能力的水平, 教师将自己的岗位能力直接展示给学生非常重要。教师实施实践内容, 利用多媒体展示实践任务的操作过程、解决错误的方法、测试和验证结果、这一过程有效反映了教师如何分析问题、运用知识、分解岗位能力、展开实践、解决错误, 使学生有一个比较直观的认识, 容易激发学生的兴趣, 起到良好的教学效果。学生实践, 暴露问题, 锻炼自己的能力, 总结实践内容和问题, 有利于增强学生学习的兴趣、信心、知识的掌握和能力的提高。 问题法和讨论法:本实训课程实际上由许多问题组成, 所以要经常提出问题, 激发学生的思考, 再逐步展开分析和解决, 引导学生结合已学过的知识, 寻找方法和思路。比如, 在进行多个Tomcat安装的时候, 如何检测哪些端口已被占用, 如何捕获启动过程中一闪而过的错误信息, 等等。对实训过程中的各种报错等开展讨论, 寻求方法和原因。这样, 有利于吸引学生注意力, 促进其积极思考, 解决问题和错误之后, 身心获得成就感。 3.5考核方式 平时成绩占70%, 实训报告成绩占30%, 目的是为了让学生注重平时任务完成、知识回答和相互学习等情况。采用的手段是平时按顺序记录每个学生每个任务完成情况, 成绩排在前30%的同学且能够正确回答问题的为优, 帮助其他同学的学生可以加分, 营造平时学习氛围。 4微观教学设计 以一个单元的具体实施, 体现上述的教学思想, 以虚拟主机配置为例说明。 教学目标:会进行虚拟主机的配置, 明白虚拟主机的概念和作用。 教学重点:虚拟主机的配置。 教学难点:虚拟主机概念。 (1) 提出问题, 激发兴趣。 企业原来有一个域名, 随着部门的增多, 现在需要增加一个域名, 比如, 南京信息职业技术学院有一个域名, 还希望计算机与软件学院有一个独立的域名, 为节省成本, 希望共用同一台硬件服务器, 同一个IP地址, 如何解决? (2) 教师演示, 学生记录。 教师分步骤分动作演示, 从动作的作用、内容和相关知识进行阐述。 ①找到静态的主机文件hosts, 进行IP地址和域名的映射配置, 说明真实情况需要进行域名服务器的配置。提问:Hosts 文件的作用?DNS工作原理?②放置两个Web程序在同一台服务器上, 希望通过两个域名来访问;③配置和讲解server.xml文件中和虚拟主机相关的部分;④修改HTTP端口号为80, 为什么?⑤验证, 由实验结果体验虚拟主机的感性认识。 (3) 学生实践, 解决问题。 学生重做任务, 出现错误, 学生相互学习, 教师引导。 (4) 知识解析, 提高认识。 在有实践感受后, 进行知识的系统讲解, 并多以图表说明和以问题的方式提出, 这样有利于加深理解。比如, 用图2说明什么是虚拟主机;如何配server.xml文件, 用表说明 4.5学生复述, 转为己有 学生有了实践体验和教师讲解, 然后复述配置虚拟主机的目的、概念和过程等, 这样便于巩固。 5学习评价和规划 学习评价可通过一些事例来说明你的教学模式、教学方法等手段所取得的成效, 比如, 学生竞赛和获奖情况、课程改革前后的实训报告和期末成绩对比以及学生、督导、社会和专家的评价。课程规划要反思课程教学过程, 总结课程现有的不足, 提出进一步建设的内容和目标。要针对问题谈解决办法, 岗位能力课程可着重强调实现工学结合方面的措施。 6结语 说课重在说理。说课者必须对课程的内涵有着深刻的理解, 必须有自己鲜明的教学理念和教学特色, 否则说课就会空洞, 缺乏实质性内容。所以, 要结合行业和企业, 引入企业案例和内容, 不断研究和学习, 才能提高教学教研水平。 参考文献 [1]黄敏, 刘娜.高职课程说课内涵浅析[J].广东交通职业技术学院学报, 2009 (3) . [2]孔丽, 杨晓冬.《机械工程材料与工艺》说课设计[J].青年与社会, 2010 (8) . [3]赵珊, 袁良.《电子操作》实训说课[J].科技信息, 2010 (4) . [4]董萃.高职院校教师说课问题浅谈[J].温州科技职业学院学报, 2010 (1) . [5]郝以庆, 郝中军.浅谈说课[J].教育视野, 2010 (5) . 1 解决方案 为解决上述问题, 本文对Apache与Tomcat进行整合, 并实现Tomcat多实例独立JVM (Java Virtual Machine) 的虚拟主机 (每个虚拟主机用户拥有独立可管理的Tomcat服务器) , 用Apache解释HTML和PHP等文件, Tomcat执行JSP程序。Apache接受来自客户端的请求, 并根据请求信息进行判断, 若被请求的网站是JSP的, 则由Apache的模块mod_jk将Servlet或JSP请求转发给Tomcat, mod_jk利用AJP worker通过AJP (Apache Jserv Protocol) 协议与Tomcat进程通信, Tomcat检查来自AJP workers的请求, 确定与请求相对应的虚拟主机, 执行程序, 并将执行结果通过AJP connector返回给mod_jk, 最终由Apache将执行结果返回给客户端。 2 方案实现 2.1 基本系统安装准备 对所需软件进行准备和基本配置。 2.1.1 安装LAMP服务器软件 本文使用Cent OS 5.5操作系统, Apache、Mysql、PHP 采用源码方式安装 (安装位置:/usr/local) , 软件版本分别是:Apache 2.2.11, Mysql 5.1.47, PHP 5.2.9。 2.1.2 安装tomcat服务器软件 安装JDK (本文版本:1.6.0_17) 安装Tomcat (本文版本:apache-tomcat-6.0.20) , 默认情况下Tomcat服务的端口为8080;在/etc/profile文件中配置JDK与Tomcat的环境变量。 2.1.3 下载Apache连接Tomcat的模块mod_jk注意要根据服务器的平台和Apache的版本下载相应的mod_jk. so文件, 本文下载使用mod_jk-1.2.28-httpd-2.2.X.so文件。 2.2 Apache虚拟主机配置 2.2.1 配置DNS服务器, 添加虚拟主机的域名 这里配置2个虚拟主机, 域名分别是site1.lzptc.edu.cn和site2.lzptc.edu.cn, 均指向这台服务器。 2.2.2 添加虚拟主机用户 添加虚拟主机用户, 为用户设定家目录, 如:useradd site1-d/var/www/html/site1 passwd site1以虚拟主机用户登陆服务器, 在其家目录下建立conf、logs、temp、webapps/ROOT和work目录。 2.2.2 修改Apache配置文件httpd. conf, 添加虚拟主机参见apache httpd虚拟主机配置文档。依次加入一二虚拟主机site.lzptc.edu.cn (用“site2”替换上边配置中的“site1”) , 更多的虚拟主机同理。 2.3 Apache与Tomcat整合, Tomcat多实例配置 2.3.1 安装配置mod_jk 2.3.2 在Apache的conf目录下建立mod_jk连接Tomcat的配置文件workers.properties: 定义转发请求到不同Tomcat的worker列表, 此处定义2个, 分别对应虚拟主机site1和site2 2.3.3 复制Tomcat的配置文件server. xml文件到每个虚拟主机用户的conf目录下, 对每个用户的server.xml进行端口设定, 注意, 每个虚拟主机的Tomcat端口是独立的, 虚拟主机site1.lzptc.edu.cn的配置文件如下, 其中AJP/1.3协议的端口号为8301, 这与workers.properties中site1-worker的端口号一致。同理可设定其他虚拟主机的server.xml文件。 2.3.4 独立Tomcat的启动停止1) 虚拟主机用户自行启动 每个虚拟主机用户启动独立的Tomcat, 需要给它们设置独立Tomcat的CATALINA_BASE路径, 这里将CATALINA_BASE的值设置为用户的家目录。为方便用户启动停止各自的Tomcat服务器, 编写脚本tomcat.sh将该脚本文件保存在虚拟主机用户的家目录下, 添加执行权限, 用户运行tomcat.sh start|stop命令即可启动/定制自己的Tomcat服务器。 2) 服务器管理员统一启动 当服务器重启后, 需要服务器的管理员统一对各独立的Tomcat实例进行启动, 编写脚本如下, 可以将该脚本设置为开机启动。 3 总结 通过对Apache和Tomcat的整合, 使客户端能够通过同一端口访问WEB服务器的PHP和JSP程序, 并实现Tomcat多实例独立JVM的虚拟主机, 方便虚拟主机用户对各自虚拟主机的控制, 克服了单个Tomcat运行JSP程序时虚拟主机之间会产生影响的缺点。 摘要:本文对Apache和Tomcat服务器软件进行整合, 并实现Tomcat多实例独立JVM的虚拟主机。 【Tomcat】推荐阅读:Tomcat 篇3
Tomcat 篇4
Tomcat性能监视和调优研究 篇5
Tomcat 篇6
Tomcat 篇7
Tomcat 篇8