- 浏览: 748945 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
u011487470:
感觉就是知识采集一样,博主能不能整理一下
基于Web的IM简介 -
whxtbest:
whxtbest 写道2里面:如果T本身就是重复的话 比如 ...
关于后缀树的一些理解 -
whxtbest:
2里面:如果T本身就是重复的话 比如S是aaab,T是aa ...
关于后缀树的一些理解 -
刘亮love小雪:
谢谢啦
Java 2D高级绘图 -
bluky999:
收集的资料挺多的 哈哈
基于Web的IM简介
感觉不是什么新技术,也不是什么新创意,可是一旦用起来可能对技术的影响不小,客户端如果使用长连接的话事情就少多了。原文格式的PDF,看了一下,感觉可以,就译了过来。
原文的标题是Implementing Asynchronous Web Application using Grizzly's Comet
什么是Grizzly?
Grizzly是一个用于构建可信赖的服务应用的通用的NIO框架,它支持中断及非中断socket操作,包括普通或SSL连接,其扩展当前由Sun的几个内部项目(Alaska,GlassFish,Tango等),以及外部项目(Jetty6.1)使用。V2版本将目标定于GlassFish9.1,并将由ORB,MQ使用,也可能包括JAX-WS。
Comet:
一种编程技术,可以使web服务器在客户端不必发送任何请求的情况下发送数据到客户端,它允许创建驻留于浏览器的事件驱动的web应用。
Comet应用与传统应用的区别如下:
http://alex.dojotoolkit.org/?p=545
基本上,它们都使用长期存活的HTTP连接以减少传递给服务器的消息的延迟。
在实质上,他们都不会偶尔轮询服务器,取而代之是服务器具有一条开放的通讯线路,并且可以使用该线路将数据推入客户端。
Comet应用程序可以在任何时候将数据交付至客户端,而不是只响应用户输入。数据由单条,预先开启的连接交付。该方法极大减少了数据交付的延迟。
Grizzly内部的Commet支持细节:
在Grizzly异步请求处理扩展(Grizzly Asynchronous Request Processing extension)之上实现。
隐藏了NIO/Asynchronous Request Processing的复杂性
支持clean以及ssl连接
对JSF,JSP,Servlet,POJO,Javascript(Phobos)可用。
主要目的:简化它!
Grizzly Comet:定义
CometContext:可共享的“空间”,应用可以订购它,之后在上下文更新时被更新。
CometEvent:一个持有Coment Context(内容更新,客户端连接/断开之类)的状态的对象。
CometHandler:一个应用程序为成了一个或几个ComentContext的成员必须实现的接口。
流程:
首先,应用创建一个新的Comet上下文。
将你的Comet request handler加入到该上下文中,通常一个连接创建一个handler。
客户端开放单条连接至一个可共享的上下文。
当一个客户端推送数据时,所有其它的客户端都被更新。
当上下文改变时,客户端都被更新。
实现Comet:四个简单步骤
为一个已有应用加入Comet支持很简单(不需要大规模重构)。
下面四个步聚将描述怎么加入支持
更多细节可以在第二部分找到
首先,注册到一个新的或是已有的Comet context。该context通常使用一个context路径创建(但不是必须的)。
CometEngine cometEngine=CometEngine.getEngine();
CometContext context=cometEngine.register(contextPath);
实现Comet handler接口:
public void attach(E attachment);
public void onEvent(CometEvent event);
public void onInitialize(CometEvent event);
public void onTerminate(CometEvent event);
public void onInterrupt(CometEvent event);
将Comet handler加入到上下文中
下一步,初始化Comet request handler并将其加入到context
MyCometHandler handler = new MyCometHandler();
cometContext.addCometHandler(handler);
广告变更
一旦Comet handler被加入到context,你就可以开始发布事件了,你可以注意到当客户端推送数据或当一些外部事物发生变化时context的情况(如数据库)。
cometContext.notify("Comet is cool");
Comet handler示例
对于一个Servlet,大多数情况下你会使用HttpServletResponse来实现CometHandler:
public class CometResponseHandler implements
CometHandler{
public void attach(HttpServletResponse
httpServletResponse){
this.httpServletResponse =
httpServletResponse;
且onEvent方法大部分情况下看起来是这样的:
public void onEvent(CometEvent event) throws IOException{
try{
PrintWriter printWriter = httpServletResponse.getWriter();
printWriter.println(event.attachment());
printWriter.flush();
} catch (Throwable t){
t.printStackTrace();
}
下一步做什么呢?
构建一个应用程序可重用的handler集合:
一个针对Servlet/Jsp/JSF
一个针对Phobos
一个针对POJO
构建一个针对AJAX|JMaki的可重用客户端组件。
加入comet支持
(由一个叫Bayeux的协议,javascript库(dojo工具箱),以及一个事件服务器(Grizzly)组成),当前一个外部小组正在开发它。
下面都是废话,贴些有用的地址。
此文的参考文献:
[1]http://weblogs.java.net/blog/jfarcand/archive/2006/02/grizzly_pa
rt_ii.html
? [2]http://weblogs.java.net/blog/jfarcand/archive/2006/07/the_grizzly_com.html
原文的标题是Implementing Asynchronous Web Application using Grizzly's Comet
什么是Grizzly?
Grizzly是一个用于构建可信赖的服务应用的通用的NIO框架,它支持中断及非中断socket操作,包括普通或SSL连接,其扩展当前由Sun的几个内部项目(Alaska,GlassFish,Tango等),以及外部项目(Jetty6.1)使用。V2版本将目标定于GlassFish9.1,并将由ORB,MQ使用,也可能包括JAX-WS。
Comet:
一种编程技术,可以使web服务器在客户端不必发送任何请求的情况下发送数据到客户端,它允许创建驻留于浏览器的事件驱动的web应用。
Comet应用与传统应用的区别如下:
http://alex.dojotoolkit.org/?p=545
基本上,它们都使用长期存活的HTTP连接以减少传递给服务器的消息的延迟。
在实质上,他们都不会偶尔轮询服务器,取而代之是服务器具有一条开放的通讯线路,并且可以使用该线路将数据推入客户端。
Comet应用程序可以在任何时候将数据交付至客户端,而不是只响应用户输入。数据由单条,预先开启的连接交付。该方法极大减少了数据交付的延迟。
Grizzly内部的Commet支持细节:
在Grizzly异步请求处理扩展(Grizzly Asynchronous Request Processing extension)之上实现。
隐藏了NIO/Asynchronous Request Processing的复杂性
支持clean以及ssl连接
对JSF,JSP,Servlet,POJO,Javascript(Phobos)可用。
主要目的:简化它!
Grizzly Comet:定义
CometContext:可共享的“空间”,应用可以订购它,之后在上下文更新时被更新。
CometEvent:一个持有Coment Context(内容更新,客户端连接/断开之类)的状态的对象。
CometHandler:一个应用程序为成了一个或几个ComentContext的成员必须实现的接口。
流程:
首先,应用创建一个新的Comet上下文。
将你的Comet request handler加入到该上下文中,通常一个连接创建一个handler。
客户端开放单条连接至一个可共享的上下文。
当一个客户端推送数据时,所有其它的客户端都被更新。
当上下文改变时,客户端都被更新。
实现Comet:四个简单步骤
为一个已有应用加入Comet支持很简单(不需要大规模重构)。
下面四个步聚将描述怎么加入支持
更多细节可以在第二部分找到
首先,注册到一个新的或是已有的Comet context。该context通常使用一个context路径创建(但不是必须的)。
CometEngine cometEngine=CometEngine.getEngine();
CometContext context=cometEngine.register(contextPath);
实现Comet handler接口:
public void attach(E attachment);
public void onEvent(CometEvent event);
public void onInitialize(CometEvent event);
public void onTerminate(CometEvent event);
public void onInterrupt(CometEvent event);
将Comet handler加入到上下文中
下一步,初始化Comet request handler并将其加入到context
MyCometHandler handler = new MyCometHandler();
cometContext.addCometHandler(handler);
广告变更
一旦Comet handler被加入到context,你就可以开始发布事件了,你可以注意到当客户端推送数据或当一些外部事物发生变化时context的情况(如数据库)。
cometContext.notify("Comet is cool");
Comet handler示例
对于一个Servlet,大多数情况下你会使用HttpServletResponse来实现CometHandler:
public class CometResponseHandler implements
CometHandler{
public void attach(HttpServletResponse
httpServletResponse){
this.httpServletResponse =
httpServletResponse;
且onEvent方法大部分情况下看起来是这样的:
public void onEvent(CometEvent event) throws IOException{
try{
PrintWriter printWriter = httpServletResponse.getWriter();
printWriter.println(event.attachment());
printWriter.flush();
} catch (Throwable t){
t.printStackTrace();
}
下一步做什么呢?
构建一个应用程序可重用的handler集合:
一个针对Servlet/Jsp/JSF
一个针对Phobos
一个针对POJO
构建一个针对AJAX|JMaki的可重用客户端组件。
加入comet支持
(由一个叫Bayeux的协议,javascript库(dojo工具箱),以及一个事件服务器(Grizzly)组成),当前一个外部小组正在开发它。
下面都是废话,贴些有用的地址。
此文的参考文献:
[1]http://weblogs.java.net/blog/jfarcand/archive/2006/02/grizzly_pa
rt_ii.html
? [2]http://weblogs.java.net/blog/jfarcand/archive/2006/07/the_grizzly_com.html
发表评论
-
Saving JFreeChart as SVG vector images using Batik
2008-07-28 15:52 1736JFreeChart is a free Java class ... -
JfreeChart的使用
2008-07-28 13:42 1317先从网上找点介绍。 一、简介 WW 的发展使得基于 ... -
JPanel绘制的东西如何保存成图像
2008-07-28 10:40 3265[/color][color=darkred][color=d ... -
使用Java Servlet动态生成图片
2008-07-24 16:03 1956在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统 ... -
Java解析JSON
2008-06-10 21:00 27755jsp文件 var people = { "pr ... -
DWR2.1 API Doc
2008-05-19 15:50 1225http://getahead.org/dwr-javadoc ... -
servlet/jsp 获取绝对路径和相对路径
2008-05-14 11:03 3119根目录所对应的绝对路径:request.getServletP ... -
load-on-startup作用
2008-05-14 10:53 2318load-on-startup 元素在web应 ... -
使用异步Servlet扩展AJAX应用程序
2008-05-12 23:30 1301作为Web应用程序模型的A ... -
关于Java的java.library.path
2008-04-30 00:37 16855java可以通过System.getProperty获得系统变 ... -
【转】JNI
2008-04-29 23:50 1352JNI是Java Native Interface的缩写。从J ... -
jni.h所在位置
2008-04-29 23:19 5164在%java_home%\include\下 -
servlet重定向
2008-04-23 14:20 9884在servlet/JSP编程中,服务器端重定向可以通过下面两个 ... -
CVS与Eclipse使用摘要
2008-04-16 17:08 21891. 在administrator下安装CVSNT版本,重启计 ... -
ServletContext和ServletConfig深度分析
2008-04-09 14:00 1320对于web容器来说,ServletContext接口定义了一个 ... -
JSP文件在浏览器中显示出现乱码的解决方法
2008-04-02 10:29 1741采用utf-8编码,在jsp文件中,加入下面2句即可: < ... -
GlassFish
2008-03-20 18:32 1519GlassFish社团正在开发一个免费,开源的Java EE5 ... -
jndi与jdbc的区别
2008-03-20 15:59 2762jndi给所有的命名目录服务提供统一的API前端,jdbc给所 ... -
Tomcat5.5下配置JNDI JDBC数据源
2008-03-20 15:57 14651 安装JDBC驱动 通常,将JDBC驱动安 ... -
【转】DynaActionForm的使用
2008-03-19 04:56 2862DynaActionForm提供了一种 ...
相关推荐
【标题】"在Glassfish v2...通过深入学习和实践这个示例,开发者可以掌握如何在Java环境中构建实时聊天应用,同时也能够提升对Grizzly框架和Comet技术的理解。这对于开发需要实时交互功能的Web应用来说是非常有价值的。
通过上述介绍可以看出,Grizzly不仅仅是一个高性能的网络通信框架,它还拥有丰富的功能和良好的可扩展性。对于那些希望在Java平台上构建高性能网络应用的开发者来说,Grizzly无疑是一个值得深入研究的优秀工具。
3. Grizzly Comet Support:Grizzly网络应用框架中的Comet支持,用于构建高性能的实时Web应用。 五、Java-Comet的挑战与解决方案 1. 浏览器兼容性:不同的浏览器对Comet的支持程度不同,需要考虑跨浏览器的实现策略...
2. **模块化设计**:Grizzly由一系列可组合的过滤器和处理器组成,开发者可以根据需求选择和配置不同的组件,实现高度定制化的Web服务器。 3. **性能优化**:Grizzly对内存管理、线程调度等方面进行了优化,减少了...
Pushlet框架是Comet技术的一个具体实现,由Jaekson和Grizzly项目开发。它是一个轻量级的、可扩展的框架,支持多种推送模式,如长轮询、HTTP流和HTTP片段。Pushlet的核心概念包括Pushlet服务器、Pushlet客户端和...
Grizzly的目标是帮助开发人员使用NIO构建可扩展且强大的服务器,并提供扩展的框架组件:Web框架(HTTP / S),WebSocket,Comet等!入门灰熊目前在以下分支机构中有几条发展线: 2.3.x:这是2.
GlassFish还集成了一系列先进技术,如Grizzly's Comet、jRuby on Rails和Metro等,同时提供友好的更新中心和控制界面。 ### GlassFish的企业级功能 对于企业用户,GlassFish提供了全面的功能,包括高性能的Web服务...