一种更高效率的ISAPI整合IIS与Tomcat_JSP的方式(非jk)
[ 大恐龙 发表于 2008年9月 9日 17:34 ]
今天发现一种极好的整合IIS和JSP的方法,毫无疑问java在windows下运行比在linux运行效率要高(大约4%),同比IIS比Apache的IO能力强,在不考虑了lisence的问题下,笔者一直在考虑在windows下部署java的生产环境,尽管笔者的很大程度的工作是管理的维护linux服务器,但是发现很多时候windows还是最好的选择,当然是在得到一样优秀的维护和管理的前提下,一直以来很头疼的就是Tomcat和IIS的整合,在windows下肯定不会考虑使用apache,apache在windows下的表现太差了。笔者使用了2个月时间仔细研读和修改apache 2.29版的windows版源代码(哈哈,不专业了apache的源代码是可移植C++不分版本)试图优化apache的IO。 最终不得不放弃,Apache的构架上不如IIS,在windows上表现始终不如意,所以还是考虑用IIS整合tomcat.
IIS整合Tomcat的传统方式是JK,通过8009端口做代理,这样做缺点很多,当然优点也很多,优点我就不说了。这样的缺点是实际上要socket一次,笔者认为除非在一台IIS+多个Tomcat,或者IIS和tomcat不在一台服务器上时才有必要使用。在大多数情况,也就是IIS和Tomcat在同一台服务器上时,完全可以用一种高效的办法.
答案其实就是asp.net里的ihttphandle, 使用asp.net的ISAPI handle劫持要转发的页面(图方便,有达人直接写一个C++的ISAPI也行,.net基于jit效率也没得说),直接把他rewrite到8080端口上,也就是实际上IIS和Tomcat没有任何通信。图片、js、html全部IIS处理,这个小程序只处理URL。也就是我写的这个JSP ihttphandle直接取tomcat 的response 作为IIS的response。
下载 JSP_iHttpHandle.dll (.net 3.5) 拷贝到站点的bin目录。
修改web.config添加:
<!-- JSP ihttpHandle 配置 -->
<add path="*.jsp" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="*.xhtml" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="/servlet/*" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<!-- JSP ihttpHandle 配置 -->
然后在 站点属性 -> "home directory" ->Configuration ->
把.jsp .xhtml你要tomcat处理的内容加在aspnet_isapi.dll上,当然也可以图方便设定一个WildCard
好了。现在就可以看看效果
.Net的运行效率问题
[ 大恐龙 发表于 2008年8月29日 22:03 ]
CLR只执行本机的机器代码。有两种方式产生本机的机器代码:实时编译(JIT)和预编译方式(产生native image)。详细了解了JIT,基本上每个人都知道的是,所有.Net语言都将被编译成为一个叫做IL汇编的中间语言。但是计算机是如何执行这个中间代码的,却是很多人不知道,甚至理解错误了的。
![]() | JIT是.NET程序运行的重要部件之一,全称是即时编译器。我刚才说的误解,就是很多人(绝对不是少数,问了很多c++程序员,10个有9个这种想法)都以为JIT其实就是跟JVM差不多的东西,是一个Interpreter,在运行时读取IL汇编代码,然后模拟成x86代码(也就是俗称的虚拟机)。但是事实上,.NET使用的是更为高级的技术。 .Net程序被加载入内存以后,当某段IL代码被第一次运行的时候,JIT编译器就会将这段IL代码,全部编译成本地代码,然后再执行。这也就是为什么.NET程序第一次运行都启动很慢的原因! 随.NET库,微软还附带了一个工具,可以事先将.NET程序所有的IL代码都编译成本地代码并保存在缓存区中,这样一来,这个程序就跟c++编译的一模一样了,没有任何区别,运行时也可以脱离JIT了(这里不要混淆了,这里不是说可以脱离.NET库,而是说不需要在进行即时编译这个过程了)。所以,.NET和Java运行效率还是有些区别的,当然在执行高IO实时程序时也许仍然不如C++,因为还有在.net framework里面的appDomain的限制。 Java JIT也曾经是Borland的亮点,.net的JIT想法极有可能就来自Borland,但是在架构了由于不用考虑平台的问题大大优于.net. 所以在编译系统中,笔者的主张还是"原生才是硬道理"。 |
Iconv for windows - 编码转换
[ 大恐龙 发表于 2007年12月18日 14:16 ]
最近剽窃一个开源项目项目,把东西往自己的项目里面拖的时候发现,TMD原来是欧洲人写的,用的 windows-1252的编码,怎么办。还好熟悉iconv呵呵。拷到linux下一转就好了,但是SCP来来去去很麻烦,决定写一个windows下的iconv,和linxu的iconv的参数不一样的是-s 代表搜索子目录:
具体用法:
-f From CodePage 源编码
-t To Codepage 目标编码
-s SubDirectory 递归检索子目录
-v Verbose 显示转化日志
eg:
iconv *.bat -p C:\\MyProject -f Windows-1252 -t utf-8 -v -s
*.bat 文件名一定要放在第一个参数呢。呵呵
下载文件:
iconv.exe
Tags:
'
iconv
'
开源一个的Asp.net公共上传文件程序
[ 大恐龙 发表于 2007年12月 6日 02:50 ]
程序很小,目的是为了解决所有web应用图片和文章上传
思路是这样的:任何一个web应用程序提交的都是一个表单,表单内有文件域。
这里这个上传文件拦截到这个form提交的所有文件域,处理上传,并将文件域改名为同名的文本域,文本域的内容就是成功上传的URL,如果失败返回为空,然后redirect到目标的信息页。样就很容易实现img.xxxxxx.com的效果,也能购方便的将论坛博客的上传分离,所要做的就是将上传的action改为该程序的上传处理地址,默认为 /i/up.aspx
原理图
配置文件:
<uploaderconfig>
<applications><!--可以有多个-->
<uploaderapplication>
<id>bbs_uploadfile</id>
<refererdomain>bbs.cnhubei.com</refererdomain>
<refererurl>http://bbs.cnhubei.com/post_upload.asp(.*)</refererurl> <!--调用合法的URL,可以使用正则表达式-->
<successurl></successurl><!--成功后返回页面-->
<errorurl></errorurl><!--出现错误返回页面-->
<domain>img.cnhubei.com</domain><!--目标URL-->
<localfolder>D:\Host\img.cnhubei.com</localfolder>
<allowedextensions>.gif|.jpg|.jpeg|.png|.bmp|.tif|.iff|.swf|.swi|.mid|.wav|.mp3|.rmi|.cda|.avi|.mpg|.mpeg|.ra|.ram|.wov|.asf</allowedextensions>
<allowedextensionssize>350000|350000|350000|350000|350000|350000|35000|750000|35000|50000|35000|50000|50000|50000|50000|50000|50000|50000|50000|50000|50000</allowedextensionssize><!--限制文件上传大小和上传的扩展名,上下对应-->
<folderparse>^UploadFile|yyyyMM|dd|HH</folderparse><!--文件存放规则-->
</uploaderapplication>
</uploaderconfig>
bbs.cnhubei.com使用动网论坛,修改后上传文件均改为 img.cnhubei.com 分离图片后论坛的运行效率得到有效的改观
源代码下载: DotNetCommonUpload.rar
ContentType - 备忘
[ 大恐龙 发表于 2007年11月21日 18:20 ]
| application/activemessage application/andrew-inset application/applefile application/atomicmail application/dca-rft application/dec-dx application/mac-binhex40 hqx application/mac-compactpro cpt application/macwriteii application/msword doc application/news-message-id application/news-transmission application/octet-stream bin dms lha lzh exe class application/jsp jsp application/oda oda application/pdf pdf application/postscript ai eps ps application/powerpoint ppt application/remote-printing application/rtf rtf application/slate application/wita application/wordperfect5.1 application/x-bcpio bcpio application/x-cdlink vcd application/x-compress Z application/x-cpio cpio application/x-csh csh application/x-director dcr dir dxr application/x-dvi dvi application/x-gtar gtar application/x-gzip gz application/x-hdf hdf application/x-httpd-cgi cgi application/x-java-jnlp-file jnlp application/x-koan skp skd skt skm image/x-xpixmap xpm image/x-xwindowdump xwd |
application/x-sv4cpio sv4cpio |
message/external-body message/news message/partial message/rfc822 multipart/alternative multipart/appledouble multipart/digest multipart/mixed multipart/parallel text/html html htm text/plain txt text/richtext rtx text/tab-separated-values tsv text/x-setext etx text/x-sgml sgml sgm video/mpeg mpeg mpg mpe video/quicktime qt mov video/x-msvideo avi video/x-sgi-movie movie x-conference/x-cooltalk ice x-world/x-vrml wrl vrml text/vnd.wap.wml wml application/vnd.wap.wmlc wmlc text/vnd.wap.wmlscript wmls application/vnd.wap.wmlscriptc wmlsc image/vnd.wap.wbmp wbmp text/css css text/vnd.sun.j2me.app-descriptor jad application/java-archive jar video/3gp 3gp video/3gpp mp4 application/x-mif mif application/x-netcdf nc cdf application/x-sh sh application/x-shar shar application/x-stuffit sit |














![[Valid RSS]](http://www.w3cool.com//images/valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://www.w3cool.com//images/valid-atom.png)






[lost] 于 08-11-24 发表: 大哥,看了你这篇文章我又看到希望了 我一直想整合IIS和tomcat 可是碍于小弟水平粗浅,未能看...
[Mr.W] 于 08-11-18 发表: 还有个问题,不知道是说说太强大还是怎么 连需要朗读中的id里的JS都能读出来~ 貌似应该排除JS比较...
[Mr.W] 于 08-11-18 发表: 已发你邮箱~顺便说一下,最近确实总提示服务忙哦~...
[大恐龙
[Mr.W] 于 08-11-17 发表: 这个KMP FLASH播放器有新版本 可以调节音量大小~...
[k-fly] 于 08-11-15 发表: 有个小问题,文章开篇是引用代码的话,就不会处理下面的文字了,至少我的博客里面是这样。...
[乐天] 于 08-11-14 发表: 感谢作者,我的博客已经使用上了该功能。 PJBlog功能预览: sylxb] 于 08-11-14 发表: 你好,请问为何我这有的阅读正常,打开就提示合成忙请稍等,而有的刷新几次才行 我看到有的网站人家阅读都...
[大恐龙
[测试者] 于 08-10-18 发表: 我也用了 速度很卡] 于 08-10-16 发表: wangxunjian] 于 08-10-15 发表: 希望版主能够长久运行,我打算运行到我的网站上去。...
[小白] 于 08-09-24 发表: 小白到此一游。 恩,不错,不错,非煮流!...
[午夜客] 于 08-09-22 发表: 太雷人了。 这功能粉强大!...