扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
简介: 每个可部署的J2EE组件,要在应用服务器上正常运行都必须经过特定的配置。对于使用Weblogic服务器的开发人员来说,通常这种配置可以通过手动操作控制台来完成,也可以通过Weblogic Ant的wlconfig和wldeploy两个任务实现,或使用命令行工具weblogic deployer完成。要正确地完成配置,使用Ant任务和命令行工具都需要许多与环境相关的信息,并且,在Weblogic9.0环境下,都建议尽量少使用这些工具。
因为应用程序没有为应用程序部署者提供统一的方法来进行维护和沟通配置信息,从而需要自定义脚本和手动配置。自定义脚本难以维护,而手动配置又会导致错误的发生,所以对于J2EE工件来说,要实现流畅的传播和版本机制其实是很困难。当应用程序需要部署于多样环境(开发,测试和生产)的条件下时,这就变得更加复杂,因为应用程序很难做到完全地独立于环境。并且,如果应用程序之间维护的信息不统一的话,那么实时地更改应用程序目标将使任务变得非常繁重。因此,每个应用程序都应该始终维护其自身的配置信息,这在某种程度上就实现了独立于环境。另外,有一种可以自动读取配置信息并在服务器上进行自动配置的工具,将提供很大的便利,这种工具将成为程序部署的一部分。同时,使用这样的工具将强制执行标准和指导原则。
这篇文章提供了使用应用程序进行配置信息维护的样例格式。同时它也以Ant任务的形式提供了能够读取配置信息并在WebLogic服务器进行部署的工具。本文提供的代码示例已经编译测试过,测试的环境为J2SE 1.4.2_03和Weblogic 8.1,同时也兼容Weblogic7.0,8.1和9.0。
■WebLogic服务器配置的种类
J2EE应用程序通常使用连接池,数据源,Java信息服务(JMS)存储(文件存储或Java数据库连接存储),JMS服务,JMS目标(队列和主题),以及分布式JMS目标。其中一些资源的创建是在域级上进行的。应用程序有的时候共享配置信息,而有的时候则不共享。在取消部署应用程序的时候,这些共享的配置信息不允许删除。这篇文章所述的示例Ant任务和配置非常谨慎地处理了这种情况,即确保不能删除掉共享配置。同时,也不能覆盖掉那些已经存在的配置信息。
■资源配置和WLST
WebLogic为每一个配置创建相应的管理bean(MBeans)。并通过Jave管理扩展(Java Management Extensions,JMX)对MBeans进行管理和操作。所以,要为每一个配置都创建及部署一个相应的MBean。创建MBean必需的参数包括它的名称,类型和其它的一系列属性。
WebLogic脚本工具(WebLogic Scripting Tool,WLST)允许用户像在文件系统中浏览文件那样,对MBeans进行访问和操作。它是开发者可以用来配置并与WebLogic服务器交互作用的脚本接口。WLST已被嵌入到WebLogic 9.0中,它既可以工作于联机状态,也可以工作于脱机状态。在联机工作时,WLST有三种工作模式:
脚本模式
交互模式(命令行和GUI)
Java封装模式
这篇文章着重讲述Java封装模式,它是一种特别值得学习的模式,因为它允许开发者在不必学习WLST脚本语言语法的情况下,就能轻易地创建出基于Java的工具(例如Ant任务),然后通过这个工具进行基于WLST的配置。
■创建及维护资源配置
维护资源配置最好的方法就是使其模块化。每个可部署的应用程序都应该维护其自身的资源配置,如此就能很容易地决定哪些是应用程序所必需的资源。应用程序的资源配置可以连同程序档案文件一起被传送到各种不同的环境当中。这样,在对有多个J2EE程序的机构进行资源配置时,就会更加易于维护和管理。
还有比XML更好的保存配置信息的格式吗?这种格式提供了一种结构化的方式来维护配置并可通过模式管理提供验证。XML文件内含有Weblogic服务器资源的名称,类型和一系列属性。你所需要知道的无非只有如下一些信息:
MBean的类型(例如JDBCConnectionPool)
MBean中必须设置的属性
类型不会改变,而通常每个MBean必须设置的属性也几乎都是相同的。因此,完全有可能创建一个通用的配置模板,并把它合并到大多数通用的IDE开发工具中(例如IDEA或Eclipse)。XML文件中使用的值必须独立于环境,并且要对XML文件进行版本控制。在发布时,传播的程序包还必须包含它本身的资源配置。参看本文为定义XML模块及示例配置文件所编写的源代码。现在我们称这个XML文件为WebLogic服务器资源配置XML。
■用于资源配置的配置器任务
一旦应用程序开始了它的资源配置维护,你就需要自定义一个Ant任务,这个任务将执行如下的操作:
读取WebLogic应用程序服务器上的资源配置XML
读取环境变量和其它一些来自文件、URL或资源的默认属性
在给定的目标服务器群上运行配置文件
在配置部署失败时提议放弃这个部署
这些配置任务可以通过任何一个开源的XML绑定框架(例如Castor,XMLBeans,或Java Architecture for XML Binding)来解析XML文件。在例子中,我使用的是XMLBean。接下来该任务必须产生一个与WLST兼容的脚本,并对它进行触发。为了在联机状态下运行这个脚本,我们必须连接到管理服务器上,并在这个服务器上触发配置。以下是配置器任务的输入参数:
url:管理服务器的URL
username:管理服务器的用户名
password:管理服务器的密码
configfile:配置文件的路径
action:动作(创建,删除,部署,取消部署)
配置器的任务首先是解析配置文件。然后,连接到域的管理服务器上。根据操作输入参数,它将通过XML文件提供的参数创建WLST脚本,然后以嵌入的模式执行这个脚本。在所有的配置部署完成之后,这个任务将温和地断开与管理服务器的连接。
生成的WLST脚本首先要检测bean是否存在,如果存在的话,就不进行创建配置。配置器任务同时也要处理依赖性问题(例如数据源是依赖于连接池的)。在删除阶段,必须要向后检测依赖性以确保正确无误地删除。
参看下面的配置器源代码示例。
■Ant任务参考
Ant任务名称是com.tanmayambre.wls.tools.anttaskdefs.WLSTConfigurator。它有如下的输入属性:
url:管理服务器的URL
username:管理服务器的用户名
password:用户密码
configFile:配置文件的路径
propertiesFile:包含环境属性的文件
action:创建,删除,部署,取消部署,重部署
部署与重新部署动作首先都要在内部调用create动作来创建配置。属性可以是环境变量。目标定义属性示例:
username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="create"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="create"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="delete"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="delete"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="deploy"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="deploy"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="undeploy"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="undeploy"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="redeploy"/> username="${weblogic.user}" password="${weblogic.passwd}" url="${weblogic.url}" configFile="${basedir}/samples/wlsconfig/example.xml" propertiesFile="${basedir}/samples/wlsconfig/environment.properties" action="redeploy"/> ■实现环境独立性 某些运行时配置会因为运行环境的不同而有所不同。例如,生产环境中连接到数据库的用户ID和密码可能与测试环境中的不同。为每个环境都编写相应的配置文件,对开发者而言将是个繁重的任务;他们必须要考虑到各种环境下所有可能的配置。 从而,人们将用一个更为有效的方法取而代之,这种方法能提炼出配置文件中的信息,并将此信息作为独立的属性文件(或环境变量)进行维护。文件的维护工作由系统管理员承担;而需要开发者做的无非就是使用这些配置文件中的属性值。 配置器使用一个属性读取器(com.tanmayambre.wls.tools.utils.PropertiesReader)读取位于不同位置的属性值,那些属性值将依照如下所列的顺序依次读取。后面读取的属性将覆盖先前读取的同名属性。 系统属性 环境变量 来自文件的属性 环境变量可以声明为常用变量,例如环境名称和域名称。属性文件包含着默认的值,例如用户ID,用户密码,最大容量和最小容量。这个文件是与环境相关的,因此对应于每个不同的环境都要对各自的属性文件进行维护。 在XML中,编写资源配置XML文件不应该使用任何与环境相关的值。而应该使用那些特定于环境的属性文件中声明为系统、环境变量,或属性的变量。 这种方法的优点在于,无论是开发者还是应用组合者只需编写一次配置就能用于所有的环境。样例代码中包含着一个可以读取环境相关属性的属性读取器。配置器任务使用这个属性读取器替换资源配置XML中的环境变量。此方法类似于Maven读取环境变量时所使用的方法。 ■资源命名规范 因为我们要使资源配置文件具有环境独立性,所以必须强制开发人员和应用程序部署人员使用标准化的资源名称。这也使得在不同的环境中有统一的标准,有助于有效地维护环境的健全性。命名规范应该进行公布,并实施文档化,并在开发人员和部署人员之间达成共识。下面有几条关于命名规范的依据: 如数据连接池,JMS存储库等域级的资源是通过服务例程进行部署的,因此不应使用依赖于服务器的变量 在命名时遵循匈牙利命名法 资源名称中的应用程序名应该面向特定于应用程序的资源而使用 ■处理过程 下列步骤概述了开发及维护配置的处理过程: 为每个环境创建与环境相关的相应属性文件(一次性活动)。 发布资源命名规范的依据。 创建WebLogic服务器资源配置文件,它将作为应用程序开发的一部分。 在应用程序的build.xml文件中,将创建和删除资源配置的Ant任务与部署和取消部署应用程序的Ant任务合并在一起。确保与部署相关的任务从属于资源配置任务。 在版本控制系统中,检查WebLogic服务器配置和build.xml文件。 提醒应用程序开发人员注意可用的环境变量。 在发布阶段,发布WebLogic服务器的版本配置。 使用Ant任务进行部署。配置器任务能够创建资源配置,同时进行应用程序的部署。 ■优点 所提出的解决方案可以全面自动化并维护Weblogic服务器配置。这种方法具有如下优点: 针对每个应用程序的模块化Weblogic服务器配置。这样,实时地部署应用程序就变得异常简单。 它是一种结构化的维护配置的方法。 WebLogic 9.0已经使WLST官方化。 将创建配置文件必需的工作量降到最小。 由于工具使用的是Ant任务的方式,所以能很方便地将此工具集成到Maven中。 ■结束语 在这篇文章中,你已经看到如何在应用程序内封装WebLogic服务器资源配置。这项工作的完成需要借助于维护一个资源配置XML文件和使用配置器任务,以便在完成必需的资源配置的同时部署应用程序。同时你也看到了怎样使资源配置文件具有环境独立性。这个方法将有助于机构在J2EE应用程序的部署及取消部署方面实现完全自动化,同时也缩小了错误范围。在资源配置XML中增加版本控制功能,这将为追踪应用程序资源变动提供很大帮助。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者