无标题文档 配置 IBMHTTPServer和WebSphereApplicationServer连接
优化应用服务器性能 在本文中,你可以学习到:
使用 IBM HTTP Server 的好处有哪些
如何配置 IBM HTTP Server和IBM WebSphere Application Server连接
如何发布 ear包使之能优化IBM WebSphere Application Server性能
一个示例
前言 大家都知道, IBM 的 WebSphereApplicationServer( 简称 WAS) 是一个企业的级 EJB 容器,它本身具有容纳 EJB , Servlets , JSP , HTML 等功能,也就是说, WAS 它本身同时具备 EJB 容器和 WebServer 的功能。
我们单纯的 WebServer 如 IIS,Apache,IBM HTTP Server( 简称 IHS) ,它们只具有处理静态 HTML 页面的功能,不具有 EJB 容器的功能。
我们通常在安装 IBM WebSphere 包时,可以选择安装 WAS 和 IHS 两个部分。它们可以安装在同一个物理主机上,也可以分开安装在不同的主机上。
WAS 在处理静态的 HTML 页面及一些图片文件时,它是通过 Java 输入和输出流来进行和客户端通信的。而 IHS 是在 Apache 的基础上修改而来的,它是用 C 语言来处理用户的对静态文件的请求。相比之下, IHS 处理静态文件的速度要快一些。同时,如果我们能够让二则连接起来成为一个整体,对客户端用户来说是透明的,让 WAS 做 EJB 容器处理动态请求,让 IHS 处理静态文件,有以下好处:
IHS 能够以更快的速度处理静态请求,在许多商务应用中,对于 html 页面的请求和对于 JSP/Server 的请求及对于后台 EJB 的请求数量是递减的。在这种情况下,可以让 IHS 分担 WAS 的负担。
可以把 IHS 和 WAS 分别装在不同的物理主机上,这样可以让 IHS 处于 DMZ 区域,而让 WAS 处于受保护区域,提高安全性。具体这一部分,可以参考其它网络拓朴资料。
当企业应用增大时,我们需要利用集群技术来达到负载均衡,这时候,可能需要多个 WAS 节点并通过 ND ( NetworkDeploymentManager )来管理它们。这时必须要有一个 IHS 在前面提供这种分发功能。也就是说,利用 IHS 可以为以后扩展做更好的准备。
具体来说, IHS 和 WAS 的连接是通过一个叫 WebServerPlug-in 的来连接它们的。它们的拓朴结构图可以如下所示:
上图的清晰足以不再说明。
前提条件 要想让 IHS 和 WAS 连接起来,我们必须在安装 WEBSphere 包时,选择自定义安装,并选中“ Plug-in For IBM HTTP Server ”。同时,我们需要安装 IHS 和 WAS 。在本文中,我们以 IHS 和 WAS 装在同一台主机上为例说明。
设: WAS 安装在 D:\WebSphere511\WebSphere\AppServer 下面。
IHS 安装在 D:\WebSphere511\IBMHttpServer 下面。
其次,我们需一个还没有打包的 WSAD 工作区,我们在最后打包时,要进行一些设置以满足要求。注意,这个工作区必须是最后马上要打包发布的工作区。
在开始之前,我们先启动 IHS 和 WAS ,在 IE 中输入:
http://localhost:9080/snoop/ 看是否正确安装
好了,一切好了,我们来看如何配置。
配置步骤 用 WSAD5 启动最后需打包的工作区,进入开发环境的 J2EE 视图,双击打开 ”WEB Content” 目录下的“ WEB-INF ”目录下的 web.xml 文件,进入 XML 编辑器,选中扩展页面,如下图所示:
在上图中,将“启用了文件服务”前的 √ 去掉。保存。
2 、打包工作区,将系统输出为 ear 包或输出为 jar 包和 war 包两部分均可以。
3 、进入 WAS 管理工作台,配置 J2C 认证和 JDBC 数据源,成功发布刚才导出的 ear 包。
4 、选择 WAS 管理工作台左边的“环境” -> “ 更新 Web 服务器插件 ”,并在右边选择“确定”。
5 、然后退出 WAS 管理工作台,进入 WAS 安装目录:
D:\WebSphere511\WebSphere\AppServer\config\cells ,确认目录下的 plugin-cfg.xml 是新生成的。
6 、进入 IHS 安装目录: D:\WebSphere511\IBMHttpServer\conf ,并用文本编辑器打开其下的
httpd.conf 文件,将光标移动到最后一行,确认最后两行为:
LoadModule ibm_app_server_http_module “D:\WebSphere511\WebSphere\AppServer/bin/mod_ibm_app_server_http.dll"
WebSpherePluginConfig "D:\WebSphere511\WebSphere\AppServer/config/cells/plugin-cfg.xml"
即需确认这两个文件指向正确的位置且, plugin-cfg.xml 指向的是刚刚生成的。
同时找到类似下面的两行:
# TIHS should be changed to whatever you set DocumentRoot to.
<Directory "D:\WebSphere511\IBMHttpServer/htdocs/Zh_CN">
可以看出,这一行是设置 IHS 的根目录所在的位置。你可以修改它也可以不修改。比如我们这里把它修改为:
<Directory “D:\WebSphere511\IBMHttpServer/htdocs/MyProject”>
注意上面的路径分隔符的写法,同时,请在 D:\WebSphere511\IBMHttpServer\htdocs\ 下建一个目录 MyProject 。
同时找到 DocumentRoot 这一行,把它修改为:
DocumentRoot d:/websphere511/ibmhttpserver/htdocs/MyProject
这样使得 IHS 的根目录指向这个目录。
7 、生新启动 IHS 和 WAS 。
8 、进入 WAS 安装目录下的:
D:\WebSphere511\WebSphere\AppServer\installedApps\abnerchai 目录,其中 abnerchai 是以你的主机的名字命名的目录,找到该目录下刚才发布的那个 ear 包目录,并进入该目录下的 x.war 的这个目录中,在这个目录是存放的是你的所有有 HTML 文件和 JSP 及其它的 IMG 文件等,这个目录也是根目录,把这个目录下的所有的静态文件如 images 目录等拷贝一份到刚才 IHS 的根目录下。
9 、重启 IHS 服务器即可以 :
http://xxx.xxx.xxx/yourApplicationname/ 来访问你的系统了。
附录:举例:
现在 WSAD 中 WEB Content 目录下有一个 JSP 文件如下所示:
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< HTML >
< HEAD >
<%@ page language = "java" contentType = "text/html; charset=GBK" pageEncoding = "GBK" %>
< META http-equiv = "Content-Type" content = "text/html; charset=GBK" >
< META name = "GENERATOR" content = "IBM WebSphere Studio" >
< TITLE > index.jsp </ TITLE >
</ HEAD >
< BODY >
< p >< img src = "images/cz.jpg" ></ img >
< p >< a href = "in.html" > 静态 HTML </ a >
<%
out.println( "<p>这是动态输出!</p>" );
%>
</ BODY >
</ HTML >
同时,在 WEB Content 目录下有一个 in.html 文件和一个 images 目录,其下有一个 cz.jpg 文件。
同时在工作区中还有一些 JavaBean 和 EJB ,用上述方式发布 EAR 包后,名字为:
HelloWorldEARProject.ear
在 WAS 中发布并更新插件后,重启 IHS 和 WAS 。在:
D:\WebSphere511\WebSphere\AppServer\installedApps\abnerchai\HelloWorldEARProject.ear
目录下,有一个 HelloWorldWebProject.war 目录,其下含有 images 目录和 in.html 文件,我们可以通过 http://localhost/HelloWorldWebProject/index.jsp 访问它 ( 这时看不到图片和静态连接不正确,因为 WAS 己设置成不处理这些静态文件 ) 。
这时我们可以这么做,在:
D:\WebSphere511\IBMHttpServer\htdocs\MyProject 目录下新建一个 HelloWorldWebProject 目录,把 images 目录和 in.html 拷贝到该目录下即可。
最后,它们的目录结构如下所示:
这是 IBM HTTP Server 的目录
这是 IBM Websphere Application Server 的目录 ( 发布后 ) 。
作者 abnerchai( 柴政 ), 24岁,西南交通大学计算机与通信工程学院~计算机应用技术硕士研究生、高级程序员。熟悉VC++/JAVA编程,主要研究方向为:网络安全,j2EE/中间件技术,工作流。个人联系方式为:josserchai@yahoo.com ;目前在成都美森系统软件有限公司兼职从事基于IBM WAS/WSAD平台的J2EE/EJB/JCE/JMS/JDBC/Servlets/JSP/JavaScript/开发。