BEA WebLogic Server 是Sun Microsystems的Java EE 平台的领先实现然而WebLogic Server的核心价值主张则体现在Java EE规范没有覆盖的领域——增强的管理易用性高可用性可伸缩性可靠性和性能实际上WebLogic Server的价值不依赖于任何特定的编程模型所以它与新也自然适用于新出现的非Java EE的Java编程模型近年来出现的最令人激动的事物莫过于基于反向控制(IoC)的模型Spring Framework就是它的事实上的实现
文章结构
文章的前两节概述SpringWebLogic Server和它们各自的特性如果您熟悉Spring Framework那么可以跳过第一节如果您熟悉WebLogic Server那么可以跳过第二节本文主要目的是介绍这两种技术的集成所以本文后续的部分都是讲述这一主题的首先我们分析MedRec— WebLogic Server上的一个示例程序——分别以它的原始的Java EE形式和使用Spring Framework重构后的形式之后是关于特定的集成点的一些细节如果您打算在 WebLogic Server上开发Spring应用程序那么几乎可以肯定这些细节会对您有所帮助如果您只是想有个大致的概念可以先阅读标题内容留待以后再看最后我们展望了一些正在考虑中的未来开发工作
Spring简介
本节我们来简要地概述Spring Framework的特性包括版以来的一些新特性
Spring是基于Rod Johnson在 Expert OneonOne JEE Design and Development(Wrox )公布的代码的一个分层的Java/Java EE应用程序框架Spring的存在是因为我们相信Java EE应该更容易使用并且有可能创造更简单的Java EE开发方法而不会牺牲平台性能
Spring支持灵活的Java EE开发允许使用Plain Old Java Objects(一般称为 POJO)开发Java EE应用程序
改进的Spring开发体验
Spring在其核心部分提供了一个易于配置XML驱动的反向控制(IoC)容器IoC基于所谓的好莱坞原则不要打电话过来请等通知在这种模式中通过容器而不是直接编程将Java对象间的关系注入应用程序中有两种注入方式—构造函数注入和setter注入具体取决于容器是通过其构造函数还是mutator方法将信息注入已创建的Java对象
在Spring中注入的属性——或到其他bean的引用——是通过一个XML文件进行配置的这使得配置轻而易举它耦合了另外一个AOP框架允许非侵入性增加诸如事务处理和安全等属性这意味着开发人员可以专注于创建业务解决方案而不必忙于复杂的Java EE开发或配置由于容器是非侵入性的所以您不必担心业务代码会被特定于供应商(此处也包括Spring)的工件所污染
Spring应用程序组件
如上所述Spring提供了一个轻量级的容器用于提供集中式自动化的配置并连接应用程序对象它是非侵入性的能够以一致的和透明的方式通过IoC把一组松耦合的组件(POJO)组装成复杂的系统因为该容器允许首先独立地开发和测试各软件组件然后在任意环境中(Java SE或Java EE)中进行扩展部署所以它具有灵活性和高利用率并提高了应用程序的可测试性和可伸缩性此外Spring提供了许多其他对开发人员友好的特性下面我们一一列举
一个用于事务管理的通用抽象层支持可插入的事务管理器使事务划分更轻松同时无需处理底层的问题该层中还包括JTA策略和一个JDBC DataSource相比普通的JTA或EJB CMTSpring的事务支持不依赖于Java EE环境考虑到是一个十分灵活的非侵入性解决方案事务语义通过AOP应用于 POJO通过XML或Java SE 注释进行配置
一个JDBC抽象层提供了一个有意义的异常层次结构(不再从SQLException抽取供应商代码)简化了错误处理极大地减少了代码编写量无需为了再次使用JDBC编写另外的finally代码块面向JDBC的异常遵循Spring的一般DAO异常层次结构
与业界领先的对象——关系映射解决方案的集成在资源拥有者DAO实现支持和事务策略方面对大量IoC 便利特性的一流支持解决了许多典型的OR映射集成问题所有这些都遵循Spring的一般事务和DAO异常层次而且Spring 提供了与Java Persistence API (JPA)的完全集成
AOP功能性完全集成到Spring配置管理中您可以对Spring所管理的任何对象启用AOP增加了声明性事务管理等方面借助于Spring您能够拥有没有EJB的声明性事务管理——甚至也可以没有JTA
一个灵活的MVC Web应用程序框架构建在核心的Sping功能之上它是通过策略接口高度可配置的并且适用多种视图技术如JSPVelocityTilesiText和POI注意Spring中间层能容易地与基于任何其他Web MVC框架(如StrutsWebWork或Tapestry)的Web层组合
一个用户可扩展的配置层允许用户在vanilla Spring配置中加入自己定制的XML标签整个Spring 核心库已经广泛地使用这一功能提供增强的语法和通用Spring特性的可用性
异步编程抽象包括与JMS提供者的框架中立的事务集成的消息驱动POJO(MDP)与异步调度机制的集成如commonjJava SE并行程序和Quartz本地事件支持
所有的Spring功能都可以在任何Java EE服务器上使用大部分功能可以在非托管环境中使用Spring的一个重心是支持可重用业务和不依赖于特定的Java EE 服务的数据访问对象这些对象可以不费事地跨JEE环境(Web或EJB)独立应用程序和测试环境进行重用
Spring的分层架构提供了大量灵活性它的功能都构建在较低的层次上例如您可以在不使用MVC框架或没有AOP支持的情况下使用 JavaBean配置管理但是如果您要使用Web MVC框架或AOP支持您会发现它们构建在配置框架之上所以您可以马上用上有关它的知识
BEA WebLogic Server 简介
本节我们来简要概述BEA WebLogic Server的特性重点强调其提供的底层基础架构而不是编程模型
WebLogic Server是可伸缩的企业级Java EE应用服务器WebLogic Server基础架构支持各类分布式应用程序的部署是构建各种应用程序的理想基础
Sun Microsystem公司的 Java EE 规范 在WebLogic Server上的实现提供了标准的一组API用以创建能够访问多种服务(如数据库消息传递服务和外部企业系统连接)的分布式Java应用程序终端用户客户程序使用Web浏览器客户端或Java客户端访问这些应用程序由于Java EE是如此有名这里我们就不进一步讨论了参见关于 编程模型的 WebLogic Server文档可以获得更多信息
除了实现Java EE之外WebLogic Server还使企业能够在一个健壮的安全的高可用的可伸缩的环境中部署任务关键型应用程序这些特性允许企业配置WebLogic Server实例集群以分布负载并在发生硬件或其他故障时提供额外的容量新的诊断工具允许系统管理员监控和调优已部署的应用程序和 WebLogic Server环境本身的性能可以对WebLogic Server进行配置来自动监控和调整应用程序吞吐量无需人工干预广泛的安全特性保护了服务的访问保证了企业数据安全并阻止了恶意攻击