作者:江南白衣,原文地址:http://blog.csdn.net/calvinxiu/archive/2007/04/28/1588852.aspx,版权所有,转载请保留
假如冬夜,一个旅人,要开发一个美好的Java后台服务器。
所谓美好,就是要高性能,千万级的用户;高可靠性,failover虽死犹生;高扩展性,跟周围那帮Tuxedo,IBM MQ,WebService的邻居要好好打交道。这是个毫无个性,几乎每次都一样的需求。
Java的开源世界为那些心里不安的设计师们,准备了MINA、CXF、Mule和JBoss/Geronimo。
1、MINA
一个优秀的NIO框架。ACE式的NIO和线程模型,filter chains机制,IO层与protocol层的分离,设计师们可以依赖着开发高性能的自定义协议TCP/IP服务器。
其他框架:Grizzly,脱胎于Glassfish的NIO框架,性能好像比MINA还好一点。
2、CXF
前身就是XFire,一个完整的Web Service Framework:
- HTTP, JMS, and Jabber 的Transports
- SOAP, REST and Corba的Binding
- JAXB 2.0、 XML Beans、Castor and JiBX的DataBinding
- Support JAX-WS2.0、CORBA,SCA与JBI
可以部署在:
- Standalone java server
- Tomcat or Spring-based 的轻量级容器
- Weblogic、WebSphere、JBoss的J2EE容器
- ServiceMix,OpenESB的JBI容器
- Tuscany的SCA容器
设计师们可以学习它眼花缭乱的机制,从一个Stand alone,ad Hoc协议的服务器,开始支持更多更公共的endpoint,也把自己作为一个Module,部署到更大更稳健的服务器之中。
3、Mule
作为Enterprise Service Bus (ESB) and Messaging broker,能力就夸张了:
-
可插入的连接方式 such as WebService,JMS , VM (embedded), JDBC, TCP, UDP, multicast, http, servlet, SMTP, POP3, file, XMPP.
- 同步,异步,request-response的请求模式。
- Client/Server, Peer-to-Peer, ESB的拓扑模式。
- 大量的Routing,Transform选择
-
Enterprise Integration Patterns的遵循者。
-
SEDA processing model的高性能模式。
-
Spring,BPM的整合。
面对这样一个诱人的ESB方案,看起来比前面的CXF模式更加合适,那如何应用?和业界一样的踌躇。
4、JBoss/ Geronimo
地球人都知道这是两个应用服务器,特别在于,它们都有某种良好的插件机制,将EJB Container,Servlet Container,JMS 模块作为Module部署到服务器中,成为服务器的一种能力。
JBoss的每个Service就是一个MBean,配合一个service描述文件。Geronimo更是著名的以GBean作为底层架构,跑马圈地的把开源社区的方案集合在repository目录中,玩票式的组成了一个通过J2EE 1.4认证的应用服务器。
我们自写的服务,可不可以也通过相同的机制,嵌入到JBoss/Geronimo之中,从而直接拥有了应用服务器的其他一切能力,就像把Tomcat建于JBoss MicroKernel之上,拥有JBossJTA,JBoss Cache能力的JBoss Web? Labourey说:“Microkernel 是JBoss 的心脏。现在有许多电讯公司使用Microkernel ,用作其服务器应用软件的基础”看来自己并没有发明创造:(
其他服务器:Glassfish
5.世界的其他角落
-
TuscanySCA 的开源实现,IBM与BEA联手贡献。
-
EsperEvent-Driven Application Servers。
-
GridGain开源网格计算平台,集成Spring,JBoss。
6.小结
MINA提供了工具,Mule/JBoss/Geronimo提供了容器, CXF/Mule提供了模式,而这些都还仅是Java开源社区的冰山一角,回望那个只有ICE和ACE/TAO的孤寂世界.......
二、开动:
1、入门文档
2、阅读代码
阅读只是为了发掘文档里没有描述的架构与模式,而其实很多模式在代码里都很显眼,来来去去就那几道斧子,所以有了快速略读的可能,而不是Apache源码阅读式的愚公移山,精卫填海。
设计美好的服务器系列文章:
分享到:
相关推荐
mina-core-2.0.0-M1.jar/mina-example-1.0.5.jar/slf4j-jdk14-1.6.1.jar/slf4j-log4j12-1.6.1.jar mina 所用jar
mina-webpack Mina单文件组件符合Webpack开始使用我们建议您开始使用 : npm i -g saosao mina my-appcd my-appnpm start 并查看如何与一起使用包含包装 mina-entry-webpack-plugin wxs加载器 手动安装npm i --save-...
深入理解Apache_Mina_(1)----_Mina的几个类深入理解Apache_Mina_(1)----_Mina的几个类深入理解Apache_Mina_(1)----_Mina的几个类
mina-core-2.0.0-M6.jar mina-example-2.0.0-M6.jar mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-...
深入理解Apache_Mina_(5)----_配置Mina的线程模型[归类].pdf
1.1.jar,log4j-1.2.14.jar,mina-core-2.0.7.jar,mssqlserver2.jar,msv-core-2011.1.jar,neethi-3.0.2.jar,oauth-20100527.jar,oauth-provider-20100527.jar,opensaml-2.5.1-1.jar,openws-1.4.2-1.jar,...
个人学习EJB-JSF-JPA-MINA 时用到的入门资料~ 适合初学者。 希望能帮到正在学习EJB、SF、JPA、MINA的初学者们。
apache MinaMina apache MinaMina apache MinaMina apache MinaMinaapache MinaMina apache MinaMina apache MinaMina apache MinaMina apache MinaMina
1:Spring-mybaits-mina三大框架的整合,mina可以使用Spring的数据库数据库连接池,无需额外定义mybaits连接池。 2:mina可以自定义监听一个或者多个端口,可以从数据库中读取
Spring-mybaits-mina三大框架的整合,mina可以使用Spring的数据库数据库连接池,无需额外定义mybaits连接池。
使用-Apache-MINA-2-开发网络应用
您可以定义一个以更改代理服务器的行为。 GRAPHQL_HOST主机,graphql在其中启动,默认为localhost GRAPHQL_PORT -graphql开始的端口,默认为3085 GRAPHQL_PATH -graphql服务的路径,默认为graphql GRAPHQL_PROXY_...
mina server开发服务端/客户端代码,供大家一起共同分享学习。
mina服务器--实现纯文本和非纯文本的加密通讯
NULL 博文链接:https://chinaestone.iteye.com/blog/435929
深入理解Apache_Mina_(1)----_Mina的几个类 深入理解Apache_Mina_(2)----_与IoFilter相关的几个类 深入理解Apache_Mina_(3)----_与IoHandler相关的几个类 深入理解Apache_Mina_(4)----_IoFilter和IoHandler的区别和...
Netty、Mina、Cindy都是不错的NIO开源框架,后两者都是在Netty的基础上演化出来的。所以要学习好Java的异步通信框架,这三个都是不可多得的好材料。 本资源仅供学习和参考使用,若要进行开发,请下载相应的Jar包
mina2.0全部jar包,包含log4j-1.2.17以及slf4j-log4j12-1.7.6
基于Apache MINA进行封装,实现Android APP作为服务器、客户端进行通讯