域含有BEA WebLogic Server实例的配置信息。它包含有关服务器、集群和机器的配置信息。域还含有关于资源,例如Java数据库连接(Java DataBase Connectivity,JDBC)、连接池、JDBC数据源、连接工厂和Java消息服务(Java Message Service,JMS)队列等的配置信息。此外,域还包含有关部署在该实例上的应用程序的配置信息。域配置信息保存在config.xml文件中。在本文中,我将评价WebLogic域配置的各种策略。
您可以直接操纵config.xml文件(例如,手动编辑该文件)。但是本文评价的大多数工具将间接操纵config.xml。大多数工具(例如,WebLogic Console)处理Java管理扩展(JMX) Management Bean(MBean)。WebLogic Server实例在config.xml文件中保存Mbean的状态。
域配置和JMX
config.xml文件含有关于WebLogic Server实例的持久性信息。当WebLogic Server 实例启动时,WebLogic Server读取config.xml文件并部署资源和应用程序。资源和应用程序具有相应的MBean。服务器通过这些Mbean接触配置信息。有许多不同类型的Mbean。在本文中,我主要讨论config.xml文件中与条目对应的Mbean。
如果在运行时更改了Mbean的属性值,新的值将被保存在config.xml文件中,使它成为持久的值。例如,如果在WebLogic Server Console中修改Mbean的属性值,该属性值也将保存在config.xml文件中。因而,在服务器重启期间,可以利用配置属性值,因为配置属性值持久地保存在config.xml文件中。
下节描述了域创建和配置的的各种方法,并将不同的可用选项分类。
众多的选项
幸运的是,可以使用很多不同的方法来创建和配置域。最常用的创建域的方法是使用Domain Configuration Wizard(域配置向导),而最常用的配置域的方法是使用WebLogic Console。还有许多其他可用的方法,包括:
下面是根据配置域所采用的技术将上述选项分类的一种方法:
将上述选项分类的另一种方法是根据它们是否随WebLogic平台一起发布:
还有一种将上述选项分类的方法是:根据服务器在线或者离线时,是否需要修改选项。当服务器的实例正在运行时,进行在线修改。由服务器在线修改JMX Mbean,并保存在config.xml文件中。当服务器正在运行时,建议不要直接修改config.xml文件。
为了举例说明域配置的各种策略,您将创建一个域,并修改它。
高级目标
使用不同的域创建和配置策略,您将实现下面的目标:请不要立即按照这些步骤做。稍后,我将要求您每次使用不同的策略创建和配置域:
对于每一种策略,某些步骤,例如域创建、数据库配置和验证配置都是通用的。下面几节介绍这些步骤。
域创建
利用Domain Configuration Wizard,按照下面这些步骤创建一个WebLogic Workshop域。请不要立即进行这些步骤。稍后,在我详细解释不同策略的时候,我会要求您执行这些步骤:
在您能够配置域之前,您需要配置数据库。数据库配置发生在创建域之后,配置域之前。
数据库配置
所有示例都使用PointBase作为数据库。启动WebLogic Server的实例(Workshop域的)也启动了PointBase。在PointBase的实例中,创建用户、模式(schema)和表。请不要立即进行这些步骤。稍后,在我详细解释不同策略的时候,我会要求您执行这些步骤:
一旦创建了域,就要配置数据库,并且要用资源和示例应用程序配置该域,需要验证设置过程。
验证域配置
要验证创建和配置的域是否正确,请运行简单的Junit测试程序。包含的源代码示例含有一个示例应用程序和一个运行Junit测试的Ant文件。复制sample-build.properties到build.properties中,编辑build.properties中的条目以适合您的环境。build.properties只需要创建一次。一旦您创建并配置了某个域之后,我会要求您调用下面的命令:
ant - v code fact.
如果测试程序成功运行,则应用程序部署正确、资源配置正确。如果有任何异常,并且测试失败,则应用程序或者资源没有配置或者部署不正确。仔细检查并分析栈跟踪情况,并进行问题调试。
一旦测试程序成功运行,就关闭WebLogic Server实例(例如,域目录/stopWebLogic.bat或者 sh)。总是利用脚本、而不是激烈的手段(如ctrl+c)来关闭WebLogic Server。
手动快速(Express )配置
利用域创建一节所述的步骤,用SEMDomain-Manual-Express作为配置名创建一个新域。启动WebLogic Server实例,利用数据库配置一节所述的步骤配置数据库。
在许多不同的项目中,我已经利用WebLogic Server Console成功地完成了多次手动配置。
更改日志记录级别
配置连接池
配置数据源
配置JMS连接工厂
配置JMS JDBC库
配置JMS服务器
配置JMS队列
现在,您已经完成对应用程序资源的配置。但在部署应用程序之前,您仍需要配置与workshop相关的资源。
配置与workshop相关的资源
现在您已经准备好部署应用程序了。
部署应用程序
一旦应用程序部署成功,就重启服务器。按照验证域配置一节所述运行测试程序。
也存在其他利用Domain Configuration Wizard的手动策略。一个选择是通过选择Custom选项(而不是Express)来创建和配置一个全新的域。当向导提示您创建资源,例如JDBC Connection Pools时,按照创建和部署资源的步骤执行。另一个选择是使用Domain Configuration Wizard配置一个已经创建的域。在Domain Configuration Wizard的第1步中,选择Extend an existing WebLogic configuration。创建上述域的过程留做一个练习。但是使用这些策略并不一定能够完成所有的配置,例如目的地的Redelivery属性的配置。
为了成功地使用手动策略,项目需要保存一个配置指南。该配置指南包含如上所述的逐步指令。但是,手动配置过程冗长乏味而且耗费时间。设置另一个域还需要额外的时间和精力,更重要的是,该过程还易于出错。微小的配置错误,例如,JNDI名称拼错,都会导致大量的故障排除和调试工作。
自动化创建和配置域选项应该是首选。Java是功能强大的语言,用Java可以直接操纵Mbean。但这种方法是低层次的方法。还有其他可供选择的方法,例如模板和脚本。在手动模板中,用标记将config.xml模板化。稍后再用实际值替代标记。手动模板方法要求非常深入、彻底地了解config.xml文件。在有些项目中,我曾使用过手动模板。Bedrock是基于Ant的、支持这样的模板的工具。但是,Bedrock看起来不能有效地维护。另一种重要的模板技术是使用域模板。这种技术不要求深入地了解config.xml。模板的创建通过配置模板构建工具得到了很好地支持。下一节讨论使用配置模板构建工具通过模板自动配置域的方法。
域模板
当您手动创建域时,您使用了workshop模板。但什么是模板呢?模板是含有配置信息的Java ARchive(JAR)文件,是config.xml文件的相关片断。有两种类型的模板:完全模板和扩展模板。使用完全模板,可以创建一个新的域。上面所用的workshop模板就是完全模板的一个示例。而使用扩展模板,可以扩展一个域。稍后使用的DefaultWebApp模板则是扩展模板的一个示例。
怎样创建一个模板呢?有一个称为配置模板生成器的特殊工具可以帮助完成,无论是完全模板还是扩展模板。创建模板的方法都有两种。第一种方法是:扩展某一扩展模板。第二种方法是:根据现有的域创建模板。下一节,您将根据现有的域创建一个完全模板。
完全模板
这一节,我将举例说明根据一个现有的、预先配置的并且工作的域来创建完全模板的方法。按照下述这些步骤创建一个完全模板:
现在,根据完全模板创建一个新域。按照下述这些步骤创建一个完全域:
基于完全模板的域创建
然而,启动此域中的WebLogic Server实例失败。加密的安全凭证冲突。如下手动修改config.xml文件:
修改config.xml
按照验证域配置一节所述的步骤验证该域是否工作正常。
另一种重要的模板策略是创建一个扩展模板,例如一个扩展DefaultWebApp模板、并配置所有必需资源的扩展模板。创建该扩展模板、创建一个域,并用扩展模板扩展该域留做练习。
结束语
手动编辑config.xml文件进行域配置是一种容易出错且危险的方法。而另一种极端的方法——通过编写Java代码来配置域则冗长乏味。常用的可供选择的方法包括使用WebLogic Console、Domain Configuration Wizard来配置域。然而,这两种可供选择的方法都是手动的,可能重复性强,并且耗费时间。在探索自动化解决方案时,我评估了模板方法。请留意我的下一篇文章,它将评价脚本策略。我希望本文能帮助您在选择使域配置自动化的工具和技术时能做到有备无患。
参考书目
· 要讨论本文或者询问问题,请从这里开始: www.bartssandbox.com。
关于作者
Prakash Malani在构建、设计和开发面向对象的软件方面有着丰富的经验,在许多应用领域开发过软件,例如娱乐、零售、医疗、通信以及交互式电视等。他实践并指导一些先进的技术,例如J2EE、UML和XML等。Prakash在各种业内领先的出版物上发表过各种文章。
原文出处
http://www.sys-con.com/story/?storyid=47096&DE=1