【eNet硅谷动力专稿】对于使用开源软件的企业用户来说,相信每个人心中都会有自己的TOP10,尤其是那些开源软件拥趸者眼中的TOP10,可能会与我所列的TOP10有些不同。不过,这是经过全球很多开源社区高手共同讨论的结果,我觉得这个版本的TOP10是我所能做到的最公正、最准确的了。当然如果你不同意这样的TOP10,没关系,尽管保留你心中的TOP10。
1. HTTP服务器Apach
Apache,一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性(注1)被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,Perl/Python等解释器可被编译到服务器中。 Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。相传阿帕奇是一个武士,他英勇善战,且战无不胜,被印第安人奉为勇敢和胜利的代表,因此后人便用他的名字为印第安部落命名,而阿帕奇族在印第安史上也以强悍著称。
Apach发展历史
提到Apach服务器,就不得不提到Apache软件基金会。Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为运作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,这个开源软件项目就是 Apache 项目。这个组织把自己作为有着相同目标的开发者与用户的团体,而不是简单的共享在一个服务器上的一组项目的组织团体。在它所支持的 Apache 项目与子项目中,所发行的软件产品都遵循 Apache许可证(Apache License)。
Apache软件基金会(ASF)正式创建于1999年,它的创建者是一个自称为“Apache 组织”的群体。这个“Apache 组织”在1999年以前就已经存在很长时间了,这个组织的开发者爱好们聚集在一起,在美国伊利诺斯大学超级计算机应用程序国家中心(National Center for Supercomputing Applications,简称为NCSA)开发的 NCSA HTTPd 服务器的基础上开发与维护了一个叫 Apache 的 HTTP服务器。
最初 NCSA HTTPd 服务器是由 Rob McCool 开发出来的,但是它的最初开发者们逐渐对这个软件失去了兴趣,并转移到了其他地方,造成了没有人来对这个服务器软件提供更多的技术支持。因为这个服务器的功能又如此强大,而代码可以自由下载修改与发布,当时这个服务器软件的一些爱好者与用户开始自发起来,互相交流并分发自己修正后的软件版本,并不断改善其功能。为了更好进行沟通,Brian Behlendorf 自己建立了一个邮件列表,把它作为这个群体(或者社区)交流技术、维护软件的一个媒介,把代码重写与维护的工作有效组织起来。这些开发者们逐渐地把他们这个群体称为“Apache 组织”,把这个经过不断修正并改善的服务器软件命名为 Apache 服务器(Apache Server)。由此看来,Apache的诞生极富有戏剧性。
这个命名是根据北美当地的一支印第安部落而来,这支部落以高超的军事素养和超人的忍耐力著称,19世纪后半期对侵占他们领土的入侵者进行了反抗。为了对这支印第安部落表示敬仰之意,取该部落名称(Apache)作为服务器名。但一提到这个命名,这里还有流传着一段有意思的故事。因为这个服务器是在 NCSA HTTPd 服务器的基础之上,通过众人努力,不断地修正、打补丁(Patchy)的产物,被戏称为“A Patchy Server”(一个补丁服务器)。在这里,因为“Patchy”与“Apache”是谐音,故最后正式命名为“Apache Server”。
自由软件开发Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
开始,Apache只是Netscape网页服务器(现在是Sun ONE)的之外的开放源代码选择。渐渐的,它开始在功能和速度。超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器: 1999年5月它在 57% 的网页服务器上运行;到了2005年7月这个比例上升到了69%。在2005年11月的时候达到接近70%的市占率,不过随着拥有大量域名数量的主机域名商转换为微软IIS平台,Apache市占率近年来呈现些微下滑。而Google自己的网页服务器平台GWS推出后,加上Lighttpd这个轻量化网页服务器软件使用的网站慢慢增加,反应在整体网页服务器市占率上,根据netcraft在2007年7月的最新统计数据,Apache的市占率已经降为52.65%,8月时又滑落到50.92%。尽管如此,它仍旧是现阶段因特网市场上,市占率最高的网页服务器软件。Apache web服务器软件主要特点:
◆支持最新的HTTP/1.1通信协议。Apache是最先使用HTTP/1.1协议的Web服务器之一,它完全兼容HTTP/1.1协议并与HTTP/1.0协议向后兼容。Apache已为新协议所提供的全部内容做好了必要的准备。
◆拥有简单而强有力的基于文件的配置过程。
◆支持通用网关CGI接口。Apache用mod_cgi模块来支持CGI,它遵守CGI/1.1标准并且提供了扩充的特征,如定制环境变量和很难在其他Web服务器中找到的调试支持功能。
◆支持基于IP和基于域名的虚拟主机。
◆支持多种方式的HTTP认证。
◆集成Perl处理模块。Perl已成为CGI脚本编程的基本标准。Apache肯定是使Perl成为这样流行的CGI编程语言的因素之一,现在Apache比以往任何时候都更加支持Perl,通过使用它的mod_perl模块你可以将基于Perl的CGI脚本装入内存,并可以根据需要多次重复使用该脚本。这消除了经常与解释性语言联系在一起的启动开销。
◆集成代理服务器Proxy服务器。Apache可作为前向代理服务器也可作为后向代理服务器。
◆支持实时监视服务器状态和定制服务器日志。Apache在记录日志和监视服务器本身状态方面向你提供了很大的灵活性,可以通过Web浏览器来监视服务器的状态,也可根据自己的需要来定制日志。
◆支持服务器端包含指令(SSI)。Apache提供扩展的服务器包含命令该项功能,为Web站点开发人员提供了更大的灵活性。
◆支持安全Socket层(SSL)。
◆提供用户会话过程的跟踪。通过使用HTTP cookies,一个称为mod_usertrack的Apache模块可以在用户浏览Apache Web站点时对用户进行跟踪。
◆支持FastCGI。Apache使用mod_fcgi模块来实现FastCGI环境,并使FastCGI应用程序运行得更快。
◆通过第三方模块可以支持Java Servlets。Apache的mod_jserv模块支持Java Servlets该项功能,可使Apache运行服务器的Java应用程序。
◆如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
◆可以运行在所有计算机平台上。
◆支持虚拟主机。即通过在一个机器上使用不同的主机名来提供多个HTTP服务。Apache支持包括基于IP、名字和Port三种类型的虚拟主机服务。
◆支持HTTP认证。Apache支持基于Web的基本认证,它还为支持基于消息摘要的认证做好了准备。Apache通过使用标准的口令文件DBM SQL调用,或通过对外部认证程序的调用来实现基本的认证。
◆支持用户Web目录。Apache允许主机上的用户使用特定的目录存放用户自己的主页。可以通过如下URL地址来访问。
◆支持动态共享对象。Apache的模块可在运行时动态加载,这意味着这些模块可以被装入服务器进程空间,从而减少系统的内存开销。
◆支持多进程。当负载增加时,服务器会快速生成子进程来处理,从而提高系统的响应能力。
Apache服务器的工作原理
Web系统是客户端/服务器式的,所以应该有服务器程序和客户端程序两部分。常用的服务器程序是Apache;常用的客户端程序是浏览器(如IE、Netscape、Mozilla)。我们可以在浏览器的地址栏内输入统一资源定位地址(URL)来访问Web页面。Web最基本的概念是超文本(Hypertext)。它使得文本不再是传统的书页式文本,而是可以在阅读过程中从一个页面位置跳转到另一个页面位置。用来书写Web页面的语言称为超文本标记语言,即HTML。WWW服务遵从HTTP协议,默认的TCP/IP端口是80,客户端与服务器的通信过程简述如下:
1)客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。
2)Web服务器收到请求后,将客户端要求的页面内容返回到客户端。如果出现错误,那么返回错误代码。
3)断开与远端Web服务器的连接。Apache服务器面临的安全问题
为了保护Web服务器不被恶意攻击和破坏,第一步就是要了解和识别它所面临的安全风险。以前,Web站点仅仅提供静态的页面,因此安全风险很少。恶意破坏者进入这类Web站点的唯一方法是获得非法的访问权限。
近年来,大部分Web服务器不再提供静态的HTML页面,它们提供动态的内容,许多Web站点与颇有价值的客户服务或电子商务活动应用结合在一起(这也是风险所在,通常不注意的)。
1)HTTP拒绝服务
攻击者通过某些手段使服务器拒绝对HTTP应答。这使得Apache对系统资源(CPU时间和内存)需求剧增,最终造成系统变慢甚至完全瘫痪。Apache服务器最大的缺点是,它的普及性使它成为众矢之的。Apache服务器无时无刻不受到DoS攻击的威胁。主要包括以下几种形式。
- 数据包洪水攻击。一种中断服务器或本地网络的方法是数据包洪水攻击,它通常使用Internet控制报文协议(ICMP)包或是UDP包。在最简单的形式下,这些攻击都是使服务器或网络的负载过重,这意味着黑客的网络速度必须比目标的网络速度要快。使用UDP包的优势是不会有任何包返回到黑客的计算机。而使用ICMP包的优势是黑客能让攻击更加富于变化,发送有缺陷的包会搞乱并锁住受害者的网络。目前流行的趋势是黑客欺骗目标服务器,让其相信正在受到来自自身的洪水攻击。
- 磁盘攻击。这是一种更残忍的攻击,它不仅仅影响目标计算机的通信,还破坏其硬件。伪造的用户请求利用写命令攻击目标计算机的硬盘,让其超过极限,并强制关闭。这不仅仅是破坏,受害者会遭遇不幸,因为信息会暂时不可达,甚至丢失。
- 路由不可达。通常,DoS攻击集中在路由器上,攻击者首先获得控制权并操纵目标机器。当攻击者能够更改路由器的路由表条目的时候,会导致整个网络不可达。这种攻击是非常阴险的,因为它开始出现的时候往往令人莫名其妙。毕竟,你的服务器会很快失效,而且当整个网络不可达,还是有很多原因需要详审的。
- 分布式拒绝服务攻击。最有威胁的攻击是分布式拒绝服务攻击(DDoS)。当很多堡垒主机被感染,并一起向你的服务器发起拒绝服务攻击的时候,你将伤痕累累。繁殖性攻击是最恶劣的,因为攻击程序会不通过人工干涉蔓延。Apache服务器特别容易受攻击,无论是对分布式拒绝服务攻击还是隐藏来源的攻击。为什么呢?因为Apache服务器无处不在。在万维网上分布着无数的Apache服务器,因此为Apache定制的病毒(特别是SSL蠕虫)潜伏在许多主机上;带宽如今已经非常充裕,因此有很多的空间可供黑客操纵。蠕虫攻击利用服务器代码的漏洞,通过SSL握手将自己安装在Apache服务器上。黑客利用缓冲溢出将一个伪造的密钥安装在服务器上(适用于运行低于0.9.6e版本的OpenSSL的服务器)。攻击者能够在被感染的主机上执行恶意代码,在许多这样的病毒作用下,下一步就是对特定的目标发动一场浩大的分布式拒绝服务攻击了。通过将这样的蠕虫散播到大量的主机上,大规模的点对点攻击得以进行,对目标计算机或者网络带来不可挽回的损失。
2)缓冲区溢出
攻击者利用CGI程序编写的一些缺陷使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如,一些Perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令。
3)攻击者获得root权限
如果Apache以root权限运行,系统上一些程序的逻辑缺陷或缓冲区溢出的漏洞,会让攻击者很容易在本地获得Linux服务器上管理员root权限。在一些远程的情况下,攻击者会利用一些以root身份执行的有缺陷的系统守护进程来取得root权限,或利用有缺陷的服务进程漏洞来取得普通用户权限,用以远程登录服务器,进而控制整个系统。
如何配置一个安全的Apache服务器
1)勤打补丁。使用最高和最新的安全版本对于加强Apache Web服务器的安全是至关重要的。将你的OpenSSL升级到0.9.6e或者更高版本,伪造的密钥将起不了任何作用,也不能渗透到系统里。
2)隐藏和伪装Apache的版本。通常,软件的漏洞信息和特定版本是相关的,因此,版本号对黑客来说是最有价值的。默认情况下,系统会把Apache版本模块都显示出来(http返回头)。所以,安装完Apache服务器之后,最好隐藏和伪装Apache的版本号。
3)建立一个安全的目录结构。
4)为Apache使用专门的用户和用户组。按照最小特权原则,给Apache分配一个合适的权限,让其能够完成Web服务。最小特权原则是系统安全中最基本的原则之一,它限制了使用者对系统及数据进行存取所需要的最小权限,既保证了用户能够完成所操作的任务,同时也确保非法用户或异常操作所造成的损失最小。 必须保证Apache使用一个专门的用户和用户组,不要使用系统预定义的账号,比如nobody用户和nogroup用户组。
5) Web目录的访问策略。对于可以访问的Web目录,要使用相对保守的途径进行访问,不要让用户查看任何目录索引列表。
- 禁止使用目录索引;
- 禁止默认访问;
- 禁止用户重载。6)Apache服务器访问控制方法
7)管理Apache服务器访问日志
- 相关配置文件说明。
- Web服务器日志轮循。Web服务器日志轮循比较好的方式有三种:第一种方法是利用Linux系统自身的日志文件轮循机制logrotate;第二种方法是利用Apache自带的日志轮循程序rotatelogs;第三种是使用在Apache的FAQ中发展已经比较成熟的日志轮循工具cronolog。对于大型的Web服务器来说,往往使用负载均衡技术提高Web站点的服务能力,这样后台有多个服务器提供Web服务,大大方便了服务的分布规划和扩展。如果有多个服务器,需要对日志进行合并,统一进行统计分析。因此为了保证统计的精确性,需要严格按照每天的时段来自动生成日志。
- 使用php MyVisites分析Apache日志
8)Apache服务器的密码保护 。.htaccess文件是Apache服务器上的一个设置文件。它是一个文本文件,可以使用任何文本编辑器进行编写。.htaccess文件提供了针对目录改变配置的方法,即通过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变首页的文件名(如index.html)、禁止读取文件名、重新导向文件、加上MIME类别、禁止列目录下的文件等。注意,.htaccess是一个完整的文件名,不是***.htaccess或其他格式(当然也有管理员把其设置成其他名字,但一般都是使用.htaccess)。另外,上传.htaccess文件时,必须使用ASCII模式,并使用chmod命令改变权限为644(RW__R__R__)。每一个放置.htaccess的目录和其子目录都会被.htaccess影响。例如,在/abc/目录下放置了一个. htaccess文件,那么/abc/和/abc/def/内所有的文件都会被它影响,但/index.html不会被它影响,这一点是很重要的。
9)减少CGI和SSI风险。CGI脚本的漏洞已经成为Web服务器的首要安全隐患,通常是程序编写CGI脚本中产生了许多漏洞。控制CGI脚本的漏洞除了在编写时需要注意对输入数据的合法性检查、对系统调用的谨慎使用等因素外,首先使用CGI程序所有者的UID来运行这些程序。这些CGI程序即使存在某些漏洞,那么其危害也仅限于该UID所能够访问的文件。也就是说,这样只能伤害用户的文件,而不会对整个系统带来致命的影响。通过安装和使用suEXEC的应用程序,可以为Apache服务器提供CGI程序的控制支持(从Apache l.3版以后,suEXEC已经作为Apache服务器的一部分),可以把suEXEC看作一个包装器,在Apache接到对CGI程序的调用请求后,它将这个调用请求交给suEXEC来负责完成具体的调用,并且从suEXEC获得返回的结果。
10)让Apache服务器在“监牢”中运行。所谓的“监牢”是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使被破坏或侵入,所受的损伤也不大
11)使用SSL加固Apache。使用具有SSL功能的Web服务器,可以提高网站的安全性能。SSL协议工作在Linux TCP/IP协议和HTTP协议之间,SSL使用加密方法来保护Web服务器和浏览器之间的信息流。SSL不仅用于加密在互联网上传递的数据流,而且还提供双方身份验证。这样就可以安全地在线购物而不必担心别人窃取信用卡的信息。这种特性使得SSL适用于那些交换重要信息的地方,像电子商务和基于Web的邮件。
12)Apache服务器防范DoS。Apache服务器对拒绝服务攻击的防范主要通过软件Apache DoS Evasive Maneuvers Module 来实现。它是一款mod_access的替代软件,可以对抗DoS攻击。该软件可以快速拒绝来自相同地址对同一URL的重复请求,通过查询内部一张各子进程的哈希表来实现。同时可以使用Linux系统强大的命令手段防范Dos攻击。
13)利用LDAP对Apache进行认证。
14)其他安全工具。使用tcp_wrappers和AIDE可以为系统提供额外的保护。使用tcp_wrappers可以进一部控制访问权限。AIDE是一个数据完整性检测工具,可以帮助系统管理员监视系统是否被改动过,你可以在AIDE的配置文件中编制特定的策略,监视Web服务器的配置文件、数据和CGI文件是否被修改。另外Selinux也可以保护Apache服务器。如果对目录服务比较熟悉,还可以使用LDAP服务器对Apache服务器进行访问认证。2.开源应用服务器JBoss
JBoss简介
近年来,在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。JBOSS是一个安装简单,包含Web服务器(servlet/JSP容器,HTML服务器)、EJB2.0/EJB3.0容器、Java消息服务等等功能的应用服务器,但是它的面向方面设计(AOP)是它真正突出的部分。JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布, 你可以在任何商业应用中免费使用它,而不用支付费用,这使得JBoss广为流行。JBoss是一个运行EJB的J2EE应用服务器,例如:数据库访问JDBC、交易(JTA/JTS)、消息机制(JTS)、命名机制(JNDI)和管理支持(JMX)。它是开放源代码的项目,遵循最新的J2EE规范。目前的JBoss发布版2.2.4实现了EJB 1.1和部分EJB 2.0以及EJB3.0标准、JMS 1.0.1、Servlet 2.2、JSP 1.1、JMX 1.0、JNDI 1.0、JDBC 1.2和2.0扩充(支持连接池 (Connection Polling))、JavaMail/JAF、JTA 1.0和JAAS1.0标准,JBoss是100%纯Java实现能运行于任何平台。
从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors' Choice 2002评选中获得“最佳Java应用服务器”大奖。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。
JBoss的发展历史
为满足企业级市场日益增长的需求,JBoss公司从2003年开始就推出了24*7、专业级产品支持服务。同时,为拓展JBoss的企业级市场, JBoss公司还签订了许多渠道合作伙伴。在2004年6月,JBoss公司宣布,JBoss应用服务器通过了Sun公司的J2EE认证。 这是JBoss应用服务器发展史上至今为止最重要的里程碑。与此同时,JBoss一直在紧跟最新的J2EE规范, 而且在某些技术领域引领J2EE规范的开发。因此,无论在商业领域,还是在开源社区, JBoss成为了第一个通过J2EE 1.4认证的主流应用服务器。现在,JBoss应用服务器已经真正发展成具有企业强度(即,支持关键级任务的应用)的应用服务器。
JBoss 4.0作为J2EE认证的重要成果之一,已经于2004年9月顺利发布了。同时,JBoss 4.0还提供了JBoss AOP(Aspect-Oriented Programming,面向方面编程)组件。近来,AOP吸引了大量开发者的关注。它提供的新的编程模式使得用户能够将方面(比如,事务)从底层业务逻辑中分离出来,从而能够缩短软件开发周期。用户能够单独使用JBoss AOP,即能够在JBoss应用服务器外部使用它。或者,用户也可以在应用服务器环境中使用它。JBoss AOP 1.0已经在2004年10月发布了。
展望下一代JBoss应用服务器,其重点关注的是EJB 3.0。当前,J2EE 1.4规范使用了EJB 2.1。其中,EJB 3.0的主要目标是简化EJB模型,即用户能够更容易开发EJB组件,并且能够在EJB容器外部测试EJB组件。EJB 3.0规范草案已经于2004年6月推出。JBoss公司一直在积极参与EJB 3.0规范的制定,并且在为EJB规范的发展贡献自己的力量。其中,Gavin King(Hibernate的创立者)和Bill Burke(JBoss公司的首席架构师)已经为EJB 3.0规范草案贡献了很多内容。
JBoss公司于2004年10月初发布了基于JBoss应用服务器实现的EJB 3.0预览版。尽管EJB 3.0规范草案还处于初期发展和评审阶段,但这为J2EE社区测试EJB 3.0、并提供反馈信息提供了很好的机会。这也证实了JBoss是一家创新型公司。JBoss一直在引领技术规范的发展。
近年来,Hibernate已经成为了事实上的持久化引擎。JBoss公司致力于将自身发展成为开源项目的社区,最新版的JBoss应用服务器已经将Hibernate集成为JMXMBean服务。这使得用户能够在应用服务器环境中直接使用Hibernate,而不管它是否处于J2EE上下文中。
在最新版的JBoss应用服务器中,用户能够直接通过JMXMBean服务访问到JBossCache提供的服务。下一代的JBoss应用服务器(暂定名为,JBoss5.0)将提供大量的新功能。除了支持最新的EJB 3.0规范外,新版的JBoss AOP将同它正式发布。同时,JBoss开发团队还计划开发新的微内核层,即独立于JMX,使得它能够独立使用。
从2003年开始,JBoss启动了JBossCache项目。JBossCache是基于内存的、可复制的、事务性的缓存系统,并且具有持久化状态存储管理能力。最近,它受到极大的关注。用户能够在JBoss应用服务器或其他应用服务器中,或单独使用JBossCache。同时,它提供的基于JBoss AOP的AOP模块能够在可复制环境中实现细粒度、域级别复制,而且能够透明地管理复杂对象。在最新版的JBoss应用服务器中,用户能够直接通过JMX MBean服务访问到JBossCache提供的服务。
2008年初,下一代的JBoss应用服务器的测试版本发布(暂定名为,JBoss 5.0),它提供了大量的新功能。除了支持最新的EJB 3.0规范外,新版的JBoss AOP将同它正式发布。同时,JBoss开发团队还计划开发新的微内核层,即独立于JMX,使得它能够独立使用。Web Services 方面,JBoss 现在支持全部的J2EE Web Services,同时兼容Microsoft.NET;Messaging 项目采用了完整的JMS 1.1 实现,同时充分的改进了分布式目的单元格等功能的高可用性JBoss Seam 中包括了一系列统一的革命性的组建设计模型和框架。同时新版JBoss 中也集成了Hibernate 3.2。JBoss的优点
1)JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。
2)JBoss需要的内存和硬盘空间比较小。
3)安装非常简单。先解压缩JBoss打包文件再配置一些环境变量就可以了。
4)JBoss具有统一的类装载器,能够"热部署",部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下就可以了。如果没有加载就加载它;如果已经加载了就自动更新。
5)JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
6)用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
7)Jboss支持集群。
8)将具有革命性的JMX微内核服务作为其总线结构。
9)JBoss本身就符合面向服务的架构,它是高度模块化的和松耦合的。
10)支持完整的纯Java的数据库引擎,(Java消息服务)JMS,JavaMail,和Java事务处理API/Java事务处理服务(JTA/JTS)支持。
JBoss服务器架构
JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的。JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。
JBoss主要模块
主要的JBoss模块是在MeanServer上的可管理MBean。
1)JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB 对象的Stub和Skeleton类,第二是支持热部署。
2)JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范。
3)JBossTX 是由JTA/JTS支持的交易管理控制。
4)部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。
5)JBossMQ使Java 消息规范(JMS)的实现。
6)JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。
7)JBossCX实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。
8)Web服务器支持Web容器和Servlet引擎。JBoss 2.4.x版本支持Tomcat 4.0.1,Tomcat 3.23和Jetty 3.x服务.
JBoss架构设计中的两个重要的特性
1)使用JMX作为一个软件总线垂直的贯穿其所有的服务,通过将新的服务组件遵循JMX规范挂接上"总线",使得系统扩展现有的服务变得容易。可插入式框架被广泛的运用于服务的实现。开发者可以选择他们需要的服务并编写他们所需要的相应实现,通过定义在部署描述文件中,让JBoss服务器知道。
2)容器被设计成为动态代理机制,这样使容器的实现变得简单和使开发者避免费劲的将jar文件进行预编译以获得stub和skeleton代码。但是这样做潜在的问题是性能和可测性,因为我们知道java反射机制会引起性能的损失。JBoss中存在着相应的优化方案并且在将来的研究中我们会论述该优化方法在什么时候工作并且是如何工作的。
3. Web内容管理系统Hyperoffice
微软Exchange产品的确是一个功能相当强大的产品,不过昂贵的价格也使很多企业用户望而却步。为了能找到一个可以真正与Exchange相匹敌的替代品,我研究了很多的协作工具,最后,终于找到了Hyperoffice。Hyperoffice能提供很多实用和协作功能,比如基于Web的电子邮件、共享协作日历,甚至还具备微软Outlook同步功能,而更重要的一点是Hyperoffice总体拥有成本非常低。因此Hyperoffice受到了很多企业用户的青睐。
HyperOffice的成功源于它的基于Web的设计模式。由于不需要下载、安装和维护软件---只要有一个Web浏览器就可以了,这使得Hyperoffice给IT部门节省了一笔数额惊人的IT预算。Hyperoffice还内置了一个PIM (个人信息管理器),能够方便快捷地管理你的个人信息。可以说,Hyperoffice几乎可以满足你的任何需求,甚至在动态的企业环境下也是如此,所以Hyperoffice是微软Exchange的一个完美替代者。