15.6 开发User MBean
MBean就其来源可以分为两类,一类是系统自带的MBean,另一类是用户自行开发的MBean,也被称为User MBean。本节将说明在GlassFish中User MBean的各类状态以及相关的部署和定制方法。
15.6.1 User MBean的生命周期
User MBean有3个状态,即初始化状态、停用状态和启用状态。MBean在3个状态之间的相互转换构成了MBean的生命周期,如图15-17所示。

图15-17 MBean的生命周期
当User MBean被部署到GlassFish后,将由GlassFish中的MBean服务器为其分配一个唯一的对象名。此对象名可以在部署时指定,或是通过MBean实现MBeanRegistration接口中的方法preregister()来指定,如果未指定,则默认对象名是“user:type=impl-class-name”。这里“user”是User MBean的域名。
从图15-17可见,User MBean的三个状态之间是通过两组动作来切换的:部署/卸载和启用/停用。这两组动作都可通过命令行asadmin或管理控制台来完成。下面将进一步介绍。
15.6.2 GlassFish中MBean相关的操作
GlassFish的命令行工具asadmin提供了一系列的子命令来完成对MBean的操作:
l asadmin create-mbean部署并注册一个MBean。
l asadmin delete-mbean卸载一个MBean。
l asadmin list列举部署的MBean。
l asadmin get列出MBean的详细信息。
l asadmin set对MBean的属性赋值。
下面通过具体实例来说明如何部署一个User MBean到GlassFish。这里采用了JMX默认的sample为例。
【例15.10】部署User MBean。
(1) 进入目录,并复制build/class文件到domain-dir/applications/mbeans目录下。
(2) 登录。根据提示输入用户名(admin)和口令(adminadmin),使用Login子命令将简化后面使用远程命令时所需的验证信息:
asadmin--host localhost --port 4848
Please enter the admin user name>admin
Please enter the admin password>
Trying to authenticate for administration of server at host [localhost] and port [4848] ...
An entry for login exists for host [localhost] and port [4848], probably from an earlier login operation.
Do you want to overwrite this entry (y/n)?y
Login information relevant to admin user name [admin] for host [localhost] and admin port [4848] stored at [C:\Documents and Settings\dell\.asadminpass] successfully.
Make sure that this file remains protected. Information stored in this file will be used by asadmin
commands to manage associated domain.
(3) 部署MBean。比如部署MBean类com.example.mbeans.Hello,并起名为“hello”:
asadmin> create-mbean --name hello com.example.mbeans.Hello
command create-mbean executed successfully.
(4) 查看部署的User MBean。通过get子命令查看MBean,如下所示:
asadmin> list server.applications.mbean.*
server.applications.mbean.hello
asadmin> get server.applications.mbean.hello.*
...
(5) 停用User Mbean:
asadmin> set server.applications.MBean.Hello.enabled = false
server.applications.mbean.hello.enabled = false
(6) 卸载User Mbean:
asadmin> delete-mbean hello
Command delete-mbean executed successfully.







