一种更高效率的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
好了。现在就可以看看效果
"说说" BugReport!
[ 大恐龙 发表于 2008年5月20日 12:01 ]
2007-5-20 发现合成语音的服务无法启动,查看日志发现是因为更新了最新的安全补丁,服务的数字签名失效了,索性去掉的数字签名,回收.net,OK!
以后对"说说"bug报告请在这里留言。最近删除垃圾留言删的手发麻,手一抖删除了20多篇正常留言,请见谅。
Tags:
'
说说
'
“说说”自定义播放器颜色的办法!
[ 大恐龙 发表于 2008年3月25日 22:34 ]
播放器的图例:

调用方法不变,还是
1) 在你想出现播放器的地方插入一个层: <div id="speech_player" name="speech_player"></div> 层的id可以自己定。
2)把以下代码放在</body>前面:
<script type="text/javascript" src="http://speech.w3cool.com/swf/speech.js"></script>
<script type="text/javascript">
var _scid = "copytext"; // 你希望朗读的文章块的id;
var _spid = "speech_player"; //显示播放器的id;
_sp_bg = "0xCDDFF3"; //修改成你想要的颜色
_sp_leftbg = "0x357DCE";
_sp_lefticon = "0xF2F2F2";
_sp_rightbg = "0x357DCE";
_sp_rightbghover = "0x4499EE";
_sp_righticon = "0xF2F2F2";
_sp_righticonhover = "0xFFFFFF";
_sp_text = "0x357DCE";
_sp_slider = "0x357DCE";
_sp_track = "0xFFFFFF";
_sp_border = "0xFFFFFF";
_sp_loader = "0x8EC2F4";
speaker();
</script>
Tags:
'
javascript
' '
mp3
' '
说说
'
“说说”的ChangeLog
[ 大恐龙 发表于 2008年3月24日 00:28 ]
0.1.2(2007-5-20) 主要针对滥用问题,也就是被修改js文件和swf破解的问题,还包括封装修改和反向工程,决定暂时停止新版的开发,修正和添加一系列策略和方法,将精力集中到安全和鲁棒性的修正上。
“说说”于2007-3-22正式上线运行,初始版本号定位0.1版
0.1.1(2007-3-23) 修改放黑客安全模块,容易产生误报,将一些写的及其糟糕的html当成注入,拒绝合成。修改一个可能被黑客利用的安全问题,修改带有半角"造成的问题。
0.1(2007-3-22) 功能原型实现,正式上线试运行。
这是我一直在策划的一个产品,目的是使语音技术能在互联网更广泛的应用。每一个页面,只要加入一段javascript脚本就能使用,经过1个多月的努力,终于初步实现的功能,首先在数字报纸上使用:

效果还不错,使用了1Pix Player作为音频播放器,进一步的设计和重构正在进行中。大家有什么想法和建议欢迎留言。
以下是Sample: http://ctdsb.cnhubei.com/html/ctdsb/20080322/ctdsb293789.html (标题下面的播放器)
任何网站或者使用web作为界面的程序都可以使用,使用的方法是:
1) 在你想出现播放器的地方插入一个层: <div id="speech_player" name="speech_player"></div> 层的id可以自己定。
2)把以下代码放在</body>前面:
<script type="text/javascript" src="http://speech.w3cool.com/swf/speech.js"></script>
<script type="text/javascript">
var _scid = "copytext"; // 你希望朗读的文章块的id;
var _spid = "speech_player"; //显示播放器的id;
speaker();
</script>
就可以。下一步将实现自定义播放器的样式。大家可以在自己的blog和网站里面加。
还有一个想法就是用WTL编写一个程序,调用JS,监控本地的剪贴板,把需要朗读的文字提交。做一个像Mp3Clould一样的东西。
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
关于iCast等“富媒体”广告的研究(三)--附JS文件
[ 大恐龙 发表于 2007年3月 3日 00:28 ]
this.showPlayer1 = function() {
try {
var w = window.open('http://g.fc510.com/2052/130.html',this.player_name,"fullscreen=0, toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0, left=" + screen.width + ", top=" + screen.height + ", width=" + this.movie_w_final + ", height=" + this.movie_h_final);
} catch (e) {}
if (typeof(w)=="undefined" || w==null) {
return -1;
}
this.write_exp_time();
this.submitData4CPM(this.mission_id);
this.set_domain(this.original_domain);
return 1;
}
先看看这段js,这一段js就是在没有任何限制时弹出windows.open()的窗口。修改cookies和提交流量统计。
this.showPlayer2 = function() {.......
这个函数用来弹出模态对话框的版本。
if(!isDEMO && !this.is_quick_load)
{
var s1 = "";
s1 += '<APPLET style="visibility:hidden; position:absolute" code="ntelevise.web.nTelevise.class" codebase="'
+ this.code_base
+ '" name="nTelevise_APP" id="nTelevise_APP" WIDTH=1 HEIGHT=1 ALIGN=baseline ARCHIVE="nTelevise.jar" MAYSCRIPT>';
s1 += '<param name=flashurl value="' + this.download_base + this.cur_movie_file_name + '">';
s1 += '<param name=advname value="' + this.mission_id + '" ><\/APPLET>';
var s2 = "";
s2 += '<APPLET style="visibility:hidden; position:absolute" code="ntelevise.web.nTelevise.class" codebase="'
+ this.code_base
+ '" name="nTelevise_APP" id="nTelevise_APP" WIDTH=1 HEIGHT=1 ALIGN=baseline ARCHIVE="nTelevise.jar" MAYSCRIPT>';
s2 += '<param name=flashurl value="' + this.download_base + this.cur_movie_file_name +'">';
s2 += '<param name=advname value="' + this.mission_id + '" ><\/APPLET>';
var re1 = /sohu/i;
var re2 = /17173/i;
if(isSohuCode)
document.write(s2);
else
document.write(s1);
this.applet_create_time = new Date();
}
呵呵,上面这个函数则是在js无法弹出窗口的情况下。准备弹出的applet程序,注意这里:APPLET style="visibility:hidden; position:absolute" 为什么这样写我稍候再讲。
最近要好好休息一下,这是几个主要的函数,文件附在后面,大家看了有问题再说,声明:本人不欢迎任何新手和对技术有着极其肤浅认识热衷于"做管理"的伪IT人向我提出任何问题以及要求帮助,本人也不会解答任何人关于为什么部署不成功无法显示等问题,如果没有能力看的懂我提供的代码,就算了。祝大家周末愉快。
下载:点击下载文件 (jar文件也在里面,入门的人就可以部署在自己的机器上试一下了,有问题不要来问我)
Tags:
'
applet
' '
html
' '
iCast
' '
javascript
' '
富媒体
'
关于iCast等“富媒体”广告的研究(二)
[ 大恐龙 发表于 2007年2月20日 20:46 ]
现在我们找讨论一下js文件。iCast使用了JScript.Encode来加密js的源代码,这是5.0版ie的一个功能,目前也只有ie支持,也就是说,iCast只能在5.0般的ie上看到,不过现在世界上的ie普及率这么高,icast也就不在乎什么兼容性了,经常问如何屏蔽iCast的弟弟妹妹们,装个firefox吧,这样看sina的时候就不怕那什么出来了。源代码怎么decode出来我就不用说了吧,什么?不知道,不知道是这个世界上最牛的话,服了U,自己去问Google大神。不可否认,iCast的js文件写的是相当的精妙的,一般的程序员很难写得出如此好地js,iCast的技术壁垒不在java而在javascript,从头说起:
var ntelevise_channel_ID = 583;
var _nTelevise_Controller_init = [ntelevise_channel_ID, 43327, "http://www.w3cool.com/ntelevise/", "http://travel.w3cool.com.cn/adv/skin/white/", "http://www.w3cool.com/ntelevise/", "http://track.w3cool.com.cn/tracker/trackerI2.dll","2.swf|2.swf",320,264,false,"#000000","2.zip",10,false,"","","","http://secure-cn.fc510.com/cgi-bin/m?ci=cn-hdt&cg=0&si=http://house.fc510.cn/",false,false];
.这是整个的初始化参数:
-
'site_id', (站点id, 指一个投放广告的子站点如.news.163.com)
-
'mission_id' (投放任务id,用与计费)
-
'download_base' (广告文件下载地址)
-
'skin_base' (播放器外观)
-
'code_base' (程序文件的下载前缀)
-
'track_server' (计费服务器地址)
-
'movie_filename1','movie_w1','movie_h1' (广告文件名,宽度、长度)
-
'is_quick_load' (不知道是什么)
-
'cookie_name' 记录广告是否被播放了,播了一次就别播了,不过最近163、sina好像都不在乎了,打开就播,也是现在广大网民烦他们的地方。
-
'ad_type'(不知道是什么)
-
'3pt_tracker'(不知道是什么)
-
'no_title'(不知道是什么)
-
'listen_domain'(不知道是什么)
this.param_list = ['site_id', 'mission_id','download_base','skin_base','code_base','track_server','movie_filename1','movie_w1','movie_h1','is_loop','bg_color','dld_filename','interval','is_quick_load','cookie_name','cpm_tracker','ad_type','3pt_tracker','no_title','listen_domain'];
for (var i=0; i<this.param_list.length; i++ ) {
var x = this.param_list[i];
if ( x!='' && x!=null ) {
this[x] = para[i];
}
}
this.inited = false;
this.GUID = Math.abs(this.mission_id) + '_' + Math.abs(this.site_id);
this.UID = (Math.random()+1).toString().replace(/\./,'').substr(0,12);
this.submit_list = this.submit_list_string = [];
this.submit_timeout = null;
this.played_count = 0;
this.domain = '';
this.original_domain = '';
这一段用于初始化和获取参数。
Tags:
'
applet
' '
html
' '
iCast
' '
javascript
' '
富媒体
'
关于iCast等“富媒体”广告的研究(一)
[ 大恐龙 发表于 2007年2月12日 15:28 ]
最近看到一个同事的blog上居然还在谈论如何屏蔽iCast,呵呵,本人虽不才,但ICast在我看来是很取巧的东西,其实并没有什么技术含量,在这里先对iCast的运行过程和原理进行简要的分析。
ICast实际上是两块flash文件,当页面加载时,叶面引用iCast的js,这个js会首先对浏览器情况进行一些检测,例如是不是ie,能不能弹出新窗口等,然后根据能否运行javascript, 能否弹出窗口,能否运行javaApplet这三种情况,这段js的小程序会做3种方式来处理:
一、当浏览器支持javascript且能弹出窗口时,直接使用弹出式窗口弹出带视频flash的小窗口。如图:
查看全文:" 关于iCast等“富媒体”广告的研究(一) " »
Tags:
'
applet
' '
html
' '
iCast
' '
javascript
' '
富媒体
'













![[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)






[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 发表: 太雷人了。 这功能粉强大!...
[小申] 于 08-09-21 发表: 你好,看了你们的这个播放器感觉真的是好棒, 不过我不懂里面的那个id具体是什么? 可以教我一下么,谢...
[哈哈] 于 08-09-12 发表: 番茄闷骚面...