tomcat与IIS整合的几个小问题浅谈

tomcat与IIS整合的几个小问题浅谈
| |
[ 不指定 2006/07/08 14:33 | by zmoon ]
tomcat与IIS整合的几个小问题浅谈


我实践中讨论的IIS为6.0 tomcat为5.0.28 isapi_redirect.dll 为1.2.15版本,以下大部分为实际使用之理解所得

先假设大家都按常规方法安装配置好了tomcat和IIS及相应的jsp虚拟主机设置,还有isapi在IIS6中的常规配置

isapi强烈建议使用msi的安装包来装,无需修改注册表,且2个配置文件安装好后就存在安装目录的conf子目录下面了。

这两个配置文件是

uriworkermap.properties
workers.properties.minimal

如果要修改 worker配置 请把workers.properties.minimal改名为workers.properties
我需要修改的就是添加一行,改善大负载站点的性能问题 

大负载下出现的错误会在isapi安装目录的log目录下面看到日至记录

worker.ajp13w.cachesize=327680


关于cachesize:

当 在多线程的web server(例如apache2.0、IIS 、Netscape)中使用JK时,此属性是有效的。如果将cachesize的值设置为较高的值,这些支持多线程的web server将获得很好的处理能力。如果此属性不被设置,则连接cache特性将失效。



而另外一个关键文件 uriworkermap.properties 默认内容如下 是我们这次讨论的重点 :)

# uriworkermap.properties - IIS
#
# This file provides sample mappings for example wlb
# worker defined in workermap.properties.minimal
# The general syntax for this file is:
# [URL]=[Worker name]

/admin/*=wlb
/manager/*=wlb
/jsp-examples/*=wlb
/servlets-examples/*=wlb

# Optionally filter out all .jpeg files inside that context
# For no mapping the url has to start with exclamation (!)

!/servlets-examples/*.jpeg=wlb

#
# Mount jkstatus to /jkmanager
# For production servers you will need to
# secure the access to the /jkmanager url
#
/jkmanager=jkstatus

就是说默认情况下 IIS收到请求后只把默认站点的几个子目录交给tomcat处理,这是无法实际使用的

我们需要把 jsp文件交给tomcat处理 所以 添加一行 /*.jsp=wlb 后重新启动IIS,你会发现一个郁闷无比的问题: 

  如果你输入 www.123.com 会出现一个错误,错误内容取决于你的IIS设置, 如果你没有在IIS的 网站-主目录-配置(应用程序配置)中添加 应用程序扩展 .jsp ->isapi_redirect.dll 的话 应该是404文件找不到的错误

  如果是IIS中添加了上述扩展且IIS默认文档有index.jsp,可能能够在iis的log中看到500错误,IE中可能是空白或者该页无法显示--显然iis去执行index.jsp出错了

   顺便说一句IIS中的jsp站点既不需要做 应用程序扩展 也不需要添加index.jsp作为默认页面,原因很简单,不需要做应用程序扩展是本人实践 所得 :) ,不需要添加index.jsp 是因为所有jsp文件IIS都交给tomcat去了,使用什么样的默认页面文件应该是在tomcat的web.xml中 设置。

如果你说 我访问 http://www.123.com/ 根本就没有.jsp的URL,怎么会交给TOMCAT呢?

 呵呵 这就是问题关键所在,上面不是说访问 www.123.com会出现一个错误么,你说的此乃正解 :),

如果我访问 http://www.123.com/index.j... 会完全正常,就是说必须在url要带.jsp的请求,tomcat 才能处理 
 实际中这显然是不现实的,你不可能希望客户能够给你在浏览器中添加个index.jsp吧,这样就需要使用 index.html来跳转到index.jsp,但这也不是根本解决之道,不可能每个有index.jsp的目录都添加个index.html吧?

于是来个小小的改变,把上面配置的 /*.jsp=wlb 改为 /*=wlb 看看,恩 JSP站点完全正常了

但是 现在变成所有的url请求都交给tomcat处理了,包括图片动画视频文件等等,你可以在tomcat的网站log中看到,tomcat本来处理静态内容就是差,把所有都交给它,产生两个问题:
 一: 显然,比起通过IIS直接处理静态url请求的 图片动画或者视频不是速度更慢了么?
 二: 由于所有url都通过tomcat处理,导致IIS中建立的虚拟主机ASP站点必须要在TOMCAT也建立一个同样的虚拟主机站点,一个asp站点也要通过tomcat来,是维护上还是性能上,不是更麻烦和不合理么?

如何解决??


1: 把JSP站点相关的静态请求比如图片gif jpg rar avi swf 等等尽可能交给IIS处理

在配置文件中添加如下内容


!/*.jpg=wlb
!/*.asp=wlb
!/*.gif=wlb
!/*.js=wlb
!/*.swf=wlb
!/*.png=wlb
!/*.htm=wlb
!/*.html=wlb
!/*.rar=wlb
!/*.zip=wlb
!/*.avi=wlb
!/*.rmvb=wlb
 
就是说把这些请求都交给IIS来处理,降低tomcat的工作量

2:  把ISAPI筛选器 配置到每一个需要支持jsp的站点,而不是配置到IIS的全局设置中,这样实现了

IIS中的没有配置为支持JSP的站点,就会与ISAPI与TOMCAT都没有任何关系,这点应该。


当然,个人觉得最完美的方式还是只把jsp文件或者指定的目录交给tomcat处理,就是说用/*.jsp 方式

但是前提是有人能够告诉我如何解决 访问 www.123.com时默认页面的处理问题,有人提到修改tomcat的conf目录中的jk2.properties  添加 request.tomcatAuthentication=false 但是星星实践了一下,毫无用处 。


往往几个小问题让人挠头半天,的确是...... 希望大家对这些感兴趣的,看了此文后能有所收获

更新:
在workers.properties添加一行

 connection_pool_size=800
改善下面的错误
[Tue Nov 14 11:08:30 2006] [info]  jk_ajp_common.c (2152): can't find free endpoint
[Tue Nov 14 11:08:30 2006] [warn]  jk_ajp_common.c (2138): Unable to get the free endpoint for worker wlb from 10 slots
[Tue Nov 14 11:08:30 2006] [info]  jk_ajp_common.c (2152): can't find free endpoint
[Tue Nov 14 11:08:30 2006] [warn]  jk_ajp_common.c (2138): Unable to get the free endpoint for worker wlb from 10 slots
[Tue Nov 14 11:08:30 2006] [info]  jk_ajp_common.c (2152): can't find free endpoint
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值