BEA WebLogic研究与应用开发
作者:马 强(dev2dev ID: wangzi163)
摘要:
BEA WebLogic Server是BEA Web应用服务器的旗舰产品,是用于集成、开发、部署和管理大型分布式Web应用、网络数据库应用的Java应用服务器。它将Java的动态功能和Java Enterprise标准的高效性和安全性引入大型Web应用的集成和开发之中,代表了新一代Web应用服务器的发展方向。BEA WebLogic Server 是第一个提供 EJB 组件、Java 消息传递和事件服务、微软 COM 集成以及零管理客户机的 Web 应用服务器。
EJB 在 Web Logic Server中的成功应用,使得对象技术、构件技术、快速应用开发等实现了一次飞跃。 EJB 计算技术使得复杂的多层结构应用系统开发变得容易。EJB 技术建立在已取得极大成功的 Java 语言之上,采用EJB技术能有效地进行软件复用、提高开发人员的效率、降低软件的开发和维护成本、提高软件的质量、控制所构建系统的复杂性。种种迹象表明,EJB 有可能成为多层结构分布式应用系统的服务器端构件模型的首要选择。
本文介绍了EJB 在WebLogic应用服务器中的部署和分发的方法,以及如何调用部署在服务器中的 EJB。并说明了在 Web Logic 上 EJB 的设计方法和注意事项。
关键词:应用服务器;Web; Java; J2EE; BEA; WebLogic中间件; EJB
1 基于Java的Web应用服务器的产生背景
1.1 传统的Web服务器模式
作为电子商务网站三层架构中第二层的应用服务器,其性能决定了网站实际工作时的吞吐率和响应效率。第一代的电子商务普遍采用C/S模式的Web服务器,并提供CGI程序作为应用服务器。这种模式在有大量数据请求时会严重影响系统性能。此后,一些Web服务器厂商改变了第一代电子商务的CGI模型,于是,第二代电子商务框架诞生了。每个Web服务器给程序者提供一套API作为统一的用户接口,这就避免了第一代服务器性能上的缺陷。但在这种模式中,因为Web服务器只理解它自己的API,因此造成应用服务器与数据库服务器坚固地捆绑在一起。这样开发出的程序通用性差,基本上大多数部件不能跨平台重用。
1.2 第三代基于Java的企业级应用服务器
由于第一代和第二代电子商务解决方案的能力都不足,Sun立刻改变了Java语言的策略,并为在服务器上使用Java语言发布了一个新的框架,这意味着Java语言成为了实现下一代应用服务器的核心语言。新标准J2EE,它提供了一套企业级Web服务:
* 动态HTML:JavaServlet和JSP
* 数据库结合:Java数据库互连JDBC
* 可重用事务部件:企业级JavaBeans(EJB)及Java事务服务(JTS)
* 分布式对象:远程方法调用(RMI)
* 代理/迁移部件:分布式JavaBeans
* 命名/目录结合:Java命名和目录接口(JNDI)
J2EE标准的颁布,使Java彻底摆脱了编写“小玩意”的印象,一跃成为企业级应用开发的利器,并引发了基于编写可重用部件的新的程序设计方法。当电子商务网站从旧的Web应用服务器迁移到基于Java的应用服务器后,会发现无论从性能、可用性,还是开发效率上都有了质的飞跃。
2 新一代的Java应用服务器BEA WebLogic
2.1 BEA WebLogic应用服务器
BEA公司是世界最大的中间件生产厂家之一,它敏锐地意识到采用Java和中间件技术编写的应用服务器, 是解决和推动电子商务网站发展的关键所在。为此,BEA推出了纯Java的应用服务器BEA WebLogic,并很快成为第三代应用服务器中的佼佼者。BEA WebLogic全面支持J2EE标准,并提供快速高效的开发平台,能最有效地保护用户的投资。目前, BEA WebLogic的用户数量大增,包括《财富》500强公司中的绝大多数,国内的许多网站,如搜狐、中国电信等,都采用BEA WebLogic平台。
2.2 BEA WebLogic的技术优势
* 完全实现了J2EE应用程序接口,其中包括JDBC、EJB、RMI、事件管理和JNDI。
* 全面实现Enterprise JavaBeans技术规范,为Enterprise JavaBeans的创建和管理提供辅助工具,能够允许定制及现成的业务组件。
* 方便地与业界领先的数据库,以及与Microsoft Visual Basic, Visual C++, Active Server Pages和COM协同工作。
* 方便地与业界领先的开发工具协同工作,其中包括Visual Café, JBuiler, Superced, J++和Visual Age。
* 部署和管理应用,并确保可伸缩性、可用性和安全性。
* 支持绝大多数流行平台。
2.3 高度扩展性的实现策略
针对传统Web应用服务器无法及时响应大量客户请求的弊端,BEA WebLogic通过多层JDBC访问功能和共享JavaBeans技术实现服务器扩展,这是通过谨慎管理线程和共享数据库的连接实现的。
(1) 多层JDBC BEA WebLogic的多层JDBC功能使得Java应用能够从网络中的任何位置访问和更新数据库。采用BEA WebLogic,可使所有双向通信共享某一客户机/服务器连接,而不必考虑请求类型及被访问的远程对象的数目。
(2) 共享Java Beans BEA WebLogic允许, Java Beans“突然插入”应用服务器的事务中,且该Java Bean能够透明地被网络中多个应用共享,其中包括那些为大多数原有系统提供的Java客户联编应用。
(3) BEA WebLogic COMBEA WebLogic应用服务器还允许将任意Microsoft COM对象插入到BEA WebLogic框架之中, 使其自动被某一Java类别缠绕, 并在网络范围内被透明地共享。
2.4 负载均衡和容错技术的实现策略
BEA WebLogic提供基于软件的集群技术, WebLogic同时运行在一组独立的Server上, 构成Web Clusters, 保证应用的均衡负载及容错。
(1)动态JDBC池“集群”即在多台机器间复制应用表示层及商业逻辑的能力,使应用负载均衡地分布到多台机器上。BEA WebLogic采用动态JDBC池, 可以动态创建、删除、修改连接池与某台服务器之间的JDBC连接, 连接数根据需要动态变化。当一个新的数据库加入到用户的应用配置中,则创建一个新的数据库连接到JDBC池。这个连接池初始化时具有最小的连接数,并随着应用负载的增大而增大。当工作负载减少时,WebLogic将关闭一部分连接并缩减JDBC池的规模。
(2)容错技术正常情况下,Cluster中的每个Server会周期性的发送信号表明自己工作正常。一旦信号丢失,这台Server上的工作则通过改变动态JDBC池的映射,自动转移到其它Server上,不会造成用户应用的中断,真正做到了24×7小时的服务。
(3)BEA WebLogic提供多种负载均衡算法,包括:Round Robin, Random, SystemLoadSensitive, Weighted,另外也可以加入用户自定义的算法。
3 BEA WebLogic应用层开发
作为一个高效的Web应用服务器,不仅要有优秀的响应性能,更要提供完善而灵活的开发环境。互联网是由分布式的、松散藕合的计算机系统定义的,无论是客户投标还是开发小组之间的通信,都涉及到数据和事件在应用系统间的连续流动。要实现这种交换,系统需要在异步、异构资源间高度可靠地通信。BEA WebLogic提供基于Java Message Server(JMS)的强大的、灵活的、可被集群的消息处理平台,作为开发小组或企业消息处理的主干。其灵活性使开发人员能够处理发布/订阅或点对点的消息处理。WebLogic JMS还支持多址通信和绝大多数的传输协议,并可访问服务器上所有的EJB服务,通过EJB部件的重用,大大提高小组的开发效率。由于服务器上的每个EJB部件都可自动透明地使用JDBC驱动器来操纵数据库,开发人员可以将精力集中处理业务逻辑,而不必关心第三层数据库交换的细节,这正是开发三层C/S模式的程序员所梦想的。
BEA WebLogic作为应用服务层的核心,它与第三层数据库层的连接是通过Servlet或JSP来实现。从应用和数据的流向看,Servlet的作用是将Internet上的HTML格式的请求转交给EJB的Java应用并将Java应用的结果以HTML格式返回。Servlet作为连接Internet和应用服务器的一种技术,已成为趋势。WebLogic对Servlet的支持有如下一些特点:
* 纯Java支持;
* 支持标准Java Servlet API,同时可以加入WebLogic的服务,包括EJB, Beans, JDBC等;
* 允许在HTML中加入Java语言
这里,使用如下的基本开发模式:
①. 为前台浏览器提出的请求编写Servlet,将它作为浏览器和BEA WebLogic应用服务器之间最开始的联系,并从Web页获得参数。
②. 处理业务逻辑,隔离和定义EJB接口,包括一个主接口,它定义EJB的创建方法;一个远程接口,它定义EJB提供的业务服务。
③.创建可重用的EJB部件,运行于服务器端,实现业务逻辑。
④.从现在起,服务器上的EJB部件可以自由使用JDBC驱动器来访问数据库中的数据。
4 注意事项
* 开发中,当客户层、Web 层和EJB的组件写好后,应登记到weblogic.properties文件中,以便客户可访问,在JNDI命名目录树中也可以查询。应登记用户定义的对象(如EJB,Servlet)、环境(如 JDBC)、DataSource对象等。
* Web组件或EJB组件可以通过授权确保系统资源的受限访问。如将EJB, Servlet/JSP组件配置成让特定组的某些成员调用某些方法等。
* 事务是一系列步骤,要么全部完成,要么全部取消。Servlet/JSP没有被设计成事务,由EJB将来自多个应用组件的方法装配到一个事务中,这样应用逻辑不随装配而变化。
* 每个EJB最好只封装单个的业务逻辑,由调用者来组装成整个应用,以尽量避免业务处理的变化引起应用系统的变化。
5 总结
传统的C/S模式将应用逻辑和中间件混在一起,使应用的维护、移植和互操作性变得复杂无比。而Java应用服务器将企业的应用逻辑和中间件分开,采用Servlet和EJB重用技术,使Java应用的开发可以独立于底层的中间件。在电子商务应用日渐复杂的今天,响应性能的改善越来越多地依靠应用服务器性能的提高,而开发效率的提高则有赖于可重用部件的编写。采用基于BEA WebLogic的Java应用服务器,无疑是解决上述问题最佳途径。我们希望本文能帮助您理解新一代的互联网应用服务器技术,并特别向您推荐其内含的J2EE服务。
关于作者:
马 强,哈尔滨理工大学计算机系研究生
地址:黑龙江省大学生城28栋325室
邮编:150080