- 浏览: 1149068 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
将此文赠送给zk群朋友:易语静人(455938495) --zk高级群 Software③China 25891428
这个特性,我在写博客介绍forward的时候,本来想系统的写一下的,
觉得一般情况下大家都不会考虑这么多,就没写,
我现在粗略的写一下,如有其它疑问,请在本文评论处提出你的问题,下次浏览博客时我会看到
a,zk中的forward,onClick是要在服务器端执行的,我称之为服务端事件,即触发zk预定义的js代码,
该js代码向服务器发送http请求,例如调用服务器端某方法等
b,w:onClick是html里的onClick,即普通的事件,我称之为客户端事件,调用的是你写的js代码,
仅运行于浏览器端, 如果你不主动请求服务器端, zk不会主动向server发送消息
zk中事件可以分为4种,
1,Express事件,即EventListener实现了Express接口的事件
2,EventHandler,所谓EventHandler是你在页面上定义的事件
例如<button onClick="java代码"/>,zk在加载页面解析此处onClick的时候会创建一个Zscript实例
当你点击触发onClick后,会调用page的解析器,page.interpret(zscript.getLanguage(), zscript.getContent(page, _comp), scope);
解析执行onClick里的java代码
3,普通EventListener
4,Component类定义的事件,以on开头的 public void方法 onXXX
zk中组件事件的处理是由EventProcessor事件处理器处理的,组件事件处理顺序如下:
1,Express事件,按照component.addEventListener()添加的顺序调用Express类型EventListener,
2,EventHandler
3,普通EventListener,按照component.addEventListener()添加的顺序调用
4,Component类定义的事件
5,注册到组件所属page上的事件监听器,按照page.addEventListener()添加的顺序调用
以下是org.zkoss.zk.ui.impl.EventProcessor的相关源码
- private void process0(Scope scope) throws Exception {
- final Page page = getPage();
- if (page == null || !page.isAlive()) {
- String msg = (page == null ? "No page is available in " +_desktop: "Page " +page+ " was destroyed" );
- if (_desktop.isAlive())
- msg += " (but desktop is alive)" ;
- else
- msg += " because desktop was destroyed.\n"
- +"It is usually caused by invalidating the native session directly. "
- +"If it is required, please set Attributes.RENEW_NATIVE_SESSION first." ;
- log.warning(msg);
- }
- final ExecInfo execinf;
- ((ExecutionCtrl)_desktop.getExecution())
- .setExecutionInfo(execinf = new ExecInfo(_event));
- final String evtnm = _event.getName();
- for (Iterator it = _comp.getListenerIterator(evtnm); it.hasNext();) {
- //Note: CollectionsX.comodifiableIterator is used so OK to iterate
- final EventListener el = (EventListener)it.next();
- execinf.update(null , el, null );
- if (el instanceof Express) {
- el.onEvent(_event);
- if (!_event.isPropagatable())
- return ; //done
- }
- }
- if (page != null && _comp.getDesktop() != null ) {
- final ZScript zscript = ((ComponentCtrl)_comp).getEventHandler(evtnm);
- execinf.update(null , null , zscript);
- if (zscript != null ) {
- page.interpret(
- zscript.getLanguage(), zscript.getContent(page, _comp), scope);
- if (!_event.isPropagatable())
- return ; //done
- }
- }
- for (Iterator it = _comp.getListenerIterator(evtnm); it.hasNext();) {
- //Note: CollectionsX.comodifiableIterator is used so OK to iterate
- final EventListener el = (EventListener)it.next();
- execinf.update(null , el, null );
- if (!(el instanceof Express)) {
- el.onEvent(_event);
- if (!_event.isPropagatable())
- return ; //done
- }
- }
- final Method mtd =
- ComponentsCtrl.getEventMethod(_comp.getClass(), evtnm);
- if (mtd != null ) {
- // if (log.finerable()) log.finer("Method for event="+evtnm+" comp="+_comp+" method="+mtd);
- execinf.update(mtd, null , null );
- if (mtd.getParameterTypes().length == 0 )
- mtd.invoke(_comp, null );
- else
- mtd.invoke(_comp, new Object[] {_event});
- if (!_event.isPropagatable())
- return ; //done
- }
- if (page != null )
- for (Iterator it = page.getListenerIterator(evtnm); it.hasNext();) {
- //Note: CollectionsX.comodifiableIterator is used so OK to iterate
- final EventListener el = (EventListener)it.next();
- execinf.update(null , el, null );
- el.onEvent(_event);
- if (!_event.isPropagatable())
- return ; //done
- }
- }
发表评论
-
ZK PPT
2012-02-27 17:28 1200附件中为ZK系列的PPT -
zk+spring+hibernate延迟加载的解决办法
2012-02-24 14:22 1269由于Zk 的AU request,lazy load现在没 ... -
【zk开发】zk注解的秘密
2012-02-24 14:23 1589The DataBinder that reads ZUML ... -
【zk开发】zkstudio安装及使用视屏
2012-02-26 12:04 1238安装视屏 http://docs.zkoss.org/w ... -
zk主题生成器
2012-02-26 12:04 1615生成器在附件内,兼容zk3.x 与zk5.x,zktheme ... -
zk服务器端获取鼠标点击位置
2012-02-26 12:04 1393index.zul Xml代码 ... -
zk Fiddle-zk在线测试保存代码分享平台
2012-02-23 08:20 1467http://zkfiddle.org/ 是zk项目组之一 ... -
zksample2-一个复杂应用的zk示例
2012-02-23 08:19 1481Zks ample2 is a demo applica ... -
zk5.0.8发布
2012-02-23 08:18 954该版本是一个维护版本,主要于bug修复及引入几个新特性 ... -
zk数据绑定
2012-02-23 08:17 1795简介 : 关于数据绑 ... -
zk EE/PE/CE的区别
2012-02-18 09:32 3101自从zk5.0以后,zk拆分为 ... -
ZK 5.0.8 新特性
2012-02-18 09:32 18918月16日,zk官网:zk5.0.8将要发布 zk5. ... -
zk client与server code结合提高长操作的响应性
2012-02-18 09:32 1430一,关于长操作与响应性 zk client与serve ... -
zk tooltiptext中换行
2012-02-17 11:37 1535Xml代码 <window ti ... -
zk下载文件中文乱码解决方案
2012-02-17 11:37 3668本文来自http://sun4love.iteye.com/b ... -
【zk视频】如何了解一个组件默认支持服务器端事件
2012-02-17 11:37 1306如何了解一个组件默认支持服务器端事件? 知识点:在z ... -
【zk视频】如何查看zk源码,了解zk原理
2012-02-17 11:37 1646当org.zkoss.zul.Window关闭时,zk是如 ... -
ZK 5.0.7发布,及新特性
2012-02-15 09:10 1149ZK 是一套以 AJAX/XUL/Java 为基础的网页应用 ... -
use【组件公共属性】
2012-02-15 09:09 1084语法 apply="a-class- ... -
zk异步请求异常,自定义错误页面的bug
2012-02-15 09:09 1126zk版本5.0.6 现在遇到一个问题,觉得是bug, ...
相关推荐
ZK不仅仅是一款简单的框架,它还包含了AJAX事件驱动引擎、一套丰富的界面组件以及ZK用户界面开发语言(ZUML),这些特性共同构成了ZK的核心竞争力。 **传统Web应用程序** - 传统Web应用程序通常采用表单提交的方式...
- **事件监听器的调用顺序**:描述了事件处理的顺序。 - **中断事件处理序列**:介绍了如何提前结束事件处理流程。 - **从事件监听器发送、发布和回显事件**:阐述了不同类型的事件传递方式。 - **发布事件(Post ...
ZK-bin包文件是ZooKeeper的可执行文件集合,包含了运行ZooKeeper服务所需的所有必要组件。在Eclipse环境中部署ZK-bin包,可以方便地进行开发和测试工作。 首先,了解ZooKeeper的核心概念: 1. **节点(Znode)**:...
【标题】"dubbo基础使用 包含zk 1.8可用dubbo"涉及的核心技术是Dubbo和ZooKeeper,这两个组件在分布式系统中扮演着重要的角色。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,而ZooKeeper则是一个...
它使用Zookeeper生成workId,workId是基于ZooKeeper的顺序Id来生成的,每个应用在使用Leaf-snowflake时,启动时都会在Zookeeper中生成一个顺序Id,相当于一台机器对应一个顺序节点,也就是一个workId。 生成的id...
ZooKeeper支持原子的顺序创建节点操作,可以用来生成全局唯一的顺序ID,这对于数据库的主键生成、事件追踪等场景非常有用。 7. 分布式队列 通过ZooKeeper,可以实现同步队列,如FIFO队列,确保消息的顺序处理。 ...
本压缩包中的"互联网架构 SOA(Dubbo)+配置中心(ZK)+消息中间件MQ(RocketMq)+高-Foundation"提供了一个基于SOA的解决方案,结合了阿里巴巴的Dubbo服务框架、Zookeeper配置中心以及RocketMQ消息中间件。这些组件...
3. **Zookeeper节点类型**:在Zookeeper中,节点分为持久节点(Persistent)、持久顺序节点(Persistent Sequential)、临时节点(Ephemeral)和临时顺序节点(Ephemeral Sequential)。在服务注册中,通常使用临时...
2. 客户端调用 createNode 方法在 locker 下创建临时顺序节点,然后调用 exists 方法来检查是否已经存在该节点,如果存在则表示已经有人持有该锁,否则自己创建该节点并持有该锁。 ZooKeeper 的设计理念: 1. 高...
2. **顺序一致性**:全局有序,所有客户端对同一节点的更新操作会按照其发起的顺序完成。 3. **单一视图**:无论客户端连接到哪个Zookeeper服务器,看到的数据都是一致的。 4. **实时性**:在一定时间范围内,...
18. zk 节点宕机如何处理?Zookeeper 集群通过选举机制,当 Leader 节点宕机时,会自动选举新的 Leader,保证服务的连续性。 19. zookeeper 负载均衡和 nginx 负载均衡区别Zookeeper 提供的是分布式协调服务,可以...
6. 名字服务:Zookeeper可以作为分布式系统的命名服务,为分布式组件提供全局唯一的ID分配,方便组件间的相互引用和查找。 7. 分布式协调:在分布式任务调度、分布式队列等场景下,Zookeeper可以作为协调者,处理...
5. **元数据交换**:服务的接口定义、版本信息等元数据可以通过Zookeeper进行交换,方便服务调用方了解服务详情。 安装Zookeeper-3.4.11步骤如下: 1. 解压`zookeeper-3.4.11.tar.gz`到指定目录。 2. 修改`conf/...
- 学习ZK配置、安装、启动和监控,以及解决常见问题。 2. **6.springboot集成rocketmq生产者.mp4**: - SpringBoot与RocketMQ的集成简化了开发流程,提供了便利的API和配置方式。 - 创建RocketMQ生产者实例,...
6. **分布式事件通知/协调**:通过ZooKeeper的Watch机制,可以实现实时的事件通知,当ZNode(ZooKeeper的数据节点)发生变化时,相关的客户端会收到通知,从而触发相应的处理逻辑。 ZooKeeper的架构由多个组件构成...
1. Dubbo:Dubbo是阿里巴巴的分布式服务框架,它使用Zookeeper作为注册中心,实现服务的发布、发现和调用。 2. Hadoop:Hadoop的HDFS和YARN组件利用Zookeeper进行元数据管理和集群状态监控。 3. Kafka:Kafka使用...
ZooKeeper通过提供一致性服务来简化分布式程序的开发,例如提供顺序访问、选举和锁定等。它采用树形的数据结构存储数据,每个节点(称为znode)都可以存储数据,且具有版本号,可以跟踪数据的变化。 在Windows环境...
3. 顺序一致性:对于同一客户端的更新操作,Zookeeper保证了它们的顺序执行,即使这些操作是在不同的服务器上完成的。 4. 可靠性:一旦一个更新操作被应用,除非显式地删除,否则它会一直存在。 5. 实时性:...
1. **命名服务**: Zookeeper可以作为分布式应用的全局命名服务,为分布式组件提供唯一的ID。 2. **配置管理**: 应用可以通过Zookeeper集中管理和共享配置信息,减少因配置更改导致的复杂性。 3. **集群管理**: 它...