wls 9可以说是自wls 6.0以来最重大的一次改革,不仅增加了许多功能,而且对许多旧有的子系统重新进行了设计。为了集成第三方管理系统,wls提供了与jmx完全兼容的标准接口来执行所有的管理操作。
在wls中,每个domain中使用一系列mbean负责维护该domain的配置。这些mbean对内部的各个子系统是树状组织形式。对外则提供jmx作为访问接口。此外还有console,wlst,wlconfig等管理工具利用mbean来管理domain。在wls 9中完全重写了jmx子系统,从而代替了从6以来的这部分框架。新的jmx框架支持可靠的批量操作,提高性能,并增加对更多j2ee标准的支持。包括jsr 77,jmx 1.2以及jsr 160等。
此外wls 9中包含了另一套和jmx类似的api,称为j2ee management api,用于实现j2ee management data model。后面我会通过一个例子对j2ee management api进行更深入的讨论。
本文所有代码通过wls 9.0测试,使用eclipse 3.1.0开发。
本文没有包括用jmx管理安全realm和使用自定义mbean。自定义mbean将在另一篇文章中讨论。
一.jmx功能介绍
wls 9中jmx的新特性主要包括如下六方面:
1。由于jmx新版本中远程api的发布(jsr 160),远程jmx客户端可以使用标准的jmx remote api 1.0来访问wls上的jmx代理。以前可以通过weblogic.management.mbeanhome接口访问wls mbean的类型安全存根接口。在9中这个接口是不赞成的。如果你的jmx客户端应用中使用了类型安全接口,建议升级到标准的jmx模型上。但如果使用旧的mbeanhome 接口,仍然可以被新的jmx兼容。
2。新jmx框架中修改domain配置的过程类似二阶段事务提交机制。所有“修改”操作会先临时保存到administration server的edit mbeans中。然后这些“修改”会发布到各个server上。如果任何server不能执行这个修改操作,整个修改过程将回滚。mbean的发布使用了wls的部署框架,因此部署和配置使用相同的渠道。
3。新的mbean数据模型。由于整个domain配置是由一个xml文档来描述,因此mbean是以等级结构来表示这个文档的。每个domain有一个类型为domainmbean的mbean来表示这个domain,该mbean中又有属性来访问domain的server和cluster。当调用一个mbean是通?类似objectname on =
javax.management.mbeanserverconnection.getattribute (object-name, attribute);的方法。
4。新的mbean server结构。administration server必须维护三个mbean server,每个server用于访问特定种类的mbean。edit mbean server用于访问domain中可编辑配置的mbean;domain runtime mbean server用于访问该domain的所有运行时mbean和只读配置的mbean;runtime mbean server用于访问administration server的运行时mbean和只读配置的mbean。对于每个授管server只维护各自的runtime mbean server用于访问该server上的运行时mbean和只读配置的mbean。jmx客户端使用j2ee的标准接口
javax.remote.access来访问在上述mbean servers上注册的mbean。此外还有第四种作为可选的:jvm's platform mbean sever,用于监控jvm的信息,可存在于administration server或被管server。
5。在wls 9中,开发者可以把描述应用服务的描述符文件打包到应用的ear文件中去。因此当部署这个应用时wls会按照部署描述符文件创建一个实例代表这个服务。因此wls中许多子系统已经不赞成使用旧的jmx接口转而升级到新的mbean。
6。注册自定义mbean。以前如果需要注册自定义mbean,则需要使用自己的mbean server或通过weblogic.management.remotembeanserver接口把mbean注册到wls的mbean server上。对于9c除了可以创建自己的mbean server外,还可以将自定义mbean注册到runtime mbean server上并通过jndi访问,或者将自定义mbean注册到jvm's platform mbean server上。
二.理解wls mbean
按照mbean是用于监控或配置,分为runtime mbeans,configuration mbeans和configuration mbeans for system modules。runtime mbeans只包括server和其资源的运行时状况,因此只在server运行期内存活。configuration mbeans包括server和其资源的配置,因此保存在domain的xml配置文档中。
configuration mbeans for system modules包括各种系统级service的配置信息。domain中每个server有自己的一份domain配置文件。当该server启动后或者做任何改动时会和administration server连络来更新其配置文件。即使启动时无法和administration server连络,仍旧可以成功启动。此外对administration server,在domain的config/pending路经下还有一份可编辑的domain配置文档拷贝用于保存jmx client端所作的中间修改状态。
在wls中mbean是以树状组织的,对应到domain的xml配置文档结构。每个mbean用一个唯一的objectname来注册到mbean server上。按照约定,子mbean的objectname要包含父mbean的objectname中的一部分:
com.bea:name=name,type=type[,typeofparentmbean=nameofparentmbean]
[,typeofparentmbean1=nameofparentmbean1]...
其中com.bea是这个mbean所属于的jmx domain名。对于非自定义的mbean,这个domain name总是com.bea。此后这些属性名值对的次序无所谓。jmx允许从本地或远程访问mbean server。如果从本地访问,jmx客户端可以通过jndi获得javax.management.mbeanserver接口,并还可以访问创建注册自定义的mbean。如果远程访问需要包含wl_home/lib/wljmxclient.jar包,获得javax.management.mbeanserverconnection接口,但不能操作自定义mbean。
三.使用jmx的例子
下面用一个例子来说明如何使用jmx访问mbean来修改domain配置。
|
闽公网安备 35060202000074号