文档章节

EAServer 组件的生命周期

会哭的鳄鱼
 会哭的鳄鱼
发布于 2017/06/05 00:15
字数 892
阅读 18
收藏 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
155
0
[翻译]Android Architecture之处理生命周期

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

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

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

Parry
08/16
0
0
React源码解析(二):组件的类型与生命周期

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

ssssyoki
10/29
0
0
让react用起来更得心应手——(React 基础简析)

让react用起来更得心应手系列文章: 让react用起来更得心应手——(react基础简析) 让react用起来更得心应手——(react-router原理简析) 让react用起来更得心应手——(react-redux原理简...

梦想攻城狮
10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Python中调用Java扩展包HanLP测试记录

最近在研究中文分词及自然语言相关的内容,关注到JAVA环境下的HanLP,HanLP是一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义...

左手的倒影
7分钟前
0
0
使用python读取mysql数据库并进行数据的操作

(一)环境的配置 使用python调用mysql数据库要引进一些库。 目前我使用的python版本是python3.6。引进库为pymysql 其他对应的库可以有以下选择: mysqldb,oursql, PyMySQL, myconnpy 等,参...

dragon_tech
12分钟前
0
0
基于阿里云物联网平台实现的简易出入监控

本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入...

阿里云官方博客
19分钟前
1
0
基于阿里云物联网平台,我们这样实现简易出入监控

本文通过一个简单实例,主要介绍了如何使用树莓派快速接入阿里云iot platform,并实现了一个简易的监控人员出入并拍照上送钉钉群的场景 场景 在公司大门入口处布点树莓派和红外感应,实现出入...

阿里云云栖社区
24分钟前
2
0
fedora linux for 龙芯查看实时输出的tomcat日志

软件源带的tomcat版本较低,所以建议从官网下载最新版本。 解压后,执行./startup.sh文件。 查看实时输出的tomcat日志,请使用命令tail -f /usr/share/tomcat/logs/catalina.out。 “/usr/sh...

gugudu
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部