文档章节

EAServer 组件的生命周期

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:15
字数 892
阅读 16
收藏 0

开发三层分布是应用,我们必须要了解组件的生命周期。

首先,当客户端连接上eas,并创建完组件实例的时候,eas并没有真正创建该组件的实例。客户端执行createinstance方法,eas仅仅是对用户指定的组件进行验证,看是否是有效的组件,并能在当前授权下有效创建,也即是说,客户端执行完createinstance后,eas并没有真正在内存中创建这个组件的实例。

当客户端开始调用组件第一个函数的时候,eas要做如下工作:

1,看指定的组件缓存池中是否有缓存的实例,如果没有将创建该组件的实例,并触发组件的构造事件。

2,一旦组件创建或则有可用的组件实例,则eas将把该组件实例和客户端线程邦定,并触发组件的activate事件。

3,执行客户端调用的函数。

4,如果是有状态组件,则函数执行完后,直接返回结果到客户端,并保留该组件和客户端线程的绑定,直到客户端调用setcomplete()和setabort()或则组件函数结尾处调用setcomplete()和setabort()。

5,当组件事务被提交或会滚后,将导致对数据的操作的提交和会滚。完成组件的客户端会话。

6,将组件和客户端线程解除绑定,并触发组件的deactivate事件。

7,判断当前组件属性中是否支持缓存池,如果不支持,或则当前缓存池已经超过了设置的最大缓存个数,默认不限制个数。则eas将会触发组件的析构事件,并将组件从内存中销毁。

8,如果组件可以缓存,将组件放入到缓存池中供下次调用

一旦客户端创建完组件并调用完函数,只要客户端不断开连接,则,客户端可以继续调用组件的函数,这就是eas的按需连接的功能。这个功能将大大节省服务器的资源消耗。

前面提到了客户端线程的概念,这里有必要特别说明一下。

当客户端执行连接到客户端,并通过授权认证后,eas将会自动创建一个服务器端线程来和该客户端进行通信,这个线程就是客户端线程(好像有点拗口哟!),在pb9,以及以后的版本中,默认是不要绑定客户端线程的,也就是说一旦完成一次函数的调用,组件和客户端线程解除绑定后,这个线程将进入到eas的线程池,共其他客户端使用。这样无形之中就提高了服务器的效能。因为在操作系统的线程资源也是有限的。尤其是windows,给每个进程分配的可用线程都是有限制的。

但在pb8的时候,因为pb8虚拟机的局限性,你必须要选择绑定线程,而绑定线程的结果,就是,就算客户端完成了一次函数调用,并把组件和线程解除绑定,则该线程也不会被其他客户端使用,直到该客户端断开连接,则该线程将被eas销毁掉。这是很浪费系统资源的。但pb8的组件,必须要选择绑定线程,切记!

© 著作权归作者所有

共有 人打赏支持
会哭的鳄鱼
粉丝 7
博文 56
码字总数 59004
作品 0
郑州
技术主管
J2EE应用服务器 兼容性实现(摘自Sun,只帖1.4和java ee5了)

Java EE 5 Compatible Implementations Sun Java System Application Server Platform Edition 9 TmaxSoft JEUS 6 1.4 Compatible Implementations Apache Geronimo 1.0-M5 BEA BEA WebLogic......

晨曦之光
2012/04/12
145
0
[翻译]Android Architecture之处理生命周期

原文地址:https://developer.android.com/topic/libraries/architecture/lifecycle.html 使用Lifecycle-Aware库来解决生命周期问题。 生命周期感知组件会对于另一个组件(如Activity和Fragm...

尺锤
2017/11/20
0
0
React源码解析(二):组件的类型与生命周期

在上一篇文章《React源码解析(一):组件的实现与挂载》中,我们阐述了React组件的实现和挂载。现在我们来一起探究组件的生命周期。 我们已经知道,只有在挂载流程开始后,才会触发组件的生命周...

ssssyoki
2017/11/06
0
0
《React Native 精解与实战》书籍连载「React Native 中的生命周期」

此文是我的出版书籍《React Native 精解与实战》连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理、React Native 组件布局、组件与 API 的介绍与代码实战,以及 ...

Parry
08/16
0
0
React Native生命周期

初学RN,找了好久找到了挺齐全的生命周期介绍,来个转载,方便查阅~~ React Native 中组件的生命周期 概述 就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lif...

不爱吃鱼的喵
2016/02/01
123
1

没有更多内容

加载失败,请刷新页面

加载更多

可爱的python测试开发库(python测试开发工具库汇总)

欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 相关书籍下载 测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装。 链接 selenium - web UI自动化测试。 链...

python测试开发人工智能安全
今天
2
0
Shiro | 实现权限验证完整版

写在前面的话 提及权限,就会想到安全,是一个十分棘手的话题。这里只是作为学校Shiro的一个记录,而不是,权限就应该这样设计之类的。 Shiro框架 1、Shiro是基于Apache开源的强大灵活的开源...

冯文议
今天
1
0
linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部