好几年没有摸Webshpere了,现因工作需要开始重新学习
安装DB2 v7.2,WebshpereApplicationServer4.0,Webshpere Studio4.0。安装完成后,发现IBM HTTP Server没有安装成功,于是上网查找解决办法。
不查不知道,一查吓一跳:DB2版本已经到了9,WAS的版本也升到6.1!顺便看到开源的社区版Was,看过一些介绍文章之后,立即下载安装试用。另外,IBM传统的WAS+IBM HTTP Server的方式吸引我去做另外一件事,那就是配置WASCe+Apache HTTP Server。
这样配置的原因是:WebSphereApplicationServer Community Edition( 简称 WASCE) 是一个EJB容器,它本身具有容纳EJB,Servlets,JSP,HTML等功能,也就是说,WASCE它本身同时具备EJB容器和WebServer的功能。 我们单纯的 WebServer 如 IIS,Apache,IBM HTTP Server( 通常简称IHS) ,它们只具有处理静态 HTML 页面的功能,不具有EJB容器的功能。 WAS 在处理静态的 HTML 页面及一些图片文件时,它是通过 Java 输入和输出流来进行和客户端通信的。而Apache 是用C 语言来处理用户的对静态文件的请求。相比之下,Apache处理静态文件的速度要快一些。同时,如果我们能够让二者连接起来成为一个整体,对客户端用户来说是透明的,让WASCE 做EJB容器处理动态请求,让Apache处理静态文件,有以下好处: (1)Apache能够以更快的速度处理静态请求,在许多商务应用中,对于 html 页面的请求和对于JSP/Server的请求及对于后台EJB的请求数量是递减的。在这种情况下,可以让Apache分担 WAS 的负担。(2) 可以把Apache和 WAS分别装在不同的物理主机上,这样可以让Apache 处于DMZ 区域,而让WAS 处于受保护区域,提高安全性。
说做就做,我首先在网上搜索查看了多篇相关文章,多数都是配置Apache+Tomcat的介绍,只有一篇介绍Apache+WASCE配置集群的文章。
总结前人经验:配置过程大致分4个步骤(1)下载,安装mod_jk.so文件;(2)修改Apache配置文件httpd.conf;(3)新建文件workers.properties文件;(4)重启Apache服务。
我使用的操作系统是Windows XP Home版,JDK1.5.0_04,Apache HTTP Server2.0.54占用80端口,WASCE v1.1占用8080、8443、8009等端口。
具体步骤如下:从Archive.apache.com下载mod_jk-1.2.13-Apache-2.0.53.so文件,改名为mod_jk.so并放入Apache2安装目录下的modules文件夹中;然后用写字板打开conf文件夹下httpd.conf文件,在loadModules节的末尾添加如下语句:LoadModule jk_module modules/mod_jk.so
#----------------------------------------------------------------------
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
# forward ALL web requests to our mod_jk loadbalancer workers
JkMount /*.jsp wasce
JkMount /*.do wasce
JkMount /servlet/* wasce
保存修改,这样使得Apache在启动时自动加载Mod_jk.so,并使用配置文件workers.properties,日志记录在mod_jk.log中,把对.jsp,.do以及对servlet的所有请求交由Mod_jk去处理;然后,在conf目录中新建worker.properties文件,录入如下内容:ps=/
worker.list=wasce
# Define wasce node...
worker.wasce.port=8009
worker.wasce.host=localhost
worker.wasce.type=ajp13
worker.wasce.socket_keepalive=true
第一行表明使用“/”作为分隔符,第二行定义一个名为wasce的Worker,接下来把worker的属性设定清楚; 最后就是重新启动Apache服务。然后,通过http://localhost/访问,见到wasce的欢迎页面,成功!
后记:(1)失败的教训:最开始我下载了几乎最新的mod_jk-1.2.23-apache-2.0.59.so(1.2.25版本还没有公布,1.2.24版本被召回),文件配置同上,重启Apache报错,通过查看应用程序事件知道“不能够加载mod_jk.so”,捣鼓好一阵子都没有效果。因为最开始并没有在意Apache2.0.59和apache2.0.54的差别,这时候才想到应该换低版本的mod_jk.so试验,果然是问题所在!——要看说明文档,version2.0.XX or later相关词汇一定不要放过!
(2)仍未解决的问题:Apache http.conf中DirectoryIndex应经修改为启用index.jsp,但是wasce-samples中的hello应用不能直接通过http://localhost/hello/访问,而http://localhost:8080/hello/是可以的?有文章介绍在httpd.conf文件中增加别名hello,并启用index.jsp作为默认文件,可以解决该问题——目前我还没有实验,抱歉!