域含有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。还有许多其他可用的方法,包括:
使用域配置向导
使用域配置模板
使用无声脚本
使用WLShell脚本
使用WLST脚本
直接使用Java编码和JMX应用程序编程接口(API)
使用记号替代法(例如,Bedrock)
使用weblogic管理员命令
使用wlconfig和wldeploy Ant任务
手动编辑config.xml文件
下面是根据配置域所采用的技术将上述选项分类的一种方法:
手动:WebLogic Console、Complete Domain Configuration Wizard
模板:自定义符号替代脚本(例如,使用Ant)、Bedrock、完全模板、扩展模板
脚本:无声、WLShell、WLST、Ant
使用Java编程
将上述选项分类的另一种方法是根据它们是否随WebLogic平台一起发布:
包括的(和支持的): WebLogic Console、完全Domain Configuration Wizard、完全模板、 扩展模板、无声脚本、Ant
其他的:WL Shell、WLST、自定义符号替代脚本、Bedrock
还有一种将上述选项分类的方法是:根据服务器在线或者离线时,是否需要修改选项。当服务器的实例正在运行时,进行在线修改。由服务器在线修改JMX Mbean,并保存在config.xml文件中。当服务器正在运行时,建议不要直接修改config.xml文件。
在线:WebLogic Console、ANT、WLST
离线:完全Domain Configuration Wizard、完全模板、扩展模板、无声脚本、WLShell、自定义符号替代脚本、Bedrock
为了举例说明域配置的各种策略,您将创建一个域,并修改它。
高级目标
使用不同的域创建和配置策略,您将实现下面的目标:请不要立即按照这些步骤做。稍后,我将要求您每次使用不同的策略创建和配置域:
创建 WebLogic Workshop 域
将服务器的调试级别变为信息级
改变服务器,使能够对标准输出(stdout)调试
配置一个名为semJDBCConnectionPool的JDBC连接池
配置一个名为jdbc/semJDBCDataSource的JDBC数据源,其JNDI名称为jdbc/semJDBCDataSource
配置一个名为semJMSConnectionFactory的JMS连接工厂
配置一个名为semJMSJDBCStore的JMSJDBCStore
配置一个名为semJMSServer的JMSServer
配置一个名为semJMSJDBCStore的semJMSServe仓库
配置一个名为PersonQueue的JMS队列,其JNDI名称为jms/PersonQueue
部署示例应用程序:SEMApp Enterprise ARchive(EAR)
测试应用程序,验证域配置
对于每一种策略,某些步骤,例如域创建、数据库配置和验证配置都是通用的。下面几节介绍这些步骤。
域创建
利用Domain Configuration Wizard,按照下面这些步骤创建一个WebLogic Workshop域。请不要立即进行这些步骤。稍后,在我详细解释不同策略的时候,我会要求您执行这些步骤:
启动Domain Configuration Wizard(例如,在Windows上, 选择 Start > All Programs > BEA WebLogic Platform > Configuration Wizard)
选择Create a new WebLogic Configuration,并点击Next
选择Basic WebLogic Workshop Domain,并点击Next
选择Express,并点击Next
指定User name为system
指定User password并将Confirm user password指定为password ,并点击Next
选择Development Mode,并点击Next
指定Configuration Name为某些有意义的名称,并点击Create
点击Done
在您能够配置域之前,您需要配置数据库。数据库配置发生在创建域之后,配置域之前。
数据库配置
所有示例都使用PointBase作为数据库。启动WebLogic Server的实例(Workshop域的)也启动了PointBase。在PointBase的实例中,创建用户、模式(schema)和表。请不要立即进行这些步骤。稍后,在我详细解释不同策略的时候,我会要求您执行这些步骤:
验证WebLogic Server的某个实例正在运行
启动PointBase 控制台(例如,在Windows 上,选择Start > All Programs > BEA WebLogic Platform > Examples > WebLogic Workshop > PointBase Console)
在Connect to the database对话框中,指定下述各项
验证数据库的URL是:jdbc:pointbase:server://localhost:9093/workshop
验证User是WebLogic
指定Password为WebLogic
创建一个新用户(例如,Ctrl+u),用户名是sem、密码也是sem
断开与数据库的连接(DBA菜单和Disconnect from Database)
使用sem作为User、sem作为Password连接到数据库(DBA菜单和Connect to Database或者F3)
创建一种模式(例如,Ctrl + h),并命名为sem
复制和粘贴db/sem.sql 的内容到Enter SQL Commands窗口中
选择Execute All toolbar条目
验证sem模式已用表生产
一旦创建了域,就要配置数据库,并且要用资源和示例应用程序配置该域,需要验证设置过程。
验证域配置
要验证创建和配置的域是否正确,请运行简单的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成功地完成了多次手动配置。
更改日志记录级别
确定WebLogic Server正在运行
启动WebLogic Server Console(例如:http://localhost:7001/console)
登录到控制台
选择Servers / cgServer
选择Logging选项卡
复选Debug to Stdout复选框
从下拉列表中,选择Stdout Severity Threshold为Info
选择Apply
配置连接池
确定WebLogic Server正在运行
启动WebLogic Server 控制台(例如:http://localhost:7001/console)
登录到控制台
选择Services/JDBC/Connection Pools
选择Configure a new JDBC Connection Pool
从Database Type下拉列表中选择PointBase
从Database Driver中,选择PointBase's Driver (Type 4) Versions: 4.X
选择Continue
指定Name为semJDBCConnectionPool
指定Database Name为workshop
指定Host Name为localhost
指定Port为9093
指定Database User Name为sem
指定Password为sem
指定Confirm Password为sem
选择Continue
测试驱动程序配置
创建并部署
配置数据源
确定WebLogic Server正在运行
启动WebLogic Server 控制台(例如:http://localhost:7001/console)
登录到控制台
选择Services / JDBC / Data Sources
选择Configure a new JDBC data Source
指定Name为 jdbc/semJDBCDataSource
指定JNDI Name为jdbc/semJDBCDataSource
选择Emulate Two-Phase Commit for non-XA Driver
选择Continue
指定Pool Name为semJDBCConnectionPool
选择Continue
点击Create,确定数据源的目标
配置JMS连接工厂
确定WebLogic Server正在运行
启动WebLogic Server 控制台(例如:http://localhost:7001/console)
登录到控制台
选择Services / JMS / Connection Factories
选择Configure a new JMS Connection Factory
指定Name为semJMSConnectionFactory
指定JNDI Name为jms/semJMSConnectionFactory
选择Create
作为目标并在cgServer上部署
选择Configuration选项卡
选择Transactions子选项卡
选择XA Connection Factory Enabled
选择Apply
配置JMS JDBC库
确定WebLogic Server正在运行
启动WebLogic Server控制台(例如:http://localhost:7001/console)
登录到控制台
在左边的导航窗格中选择Services / JMS / Stores
选择Configure a new JMS JDBC Store
指定Name为semJMSJDBCStore
选择Connection Pool为semJDBCConnectionPool
选择Create
配置JMS服务器
确定WebLogic Server正在运行
启动WebLogic Server控制台(例如:http://localhost:7001/console)
登录到控制台
在左边的导航窗格中,选择Services / JMS / Stores
选择Configure a new JMS Server
指定Name作为semJMSServer
通过在下拉列表中进行选择,指定Persistence Store为semJMSJDBCStore
选择Create
将semJMSServer的目标设为cgServer
配置JMS队列
确定WebLogic Server正在运行
启动WebLogic Server控制台(例如:http://localhost:7001/console)
登录到控制台
在左边的导航窗格中,选择Services/JMS/Servers/semJMSServer /Destinations
选择Configure a new JMS Queue
指定Name为PersonQueue
指定JNDI Name为jms/PersonQueue
选择create
选择Redelivery子选项卡
指定Redelivery Limit为3
选择Apply
现在,您已经完成对应用程序资源的配置。但在部署应用程序之前,您仍需要配置与workshop相关的资源。
配置与workshop相关的资源
确定WebLogic Server正在运行
启动WebLogic Server控制台(例如:http://localhost:7001/console)
登录到控制台
在左边的导航窗格中,选择Services/JMS/Servers/semJMSServer/ Destinations
选择Configure a new JMS Queue
指定Name为SEMAppWeb.queue.AsyncDispatcher_error
指定JNDI Name为SEMAppWeb.queue.AsyncDispatcher_error
选择Create
选择Redelivery子选项卡
指定Redelivery Limit为0
选择Apply
在左边的导航窗格中,选择Services/JMS/Servers/semJMSServer/ Destinations
选择Configure a new JMS Queue
指定Name为SEMAppWeb.queue.AsyncDispatcher
指定JNDI Name为SEMAppWeb.queue.AsyncDispatcher
选择Create
选择Redelivery子选项卡
选择Error Destination为 SEMAppWeb.queue.AsyncDispatcher_error
选择Apply
现在您已经准备好部署应用程序了。
部署应用程序
确定WebLogic Server正在运行
启动WebLogic Server控制台(例如:http://localhost:7001/console)
登录到控制台
在左边的导航窗格中,选择Deployments/Applications
选择Deploy a new Application
浏览到SEMApp.ear文件的位置
选择SEMApp.ear
选择Continue
选择Deploy
一旦应用程序部署成功,就重启服务器。按照验证域配置一节所述运行测试程序。
也存在其他利用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模板则是扩展模板的一个示例。
怎样创建一个模板呢?有一个称为配置模板生成器的特殊工具可以帮助完成,无论是完全模板还是扩展模板。创建模板的方法都有两种。第一种方法是:扩展某一扩展模板。第二种方法是:根据现有的域创建模板。下一节,您将根据现有的域创建一个完全模板。
完全模板
这一节,我将举例说明根据一个现有的、预先配置的并且工作的域来创建完全模板的方法。按照下述这些步骤创建一个完全模板:
启动配置模板生成器(在Windows上,选择Start > All Programs > BEA WebLogic Platform > Other Development Tools > Configuration Template Builder)
选择Create a Configuration Template,并点击Next
选择Basic WebLogic Workshop Domain,并点击Next
选择一个现有的、预先配置的并且工作的SEM域(例如, SEMDomain-Manual-Express),并点击Next
指定Name为SEMTemplate- Complete
指定Author(例如,Bart)
指定Category(例如,SEM)
指定Description,并点击Next
点击后续对话框中的Next,取默认值
在Create Template中,为模板指定一个名称(例如,SEMTemplate- Complete)、观察并记住模板JAR文件的位置%BEA_HOME%/user_templates/,并点击Create
点击Done
现在,根据完全模板创建一个新域。按照下述这些步骤创建一个完全域:
基于完全模板的域创建
启动域配置向导(在 Windows上, 选择 Start > All Programs > BEA WebLogic Platform > Configuration Wizard)
选择Create a new WebLogic Configuration,并点击Next
浏览到完全模板(%BEA_HOME%/user_templates)的位置,而不是选择默认的模板之一
选择SEMTemplate-Complete,并点击Next
点击后续对话框中的Next,取默认值
指定Configuration Name为某些有意义的内容(例如,SEMDomain-Complete),并点击Create
点击Done
然而,启动此域中的WebLogic Server实例失败。加密的安全凭证冲突。如下手动修改config.xml文件:
修改config.xml
将SecurityConfiguration元素的Credential属性的值修改为""
将EmbeddedLDAP元素的Credential属性的值修改为""
将cgPool Password属性的值修改为“weblogic”
将semJDBCConnectionPool Password属性的值修改为“sem”
按照验证域配置一节所述的步骤验证该域是否工作正常。
另一种重要的模板策略是创建一个扩展模板,例如一个扩展DefaultWebApp模板、并配置所有必需资源的扩展模板。创建该扩展模板、创建一个域,并用扩展模板扩展该域留做练习。
结束语
手动编辑config.xml文件进行域配置是一种容易出错且危险的方法。而另一种极端的方法——通过编写Java代码来配置域则冗长乏味。常用的可供选择的方法包括使用WebLogic Console、Domain Configuration Wizard来配置域。然而,这两种可供选择的方法都是手动的,可能重复性强,并且耗费时间。在探索自动化解决方案时,我评估了模板方法。请留意我的下一篇文章,它将评价脚本策略。我希望本文能帮助您在选择使域配置自动化的工具和技术时能做到有备无患。
参考书目
· 要讨论本文或者询问问题,请从这里开始: www.bartssandbox.com。
关于作者
Prakash Malani在构建、设计和开发面向对象的软件方面有着丰富的经验,在许多应用领域开发过软件,例如娱乐、零售、医疗、通信以及交互式电视等。他实践并指导一些先进的技术,例如J2EE、UML和XML等。Prakash在各种业内领先的出版物上发表过各种文章。
原文出处