`
sunxboy
  • 浏览: 2832519 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使Weblogic服务器的资源配置自动化(转)

阅读更多

摘要:

这篇文章中,你已经看到如何将Weblogic服务器资源集成到应用程序中.完成这些工作借助于资源配置的XML文件,以及使用配置器任务按照必要的资源 配置去布署。同时我们也看到了,如何使得我们的资源配置文件独立与环境.这些方法有助于机构完全自动化J2EE应用程序的部署和反部署工作
 
 
在Weblogic服务器上使用WLST和Ant进行资源配置

概述

企 业级的Java程序如果没有进行程序服务器的配置,例如链接池、数据源、JMS队列和安全等的配置,想要准确运行是不太可能的。而这些配置都是在应用程序 部署之前进行正确无误地配置的。然而,在考虑程序可能部署到多环境的情况下,这些配置工作就变得复杂起来。自动而集成的资源配置提供了这种便利,尤其是出 于系统维护导致系统的配置发生变化或突然出于性能的需要需将程序部署到一个新的服务器上。这篇文章阐述的就是Weblogic服务器下借助 Weblogic的脚本语言和Ant实现这种资源配置自动化。

每种可部署的J2EE组件,要在应用服务器运行准确无误都必须进行相应的配 置。对于使用Weblogic服务器的开发人员来说,这种配置可以通过控制台来完成,也可以通过Weblogic Ant的wlconfig和wldeploy两个任务,或直接使用命令行工具weblogic deployer。Ant任务和命令行工具因为依赖于具体的环境特性,所以在Weblogic9.0下,都建议尽量减少这些工具的使用。

因 为开发人员与应用程序之间并没有一个统一的维护和沟通配置信息的方式,从而导致一些自定义的脚本配置和手动配置并存。自定义的脚本配置难以维护,而手动配 置常常导致错误的发生,获取一个流畅的传播和释放机制对J2EE而言显得艰难无比。在应用程序需部署到多样环境的下(开发,测试和产品),这变得更加复 杂,因为这些多样环境使得程序很难做到完全地独立于环境。并且,如果整个程序的维护信息本身并不规范的话,突然变动程序目标将导致过程变得冗长乏味。因 此,每一个程序都必须始终如一的将配置信息保持环境独立。也正据于此,一种可以自动读取配置信息并在服务器上进行自动配置的工具,将大大地提供便利,而这 种工具也将成为程序部署的一个部分。这样的一个工具在加强标准和指引中起到至关重要的作用。

这篇文章提供了一个样例,在此样例中配置信息 得以通过程序来维护。它同时也提供了以Ant任务的方式执行读取配置信息和在服务器部署的工具。此样例已经编译测试过,测试的环境为J2SE 1.4.2_03和Weblogic 8.1,同时也兼容Weblogic7.0,8.1和9.0。

版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:Tanmay Ambre;leniz
原文:http://www.javaworld.com/javaworld/jw-10-2005/jw-1010-wlst.html
Matrix:http://www.matrix.org.cn/resource/article/44/44624_Weblogic.html
关键字:Weblogic;资源配置

Weblogic服务器配置的种类

J2EE 程序通常使用链接池,数据源,Java信息服务(JMS),储存技术(文件储存或数据链接储存),JMS服务,JMS目标(队列和主题),以及分布式 JMS目标。其中部分资源的创建是处于域级的。有些时候应用程序可以共享配置信息,有些时候却不是那样。这些共享的配置信息,在应用程序反部署的时候并不 允许被删除。这篇文章所述的Ant任务和配置需要非常谨慎的处理这种情况,即共享配置不能够被删除。同时,也不能覆盖掉那些已经存在的配置信息。

资源配置和WLST

Weblogic 针对每个配置创建相应的管理Bean(MBeans),并通过java管理扩展(Java Managerment Extensions(JMX))来管理这些Mbeans。所以,每一个配置都有一个对应的MBean 被创建和部署。创建这些MBean 所必须的参数有:它的名字,类别和其它一系列属性。

WLST(Wblogic Scripting Tool)是一个脚本工具,它使得用户可以访问并操作MBean,类似于在文件系统中对普通文件的操作。这是一个脚本接口,使得开发人员可以借此配置 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模式定义的,是配置文件的一个样例。现在把它称为Weblogic服务器资源配置XML。

资源配置的配置器任务

一旦应用程序开始维护它的资源配置,你需要定义一个Ant的常规任务,这个任务将执行如下的操作。
+读取Weblogic应用程序服务器的资源配置XML文件
+可以读取环境变量和其它一些来自或文件或URL或资源的默认的属性
+在给定的目标服务器上运行配置文件
+配置文件部署失败将触发程序的部署失败

这 些配置任务可以通过任何一个开源的XML绑定框架(Castor, XMLBeans,或Java Architecture for XML Binding)来解析XML文件。在例子中,我使用的是XMLBeans.接下来任务必须产生一个WLST兼容的脚本,并触发它。为了在线运行这个脚 本,我们必须连接到管理服务器,并在这个服务器上触发配置。下列的是配置任务的输入参数。
+url:  管理服务器的URL
+username:管理服务器的用户名
+password:管理服务器的密码
+configfile: 配置文件路径
+action: 动作(创建,删除,部署,反部署)  


配置任务首先解析配置文件。接着连接到一个域管理服务器.依据输入参数,按照XML文档给定的参数将产生一个WLST脚本,并以嵌入的模式执行此脚本.在完成所有配置的部署之后,这个task将优雅从容的断开与管理服务器的链接

生成的WLST脚本将首先检测bean是否存在,如果存在的话,将不创建配置.配置器任务也同时检查依赖性.(比如数据源是依赖于数据链接池的).在删除阶段,也将进行依赖性检测已确定删除万无一失.

参看资源部分的配置器源代码样例.

Ant 任务示例

Ant任务名称为com.tanmayambre.wls.tools.anttaskdefs.
WLSTConfigurator.它拥有如下的输入参数.
+url: 管理服务器 的URL
+username: 管理服务器 的的用户名
+password: 用户密码
+configFile: 配置文件路径
+propertiesFile: 包含环境变量的属性文件
+action: 创建,删除,部署,反部署,重部署

部署与反部署动作都将内在地先触发创建动作去创建一份配置.属性可以是环境变量
示例:
<target name="create-configuration" depends="init-demo">
   <echo message=">>>>>> Creating the Configuration"/>
   <wlsconfig
      username="${weblogic.user}" password="${weblogic.passwd}"
      url="${weblogic.url}"
      configFile="${basedir}/samples/wlsconfig/example.xml"
      propertiesFile="${basedir}/samples/wlsconfig/environment.properties"
      action="create"/>
</target>

<target name="delete-configuration" depends="init-demo">
   <echo message=">>>>>> Deleting the Configuration"/>
   <wlsconfig
      username="${weblogic.user}" password="${weblogic.passwd}"
      url="${weblogic.url}"
      configFile="${basedir}/samples/wlsconfig/example.xml"
      propertiesFile="${basedir}/samples/wlsconfig/environment.properties"
      action="delete"/>
</target>

<target name="deploy-application" depends="init-demo">
   <echo message=">>>>>> Deploying the application"/>
   <wlsconfig
      username="${weblogic.user}" password="${weblogic.passwd}"
      url="${weblogic.url}"
      configFile="${basedir}/samples/wlsconfig/example.xml"
      propertiesFile="${basedir}/samples/wlsconfig/environment.properties"
      action="deploy"/>
</target>

<target name="undeploy-application" depends="init-demo">
   <echo message=">>>>>> UNDeploying the application"/>
   <wlsconfig
      username="${weblogic.user}" password="${weblogic.passwd}"
      url="${weblogic.url}"
      configFile="${basedir}/samples/wlsconfig/example.xml"
      propertiesFile="${basedir}/samples/wlsconfig/environment.properties"
      action="undeploy"/>
</target>

<target name="redeploy-application" depends="init-demo">
   <echo message=">>>>>> Redeploying the application"/>
   <wlsconfig
      username="${weblogic.user}" password="${weblogic.passwd}"
      url="${weblogic.url}"
      configFile="${basedir}/samples/wlsconfig/example.xml"
      propertiesFile="${basedir}/samples/wlsconfig/environment.properties"
      action="redeploy"/>
</target>
 

实现环境独立性

某些运行期的配置会因为运行环境的不同而有所不同.比如链接数据库服务器的用户ID和用户密码在测试阶段和实际运行阶段可能不一样.对开发者而言,针对每种环境都要编写一个配置文件将是一个冗长乏味的工作.他们要考虑各种各样的环境下的配置可能.
所以不太可能这样做,一个更为有效的方法将抽象出配置文件中的信息,并将这些信息作为一个独立的属性文件(或作为环境变量).此文件将由系统管理员进行维护,而开发者所要做的无非只是从这些属性文件中提取属性值
配置器使用一个属性读取器(com.tanmayambre.wls.tools.utils.
PropertiesReader)读取不同环境的属性值,那些属性值将依照如下的顺序依次读取.后面读取的属性将覆盖之前读取的同名的属性.
+系统属性(System properties)
+环境变量(Environment variables)
+来自文件的属性(Properties from a file

环境变量可以声明为常用变量,比如环境名称或域名称.属性文件包含默认的值,比如,用户ID,用户密码,最大容量,最小容量.此文件关联着环境,所以单独的属性文件将对照不同的环境进行维护.

资源配置的XML文件不允许使用任何特殊环境下的变量,而必须使用那些声明为系统的或环境的变量,或特定环境下属性文件的某属性值.

这 种解决方案的好处在于,无论开发者或是程序的编译者只需一次配置好所有环境下的配置.示例代码包含了一个这样的属性读取器,这个读取器可以读取环境相关变 量.配置器使用这个属性读取器替换资源配置XML中的环境变量.此解决方法类似于Maven读取环境变量所使用的方法.

资源命名约定

因 为我们要使创建的配置文件具有环境独立性,所以必须制定相应的命名规则来规范程序员和应用程序开发者对资源的命名.这也使得在跨平台使用时有统一的标准, 有助于有效的维护系统.命名规格必须加于公布,文档化,并由开发者和部署人员达成共识.下列有几条关于命名规范的的指导:
+域级资源,比如数据链接池,JMS存储库等, 因为部署于跨服务器实例,所以不应该使用依赖特定服务器的变量.
+在命名时使用匈牙利字符命名方式
+根据应用程序命名的资源做为特定应用资源。


处理过程

下列步骤,概要的说明了开发和维护配置的过程.
1.针对每个环境,创建一个包含环境特性的属性文件(一次性).
2.发布资源命名约定的规范方针
3.将创建Weblogic服务器资源配置文件, 这是程序开发的一部份
4.在builder.xml中, 将创建和删除配置以及布署和反布署程序与ant任务相结合, 确保布署相关的任务依赖于资源配置任务。
5.在版本控制系统里, 检查Weblogic服务器配置和build.xml。
6.告知应用程序开发者, 环境变量已经可用.
7.在发布阶段,先发布Weblogic服务器资源配置.
8.使用ant的任务来完成部署工作.配置器任务能够创建资源配置,同时也能不熟应用程序.


优点

所建议的解决方案可以自动化以及维护Weblogic服务器配置.这些步骤具有如下的优势:
+对每个应用程序,模块化Weblogic服务器配置.部署应用程序变得异常简单.
+一种结构化的维护配置的方法.
+Weblogic9.0 使得WLST官方化
+创建配置文件只需要很少的工作量
+因为工具使用的是Ant的任务的方式,所以可以很方便地将此工具集成到Maven.


结论
这 篇文章中,你已经看到如何将Weblogic服务器资源集成到应用程序中.完成这些工作借助于资源配置的XML文件,以及使用配置器任务按照必要的资源配 置去布署。同时我们也看到了,如何使得我们的资源配置文件独立与环境.这些方法有助于机构完全自动化J2EE应用程序的部署和反部署工作,同时缩小错误出 现的范围.如果对资源配置的XML文件加上版本控制的话,将更有利于对程序资源变动的追踪.

关于作者
Tanmay Amber就职于印度孟买的Infosys 技术公司.涉及领域包括Java/J2EE技术,并有四年从事Weblogic相关产品工作的经验.Amber同时专长于Java/J2EE平台的工具使用(特别是开源项目).
分享到:
评论

相关推荐

    JAVA程序开发大全---上半部分

    15.2 WebLogic服务器的安装与配置 257 15.2.1 WebLogic服务器的安装 257 15.2.2 WebLogic服务器的配置 258 15.2.3 MyEclipse中集成WebLogic服务器 260 15.3 使用MyEclipse开发EJB 261 15.3.1 开发Session Bean 261 ...

    Spring.3.x企业应用开发实战(完整版).part2

    7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 8.2.3 其他持久技术的异常...

    Spring3.x企业应用开发实战(完整版) part1

    7.10.4 在其他Web应用服务器下的配置 7.11 小结 第3篇 数据访问 第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 8.2.3 其他持久技术的异常...

    java源码包3

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    Spring 2.0 开发参考手册

    9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO...

    Spring-Reference_zh_CN(Spring中文参考手册)

    设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.3.1....

    Spring中文帮助文档

    9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的...

    Spring API

    9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO...

    spring chm文档

    9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

    智能调度平台系统技术要求.pdf

    2.3 Web应用服务器支持主流中间件产品,如IBM Websphere, BEA Weblogic, Oracle Application Server, Tomcat等; Web服务器支持MS IIS, NES, Apache等。 2.4数据库管理系统须具备良好的数据和索引的压缩技术,具有 ...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    绩效管理系统设计方案.doc

    设置集中数据库服务器,数据库系统采用Oracle 10g或DB2,以及J2EE应用服务器组(WebLogic 9 Server或WebSphere Server),所有的系统客户端(员工、部门经理、财务或人力资源部门)直接使用IE浏 览器或其他的通用...

    Struts2属性文件详解

    对于 WebLogic、Orion和OC4J服务器,通常应该设置该属性为true. struts.freemarker.manager.classname 该属性指定Struts 2使用的FreeMarker管理器.该属性的默认值是org.apache.struts2.views.freemarker....

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java源码包2

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    java源码包4

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

Global site tag (gtag.js) - Google Analytics