解析GlassFish 3中的配置组件

本文深入探讨了GlassFish3的配置组件与监控组件。详细分析了配置文件的架构及工具使用方法,同时介绍了如何通过多种方式访问和管理GlassFish资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在GlassFish 3中,存在大量的组件,作者详细分析了其组件配置的架构、工具和应用方法,对于想要深入了解GlassFish的开发人员和系统管理人员有较好的借鉴意义。

\

1 配置组件研究

\

在GlasFish中,有大量的配置文件,很大一部分是自动产生的,为助于理解,我们有必要先将它吃透。它也有一个主域配置文件(位于%GlassFishV3%\\domains\\domain1\\config\\config.xml),它主要包括以下几个部分:

\

832aef4d189ec225c057f90da058590d.jpg

\

图1 GlassFish config配置管理组件的组成

\
  • ConfigBeans: 对于对配置文件的elements、attributes、properties执行get/set/create/delete操作,是一个底层API\
  • Admin MBeans: JMX客户端API,包括:GUI/CLI/HTML adapters/remote apps\
  • Admin Validator:验证配置,并且防止不合法的配置改变\
  • Dynamic-reconfig: 重新配置之后,可以不用重启服务器,实时生效\

1.1 配置元数据

\

在glassfish的config-api模块中包含了大量的配置元数据,有些是自动产生的,有些是手动产生的。

\

ebd6937a355a931aa030706bb3329ca8.jpg

\

图2 配置元数据

\

配置文件符合以下三个schema, 这些schema主Relax NG语法来进行属性扩展,所有的属性扩展在其独立的名空间中:

\
  • sun-domain-1_2.dtd,\
  • ConfigBeans\
  • Validation Descriptors file\

1.2 源代码分析

\
  • Config Beans: 代码位于HK2核中的config模块,它包含了ConfigContext、ConfigEvent、Listeners的接口和实现。在GlassFish中的config-api模块中的server beans是由sun-domain_1_2.dtd自动产生的,手动产生的是ApplicationsHelper, ClustersHelper, ResourcesHelper等。\
  • Admin MBeans: 提供JMX客户端(CLI/GUI/HTML-adapters/remote apis)的访问和管理操作。位于admin-core中的admin子模块中。\
  • Config Validator : 验证metadata files,验证基础类,对客户化配置元素的验证等。\

2 监控组件研究

\

我们可以通过以下5种方式访问GlassFish资源:

\
  • 管理控制台\
  • 命令行工具asadmin\
  • Jconsole第三方工具\
  • 标准的JMX编程接口\
  • 面向对象的AMX编程接口\

JMX是GlassFish管理架构的基础, GlassFish的设计和实现都遵循了JMX规范,因此也完全支持JMX。这种支持体现在它的命令行管理工具asadmin和管理控制台的功能上,体现在第三方管理工具比如JConsole的对其访问的支持上,也体现在通过标准 的或GlassFish特有的编程接口AMX对其资源的访问方式上。下面通过实例,来看看GlassFish是如何支持这几种方式对其资源进行访问的。

\

e1b38243e4b435ecc9d2bc5c810f54a4.jpg

\

图3 访问GlassFish资源的5种方式

\

方法1,通过管理控制台

\

首先,先通过管理控制台来创建一个数据库连接池mypool。在浏览器的输入管理控制台地址:localhost:4848。采用缺省的用户名 “admin”及其密码“adminadmin”登录。成功登录后,在左边的树型菜单中,展开“资源”-“JDBC”-“连接池”。在主面板中,点击“新建”。在面板“新建 JDBC 连接池(步骤 1,共 2 步)”中,输入“名称”为mypool,“资源类型”选为“javax.sql.DataSource”,“数据库供应商”选为“JavaDB”。在接下 来的“新建 JDBC 连接池(步骤 2,共 2 步)”中,可以看到数据库连接池的各项缺省设置。将在“池设置”一栏中的“空闲超时”值由缺省的300改为777。 点击“完成”。至此,我们通过管理控制台完成了对数据库连接池mypook的创建,并修改了其空闲超时的值。

\

方法2,通过命令行工具asadmin

\

接下来,我们通过命令行的asadmin来查看这一资源。

\
\asadmin list server.resource* 
\

运行结果如下:

\
\server.resource-ref.jdbc/__CallFlowPool \server.resource-ref.jdbc/__TimerPool \server.resource-ref.jdbc/__default \server.resources \server.resources.jdbc-connection-pool.DerbyPool \server.resources.jdbc-connection-pool.__CallFlowPool \server.resources.jdbc-connection-pool.__TimerPool \server.resources.jdbc-connection-pool.mypool \server.resources.jdbc-resource.jdbc/__CallFlowPool \server.resources.jdbc-resource.jdbc/__TimerPool \server.resources.jdbc-resource.jdbc/__default 
\

这里列出的MBean是用GlassFish自己的DottedName来标识的。接着通过asadmin的子命令get来查看对象mypool的属性:

\
\asadmin get server.resources.jdbc-connection-pool.mypool.* 
\

或者进一步查看空闲超时(idle-timeout-in-seconds)的属性值。

\
\asadmin get server.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds 
\

结果如下:

\
\server.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds = 777 
\

至此,我们完成了使用命令行的管理工具asadmin对mypool的访问。这里asadmin通过GlassFish扩展的Dotted Name命名方式来访问MBean的。Dotted Name是GlassFish命令行工具asadmin定义的一套约定。在这套约定的支持下,asadmin的三个子命令(list、set和get )可以通过一个由“.”分隔的字串寻址到GlassFish中的MBean。

\

方法3,通过第三方工具JConsole

\

接下来,我们要通过JConsole来访问对象mypool。在JConsole的登录面板中,选择远处进程:localhost:8686(8686是GlassFish缺省的管理端口),用户名同样为 admin,密码adminadmin。登录进来后所看到的是关于GlassFish应用服务器运行时的信息,点击“MBean”。展开树型结构 “com.sun.appserv” - “jdbc-connection-pool” - “my pool” - “config” - “属性”。可以看到我们所关心的连接池mypool的信息。属性idle-timeout-in-seconds的值为777。修改777为888。在回到管理控制台或命令行工具asadmin同样可以看到刚才在JConsole所作的修改已经生效。以上说明三种工具对GlassFish资源的修改是等效的。接下来通过编程的方式来访问数据库连接池mypool。

\

方法4,通过标准的JMX编程方式

\

标准的JMX方式的代码如下:

\
\import javax.management. * ;\\import javax.management.remote. * ;\\public class JMX_demo {\\    public JMX_demo() throws Exception {\        //创建JMX 的URL\        JMXServiceURL url = new JMXServiceURL(\"service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi\");\        java.util.Map env = new java.util.Hashtable();\        //缺省用户名和其口令\        String[] creds = {\            \"admin\
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值