Dcm4chee学习笔记(二)--服务启动流程剖析
来源:互联网 发布:it狂人云盘 编辑:程序博客网 时间:2024/06/07 00:44
Dcm4Chee采用JBOSS作为JAVA EE容器, 所以在剖析Dcm4Chee服务启动流程前需要有对JBOSS的一个整体架构的了解,下图来自
JBOSS官网的关于JBOSS 5 AS的架构图,非常清晰,虽然Dcm4Chee2用的是JBOSS 4的版本,但基本架构应该不会差太多。
JAVA功底深的同学应该一看就懂,不懂JAVA的也没关系,把基本的名称概念稍微了解下就行,重要的是我们如何理解Dcm4Chee服务是怎么启动的。
首先最关键的是JBOSS JMX, (Java Management Extension), 这是JAVA平台的一个技术,具体是什么,有兴趣的可以看看Oracle的官网介绍
http://docs.oracle.com/javase/tutorial/jmx/index.html。
我用简单粗暴的思维理解就是一项专门管理managed beans的技术,managed beans (简称MBean)又是啥, beans我想大家都知道,反正JAVA技术里
左一个什么beans,右一个什么beans, 一个豆子绕来绕去把人绕晕。总之呢,你可以把它理解成一个符合JMX规范的一堆JAVA代码,由于符合规范,
所以可以被具有JMX功能的容器如JBOSS等进行管理,而且这种模块主要是用来管理各种资源的,比如服务、网络、磁盘IO啥啥啥的。
那么Dcm4Chee的DICOM服务就是用这种MBean实现的,那么它到底是怎么启动的呢? 翠花,上图
JBOSS 容器启动,调用DcmServerService的startService方法, DcmServerService就是一个符合MBean规范的Java类
关键服务实现是ServerImpl、DcmHandlerImpl, 这里Dcm4Chee采用了Leader /Follower 多线程设计模式,这个设计模式请参考
http://blog.csdn.net/goldlevi/article/details/7705180。
Leader线程会监听socket,如果有请求到后就调用promptNewLeader通知线程池(Thread Pool)赶紧派个线程当leader, 然后自己去
处理DICOM连接去了,如果处理完了,就join到线程池(Thread Pool)变成follower等着。
Dcm4Chee服务启动流程就简单剖析到这里,抛抛砖。。。呵呵
- Dcm4chee学习笔记(二)--服务启动流程剖析
- Dcm4chee学习笔记(三)--StoreSCP服务流程剖析
- Dcm4chee学习笔记(一)
- 学习笔记:内核启动流程
- Skynet服务器框架(二) C源码剖析启动流程
- Android启动流程(二):android服务启动
- Activity启动流程笔记(二)
- 《STL源码剖析》学习笔记(二)
- STL源码剖析学习笔记(二)
- H3流程开发笔记(二)启动一个新流程(上)
- H3流程开发笔记(二)启动一个新流程(下)
- 学习笔记(二)——单用户模式、救援模式、运行级别、启动流程、登录文件
- JMS学习二: 启动ActiveMQ 服务
- Nginx学习笔记(十三):Nginx启动流程
- Linux学习笔记------Linux启动流程
- mtk刷机/启动流程学习笔记
- mysql 源码学习笔记:mysqld启动流程
- 学习笔记之Centos6的启动流程。
- LeetCode22——Generate Parentheses(给定n对括号,然后看有多少正确的括号组合)
- 纯干货7 Domain Adaptation视频教程(附PPT)及经典论文分享
- spark thrift server kerberos 配置下show databases 报错
- 人脸对齐LBF(四)
- BFS算法入门
- Dcm4chee学习笔记(二)--服务启动流程剖析
- unity 项目开发时,音效的开启开关
- VS2013配置OPenGL的 方法以及超级宝典五中所使用的方案
- 堆和栈的区别
- 操作系统之进程切换
- Web前端-写给大家看的设计书-笔记-设计原则
- jQuery选择器
- struts拦截器使用
- 【NOI2017模拟6.22】没有上司的舞会