`
javatracker
  • 浏览: 25293 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

做一个自己的AppServer-JDStream(二) 选型

阅读更多
    JBoss4及其以前的版本主要是用JMX做为系统总线来管理插件,好处是显而易见的,可是随着IOC的发展,JMX作为容器插件也有很多不足,比如JMX作为容器过于复杂,与业务程序耦合过多,不够POJO,所以JBoss5有所改进,它用JBoss Microcontainer作为IOC插件容器,同时通过JMXKernel将JBoss4的内核连接进来,把本属于JMX管理的bean的生命周期委托给Microcontainer管理,但由于JBoss过于庞大,并没有从根本上解决问题,Microcontainer虽然从内在上管理了Bean的生命周期,但很多插件外壳还是由JMX来管理的,需要构建mbean,和Jboss过于耦合。
     所以JDStream采用IOC完全管理插件,但又不像Spring那样托管所有Bean,它只需要管理插件入口的Bean,方便拆卸同时又不会产生很多烦人的配置,另外还需要管理业务代码中的一些Bean。JMX作为插件和业务模块的配置和监控容器,尽量减少它的使用。
     由此IOC框架和JMX实现作为两个最基础的框架需要优先考虑,此次构建JDStream的最大目的在于磨练技术,不需要一切从头来,这两个框架都采用开源的,在需要的时候对他们进行扩展甚至修改。
     IOC框架可供选择的大概有下面几个:Spring、Jboss MicroContainer、PicoContainer和JFox。
     Spring过于庞大,更适合做外层框架,不太适合将它集成到别的程序里面;
     JBoss MicroContainer从使用上来说是个比较不错的IOC容器,轻量且有多级生命周期策略,控制比较细致,但作为单独的IOC容器,在06年的时候已经停止开发维护了,JBoss5嵌入的MicroContainer在原先的基础上有了很大的扩展,同时和JBoss5的程序耦合在了一起,很难分离出来,所以不太合适;
     JFox的IOC容器同样和框架耦合在了一起,同时也过于简单,用起来可能要做很多扩展;
     PicoContainer短小精悍,生命周期虽然只有start、stop和dispose,但基本够用,如真不够使用可随时扩展,最新的版本增加了monitor,可实现对bean的监控,唯一问题是它没有XML解析器;
     综上所述,决定采用PicoContainer作为IOC容器,XML解析器自己写。
     JMX实现比较了JBoss的实现、JFox实现和MX4J后决定用MX4J,这个主要是前两个很多实现是为自己的框架定做的,而MX4J作为一个独立的JMX实现比较符合需要。
     两个基础框架定下来后下面就是要集成的插件了:
     JNDI:自己实现,以便于集群;
     AOP:自己用动态代理和CGLib写个简单点的;
     数据源模块:自己封装JDBC,支持事务;
     socket:集成mina;
     JMS:用JCA集成Activemq,支持事务;
     Webservice:集成axis2或xfire,没想好呢;
     cache:集成memcached java客户端和BerkeleyDB java版;
     任务调度:集成quartz;
     rmi:修改公司的rmi异步调用框架,提供同步和异步RMI工厂,支持JRMP和IIOP;
     监控:集成telnet监控,通过telnet来和JDStream交互,了解服务器运行状况;
     httpServer:集成tomcat或jetty;
     camel:还没了解太清除,有可能的话也集成;
     集群:用JGroups,关联到JNDI、socket、JMS、webService、cache和rmi插件,也是个基础插件;
     线程池:鉴于业务模块的热部署,线程将被集中管理;
     业务模块部署器:实现业务模块的动态加载,Annotation解析;
     Annotation解析器:支持自定义Annotation。
     其它:有可能的话加上安全和事务方面的;
4
0
分享到:
评论
11 楼 javatracker 2008-12-31  
donnki 写道

我觉得写这个的唯一目的应该就是为了学习吧 既然是为了学习,尽量少用框架,多自己写。 不需要提供一个通用的服务器,也暂时不需要完整的实现,一步一步累加就好了吧? 用IOC都可以不考虑框架,自己写个简单的实现,就像用动态代理写AOP一样


是这样的,只所以用框架的目的是先从大的方面把他搭建起来,如果全部自己写太耗时间,搭起来后如果有必要在把内部框架自己来写。另外不准备遵循J2ee规范,太庞大,有些方面,比如Jndi只部分实现就行。
10 楼 javatracker 2008-12-31  
donnki 写道

XML 解析器自己写? 如果要写一个通用的XML解析组件估计工作量挺大啊~~如果不是通用的话要,解析的配置文件估计有很多。 对内存性能要求不高的话用apache的digester组件挺方便,Struts就是用这个来做解析器的,如果追求性能效率的话,stax应该是不错的选择。 Ioc也可以考虑下JavEE EJB3规范。上文提到的除了spring其它的IOC框架还没怎么接触过。



自己写的意思不是自己写底层,而是自己定义xml的格式,自己解析这些格式。框架还是用的,目前用的是dom4j,用的他的dom方式,sax就不必了,文件不大
9 楼 javatracker 2008-12-31  
donnki 写道

我还没来及看JBOSS源码呢,TOMCAT的就看过。 JBOSS是个完整实现JavaEE规范的东东,估计挺庞大。以前翻过一本《JBoss Administration and Development》,还没看完JBoss JMX Microkernel一章就被别的事情打断了。再加上工作没用JBOSS作服务器,所以暂时还不怎么熟。

JBoss源码我也没看多少,就看了看关键环节,还有很多我的打算是用到的时候在详细去看。《JBoss Administration and Development》我也是囫囵吞枣的看过。很多细节性的东西都没看太多,也钻不进去,所以才做这个,想在用到的时候详细研究。
8 楼 javatracker 2008-12-31  
donnki 写道

很有兴趣~~~ LZ需要打下手的不?

打下手不敢当,看了你的帖子感觉很多方面不如你,有兴趣的话聊聊一起做。
7 楼 donnki 2008-12-29  
我觉得写这个的唯一目的应该就是为了学习吧
既然是为了学习,尽量少用框架,多自己写。

不需要提供一个通用的服务器,也暂时不需要完整的实现,一步一步累加就好了吧?
用IOC都可以不考虑框架,自己写个简单的实现,就像用动态代理写AOP一样
6 楼 donnki 2008-12-29  
XML 解析器自己写?
如果要写一个通用的XML解析组件估计工作量挺大啊~~如果不是通用的话要,解析的配置文件估计有很多。
对内存性能要求不高的话用apache的digester组件挺方便,Struts就是用这个来做解析器的,如果追求性能效率的话,stax应该是不错的选择。

Ioc也可以考虑下JavEE EJB3规范。上文提到的除了spring其它的IOC框架还没怎么接触过。
5 楼 donnki 2008-12-29  
我还没来及看JBOSS源码呢,TOMCAT的就看过。
JBOSS是个完整实现JavaEE规范的东东,估计挺庞大。以前翻过一本《JBoss Administration and Development》,还没看完JBoss JMX Microkernel一章就被别的事情打断了。再加上工作没用JBOSS作服务器,所以暂时还不怎么熟。
4 楼 donnki 2008-12-29  
很有兴趣~~~
LZ需要打下手的不?
3 楼 javatracker 2008-12-21  
fondofbeyond 写道

保持关注中

感谢关注!
2 楼 javatracker 2008-12-20  
mineral 写道

IOC容器,有没有试过guice,这是一个非常轻量、非常强大的IOC container.
引用
其它:有可能的话加上安全和事务方面的; 这个feature倒是比其它的更重要,事务完整性和一致性、系统安全,在任何应用中,都是最重要的。 你的决心和勇气值得佩服。赞。


guice没试过,等下去看下,这个东西涉及的东西太多了,任何一个研究透彻就要花不少时间,我的计划是先做起来,不管用什么,后面东西一点一点的再添加完善,否则就成了纸上谈兵了。

事务和安全性确实是最重要的,但要整个要先把框架搭起来,数据走通了后再加上安全模块。事务模块准备在JDBC封装和数据调用的时候就做起来。
1 楼 mineral 2008-12-20  
IOC容器,有没有试过guice,这是一个非常轻量、非常强大的IOC container.

引用
其它:有可能的话加上安全和事务方面的;


这个feature倒是比其它的更重要,事务完整性和一致性、系统安全,在任何应用中,都是最重要的。

你的决心和勇气值得佩服。赞。

相关推荐

    PyPI 官网下载 | appserver-0.4.3.tar.gz

    总的来说,appserver-0.4.3是一个Python库,它可能是一个Web应用服务器,用于搭建和运行Python Web应用。通过PyPI和pip,我们可以方便地下载和安装这个库,进一步了解其功能和使用方法。在实际应用中,需关注兼容性...

    james-server-app-3.0.1-app

    "james-server-app-3.0.1-app"是一个专为邮件服务设计的应用程序,它基于James邮件服务器项目,提供高效、稳定且可定制的邮件解决方案。 James邮件服务器是一个开源、Java实现的邮件和消息服务器,其设计目标是为...

    appserver-win32-8.6.0

    appserver是一款PHP开发所必备的工具,它集成了PHP+MYSQL+apache三个开发工具,为您开发PHP水到渠成。

    PyPI 官网下载 | anvil-app-server-1.6.2.tar.gz

    资源来自pypi官网。 资源全名:anvil-app-server-1.6.2.tar.gz

    APP-IM后台选型

    APP-IM后台选型

    james-server-app-3.0.1

    本文将详细探讨"james-server-app-3.0.1"版本的启动问题及其解决方案,确保邮件服务能够稳定运行。 首先,我们需要理解James Server的核心功能和架构。James Server是一个基于Java构建的邮件和消息服务器,它提供了...

    luci-app-pptp-server_2.0-7_all.ipk

    网上收集来的,别问干什么用,我什么都不知道,给OPENWRT的GUI界面添加什么功能,配置某些功能方便点而已

    app自动化+Appium-Server-GUI-windows-1.22.2

    Appium-Server-GUI-windows-1.22.2,国内很难下载,固定5积分

    openwrt usb打印服务程序luci-app-usb-printer

    OPENWRT18.06网络打印机,usb打印服务安装,最新版本18.06.1软件源里只有luci-app-p910nd打印程序,不能很好兼容老打印机,没有luci-app-usb-printer.安装后,几台打印机全罢工,玩完了。只能重刷回旧版本。但心里不安心...

    luci-app-pptp-server_2.0-7_all1.zip

    给OPENWRT的GUI界面添加什么功能,配置某些功能方便点

    appserver-demo

    "appserver-demo"是一个以HCL(Human Capital Ltd.)技术为基础的应用服务器演示项目。这个项目主要用于展示如何在实际环境中部署和运行一个应用程序服务器,它可能是为了教学、测试或者演示目的而设计的。HCL是一家...

    aliyun-oss-appserver-js-master_DEMO_OSS_

    aliyun oss upload file/image demo

    appframework-1.0.3.jar

    appframework-1.0.3.jar appframework-1.0.3.jar appframework-1.0.3.jar appframework-1.0.3.jar

    Office Web App Server 2013

    Office Web App Server 2013 是 Microsoft Office 家族中的一个组件,旨在提供基于 Web 的 Office 应用程序服务。下面是 Office Web App Server 2013 安装配置的详细指南。 安装前的准备 在安装 Office Web App ...

    基于Java语言的App-Server-Core设计源码与Shell脚本兼容性优化

    该项目是一款基于Java语言的App-Server-Core设计源码,共计包含86个文件,其中包含69个Java源文件、13个XML配置文件、2个属性文件、1个Git忽略文件以及1个Shell脚本文件。该源码旨在优化与Shell脚本的兼容性,以实现...

    AppServer集成在线调试系统

    AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统AppServer集成在线调试系统...

    App server2.5.10php建立服务器

    标题 "App server 2.5.10 php建立服务器" 指的是使用AppServer来搭建一个基于PHP的Web服务器环境。AppServer是一款开源的、一体化的开发和运行平台,它集成了多种服务,包括Apache Web服务器、MySQL数据库以及PHP...

    scm-server-1.60-app.zip

    "scm-server-1.60-app.zip" 文件是一个压缩包,其中包含了Git Manager的特定版本,即1.60版的应用程序。这个压缩包很可能是包含了所有必要的文件和配置,以便用户可以下载后直接进行安装和运行。 Git,全名分布式...

    盟扩-ACPSample_AppServer

    盟扩-ACPSample_AppServer

    acris-server-appengine-1.1.2-sources.jar

    官方版本,亲测可用

Global site tag (gtag.js) - Google Analytics