用Java NIO写HTTP Server记录
花了一个多月用Java NIO写了一个定制的HTTP Server,主要是支持我的WeBuzz.IM网页版聊天服务
。
先介绍一下WeBuzz.IM网页聊天服务。
WeBuzz.IM
是一款网页版即时聊天工具,用于帮助用户通过网页和朋友聊天。Gtalk(Google Talk)
、MSN(Windows Live Messenger)
、Yahoo! Messenger(Yahoo! Chat,又称为雅虎通)
、AIM(AOL Instant Messenger)
、ICQ
、Jabber(支持XMPP协议的聊天服务器)
的用户,可以通过WeBuzz.IM提供的网页界面登录对应的聊天网络,与已有的朋友进行聊天。通过WeBuzz.IM网页版聊天工具,你无需在你本地电脑安装Gtalk、MSN、Yahoo! Messenger、AIM或ICQ等客户端,只需要在浏览器中访问 http://webuzz.im/
,即可查看好友更新,并与朋友轻松聊天。
对于某些没有权限在本地电脑安装各种聊天客户端的用户(譬如在网吧上网的用户)来说,WeBuzz.IM能够帮助他们不安装任何客户端软件即可和他们的朋友联系。
对于那些厌烦了电脑一旦启动就启动数个聊天客户端以致电脑速度慢吞吞的用户来说,WeBuzz.IM实现了一个浏览器窗口多个聊天客户端,大大提升电脑的性能和速度。
对于某些其禁止或封锁了聊天客户端端口的网络用户(譬如在办公室的工作人士、在学校的学生教师或者在银行机构的公务员)来说,WeBuzz.IM使用了普通网页的HTTP 80端口,不会被防火墙封锁,从而依然能够帮助用户登录聊天网络并和他们的朋友保持联系。
为什么已经有成熟的Tomcat Server不用而非得自己写HTTP Server呢?
1. 网页聊天服务需要处理大量的长连接的HTTP请求,也就是Comet连接请求,而现有的Tomcat Server在这方面不算成熟。
2. WeBuzz.IM后台使用了Java2Script
技术的Simple RPC
和Simple Pipe
,Simple RPC/Pipe原来是面对Servlet API的一个封装,但是Servlet API 2.X没有关于Comet连接处理的相关API,而Servlet 3.0 API刚刚成为JSR标准,尚未有成熟稳定的服务器实现。
2. 在写自己的HTTP Server之前,我已经使用Tomcat Server两三年,在大量Comet连接处理方面已经到达了Tomcat服务器的极限。
普通Tomcat Server和基于Java NIO定制的HTTP Comet应用Server有什么区别呢?
普通Tomcat Server基本都是指提供支持Servlet/JSP标准的容器,可以往其中部署对应的Servlet应用。基于Java NIO定制的HTTP Server,不受限于Servlet的API,可以根据NIO的特性和Comet连接的特性结合WeBuzz.IM网页聊天的需求,修改定制,从而能够充分提高单机Serve
相关文档:
文件的建立/检查与删除
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>文件的建立、检查与删除</title>
</head>
<body>
<%
String path=request.getRealPath("");
//out.println(path);
File f=n ......
windows xp下配置JDK环境变量:
1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:\java\jdk1.5.0_08;
2.安装完成后,右击“我的电脑”,点击“属性”;
3.选择“高级”选项卡,点击“ ......
向量的数据类型类似一个数组,但它存储的元素数据类型不要求一致 Vector类是在java.util包中
1.构造方法:Vector()
2.常用方法
public void add(Object o):将对象o添加到向量的末尾
public void add(int index,Object o):将对象o添加到向量的指定位置 ......