单独使用tomcat做jsp服务器,在工作效率上会有问题,并且所能承受的最大并发连接数也有一定的限制;经测试,当并发连接较多时,tomcat就会处于“僵死”状态,对后继的请求连接失去响应。所以现在就有了一些“整合”解决方案:
将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache,iis等这些web server处理,由此大大节省了tomcat有限的工作“线程”。
当然,使用ibm websphere、bea weblogic、jboss等这些 j2ee服务器会是一个更好的解决方案,但只有应用ejb才会发挥这些j2ee服务器的强大功能。
所以在这里,推荐apache + tomcat的“黄金组合”。在网上查找了一些资料,然后自己动手实验,折腾了近1个小时,终于搞掂!现将具体过程总结如下,希望对大家能有所帮助:
我的运行环境:windows2k server sp4 + j2sdk1.42 + apache2.049 + tomcat5.019 + sql server2k
**准备软件:
1、apache 2.0.49 2、tomcat 5.0.19 3、jk2连接器(mod_jk2.so)
**开始安装:(这里的安装路径是任选的,只要视你的实际情况略做修改即可)
apache安装在h:\apache\apache2 下,监听端口 80;tomcat在h:\apache\tomcat5.0 下,监听端口 8080;
两者都以windows nt服务进行安装。
将mod_jk2.so复制到h:\apache\apache2\modules目录下:
1.编辑h:\apache\apache2\conf\httpd.conf文件,在loadmodule那一段代码中添加:
loadmodule jk2_module modules/mod_jk2.so
2.将adddefaultcharset iso-8859-1 改为 adddefaultcharset gb2312 使apache自动支持中文显示;
3.在“虚拟主机配置代码段”中添加:(此段配置可以根据你的实际情况进行修改)
<virtualhost *:80>
serveradmin pentium4xeon@etang.com
documentroot "h:/apache/tomcat5.0/webapps/root"
servername www.sdg.com
errorlog logs/sdg.com-error_log
customlog logs/sdg.com-access_log common
</virtualhost>
**编写workers2.properties文件并加入h:\apache\apache2\conf目录,内容如下:
[shm]
file=${serverroot}/logs/shm.file
size=1048576
#the socket channel
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
#define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
#uri mapping
[uri:/*.jsp]
worker=ajp13:localhost:8009
**由于tomcat5.019安装时已经有了 jk2.properties 文件,所以在这里就不用自己写了。(或许这就是高版本的好处之一吧 *^_^*)
**编写一个普通的html文件(index.html)与一个jsp文件(test.jsp),放在h:\apache\tomcat5.0\webapps\root 下;现在最好重新启动一下计算机。
重新启动以后,启动apache和tomcat,http://www.sdg.com该是和http://www.sdg.com:8080一样的了—显示的都是index.html;
现在可以测试一下 test.jsp 了,http://www.sdg.com/test.jsp,怎么样,顺利通过了吧?
**下面测试tomcat连接池部分,将网站的所有文件(html + jsp + javabean + servlet)拷贝至h:\apache\tomcat5.0\webapps\root 下,配置tomcat的server.xml文件,添加连接池。在我这儿,经过测试,所有的功能部分都能正常工作。
下载:mod_jk2.so
*********后**********记*************************
1. 如果你的主页是jsp页面,你还需要配置一项:
directoryindex index.html index.html.var index.jsp
加上index.jsp就可以了 *^_^*
2. warning:
————**整合以后,工作一直正常,但偶然打开了apache的 error.log文件,被吓出一身冷汗~~~~有n多的错误,有一行最显眼儿:
no such channel port:localhost:8019
…..ajp13xx failed!
再仔细看了一下 worker2.properties 文件,发现里面有一项设置:
[ajp13:localhost:8019]
channel=channel.socket:localhost:8009
错误指的8019端口就是这个了~ 随即将 8019 改为 8009~ 现在再也没出现这个问题了~看来网上的资料有些时候不一定是最准确的……(可能是笔误吧~~~) :p
**—由此给大家带的不便,我深表歉意!
3. 又发现一个配置上的“小问题”—-
虚拟主机有一项配置:documentroot项,如果按照
documentroot "h:\apache\tomcat5.0\webapps\root" 配置的话,主机也能正常工作,但如果这时打开 logs/sdg.com-error_log 文件,就会发现有一行错误提示:
**warning: "h:\\apache\\tomcat5.0\\webapps\\root" doesnt exist!
经尝试,若改成:
documentroot "h:/apache/tomcat5.0/webapps/root"
则完全没有任何警告信息出现在 error_log文件中~
