J2EE开发中Tomcat与WebLogic服务器的区别与联系详解
J2ee 开发主要是一种结构,其中浏览器和服务器进行交互。逻辑在后台进行处理,之后将结果传输回浏览器。由此可以看出,在这种架构中,服务器是非常重要的。

这几天接触到两种 Java 的 web 服务器。一种是做项目时使用的 Tomcat,另一种是在看视频过程中看到的 WebLogic Server(WLS)。它们都是 web 服务器,那么它们之间有哪些区别和联系呢?
(一)先简单介绍一下这两种服务器。
最新版本 WebLogic Server 9.0 是到目前为止发布的最为卓越的 BEA 应用服务器。BEA WebLogic 是用于进行开发工作的服务器,可用于集成、部署以及管理大型分布式的 Web 应用。它也能用于管理网络应用和数据库应用。它把 Java 的动态功能以及 Java Enterprise 标准的安全性引入到大型网络应用的开发等过程中。并且完全遵循 J2EE 1.4 规范。
Tomcat 服务器属于免费的开源类型。它是 Web 应用服务器。它是 Apache 软件基金会 Jakarta 项目里的核心项目。由 Apache、Sun 以及其他一些公司和个人一同开发完成。Tomcat 技术先进,性能稳定,运行时占用系统资源小,扩展性良好,还支持负载平衡与邮件服务等开发应用系统常用的功能。并且很重要的一点是它免费,所以深受 Java 爱好者的喜爱,也得到了部分软件开发商的认可,进而成为目前比较流行的 Web 应用服务器。它是开源的,所以一直在不断改进和完善。任何一个对它感兴趣的程序员都能够更改它,也能够在其中加入新的功能。
(二)相同点:
WebLogic 和 Tomcat 都借助于 java 的基础架构以满足实时处理的需求,不同版本与 jdk 版本的兼容性存在差异;由于都需要与前台进行交互,所以它们都依据 sun 公司的 servlet 来实现。
(三)不同点:
功能性:
WebLogic 具有强大的功能。它是 j2ee 的应用服务器,涵盖了 ejb、jsp、servlet、jms 等多种技术,是全能型的。在商业软件的容器领域中排名第一,可提供 JSP、servlet、EJB 等服务,并且还提供其他如 JAVA 编辑等工具,是一个综合性的开发及运行环境。
WebLogic 应当是 J2EE Container ,它包含 Web Container 、EJB Container 以及遵循 XXX 规范 。
Tomcat 仅能被视为 Web Container ,它是官方所指定的 JSP 和 Servlet 容器。仅仅实现了 JSP 和 Servlet 的相关规范,对于 EJB 是不支持的(这可真是个硬伤啊)!然而,Tomcat 与 jboss 和 apache 配合使用的话,能够实现 j2ee 应用服务器的功能。
通常来讲,考虑 stucts 等架构时,使用 tomcat 就可以了。然而,要是考虑 EJB 的话,那么 WebLogic 是较为不错的选择。
扩展性:
使用 WebLogic 来运行标准的 Java 或许不是最佳方式。WebLogic 内部支持它自身的一些东西,这些东西是基于纯 Java 开发的,然而在其他工具中却不存在。WebLogic Server 凭借其卓越的群集技术,具备处理关键 Web 应用系统问题所需要的性能、可扩展性和高可用性。
WebLogic Server 实现了网页群集,同时也实现了 EJB 组件群集,并且无需任何专门的硬件或操作系统来提供支持。网页群集能够实现透明的复制,还能实现负载平衡,以及具备表示内容容错的功能。
网页群集很重要,组件群集也很重要,它们对于电子商务解决方案所要求的可扩展性和可用性都有着关键作用。共享的客户机/服务器以及数据库连接能增强性能表现,数据缓存和 EJB 也能提升性能表现。这些是其他 Web 应用系统所不具备的。
WebLogic 在扩展性方面表现出色,它比 Tomcat 强很多,在扩展性这一点上,WebLogic 远远地超越了 Tomcat。
费用上:
Tomcat开源免费。
WebLogic不开源不免费。
总之,WLS 在功能强大方面比 Tomcat 好很多,WLS 在扩展性方面比 Tomcat 好很多,WLS 在可用性方面比 Tomcat 好很多。但这不能说明 WLS 适合每一个方面。从 Tomcat 的使用流行度可以看出,Tomcat 虽然功能有限,然而它也很受欢迎。其实关键在于你要做什么。Tomcat 是一种免费开源的软件。它是 jsp 和 servlet 的引擎,属于入门级别的 Web 服务器。刚入门的 IT 人士使用 Tomcat 会觉得简单易上手。它还是一个轻量级的应用服务器。最重要的是它是免费的。因此,在中小型系统以及并发访问用户不是很多的场合中,它被广泛使用。它是开发和调试 JSP 程序的首选。并且 Tomcat 比较轻巧,消耗的资源较少。当项目规模较大时,WLS 无疑是最为合适的选择,同时 Tomcat 难以满足过多的需求。然而,WLS 的费用也不容小觑。
总之,关键看你做什么,权衡利弊做选择。
此外,存在其他的 J2EE 应用服务器。比如 IBM 的 websphere ,Sun 的 Glassfish 以及 resin 等。Apache 是全球应用最为广泛的 http 服务器,并且是免费的。JBoss 同样是开源且免费的。在国内厂商生产的应用服务器中,还有像东方通的 Tongweb 以及金蝶 Apusic 应用服务器等。都是应用比较广泛的。
附:
到底什么是EJB?
Java 企业 bean 被称作服务器端组件,其核心应用是部署分布式应用程序。通过它部署的系统不受平台限制。实际上,ejb 是一种产品,它描述了应用组件需解决的标准。
标准:
可扩展 (Scalable)
分布式 (Distributed)
事务处理(Transactional)
数据存储(Persistent)
安全性 (Secure)
通俗来讲,EJB 指的是:把编写软件中那些需要执行特定任务的类,不再放置在客户端软件上,而是将其打包放到一个服务器上。确实如此,EJB 就是把那些“类”放到服务器上,通过 C/S 形式的软件客户端来对服务器上的“类”进行调用。
Java体系结构如图:
EJB 容器中存在三种类型,它们也被称作组件。其中一种是会话 Bean,另一种是实体 Bean,还有一种是消息驱动 Bean。
Session bean(逻辑)
EntityBean(数据)
messageDrivenbean(消息)
上图中可以看到
1 组件是在容器中的。容器提供了组件的环境并对其进行管理。
被称为 ejb 客户端的是调用组件的。客户端能够在 web 容器中运行,像 jsp、servlet、jndi、web service 等。
实现逻辑
逻辑组件中存在着多种实现抽象的方式。通过这种方式,借助客户端的调用,实现了对业务的封装。
实现分布式
首先要认识到 RMI 技术(远程调用)。EJB 的基础是 RMI。通过 RMI,J2EE 能够将 EJB 组件创建为远程对象。EJB 用到了 RMI,但只需要定义远程接口,无需实现。这样就把 RMI 技术细节屏蔽了。
将需要特定执行的类放置在 Ejb 中,然后将其打包发送到服务器上。客户端借助 RMI 技术前往服务器进行调用,通过这种方式实现了分布式调用。
所谓的服务器群
已经知道 RMI 是把各种任务与功能的类放在不同服务器上,接着通过各服务器间建立的调用规则来实现分布式运算,所以也就明白 EJB“服务群集”的概念了。其意思是把原本在一个计算机上运算的几个类,分别放到其他计算机上去运行,这样就能分担运行这些类所需要占用的 CPU 和内存资源。同时,能够把不同的软件功能模块放置在不同的服务器上。要是需要对某些功能进行修改,只需直接修改这些服务器上的类就可以了。修改完成后,所有客户端的软件都会被修改。
一个简单的分布式群图
小结:
EJB 的实现原理为:将原本在客户端实现的代码放置到服务器端,并且通过 RMI 来实现通信。
服务器集群是通过 RMI 进行通信,将不同功能模块的服务器连接起来,从而实现一个完整的功能。
EJB 规范规定了 EJB 组件在特定时间以特定方式与它们的容器进行交互。容器承担着提供公共服务的职责,像目录服务、事务管理、安全性、资源缓冲池以及容错性等方面。然而需要注意的是,EJB 并非是实现 J2EE 的唯一方式。