技术中心

这里象征着我们的态度和能力

>5种方法访问GlassFish资源
发布者:中国IT实验室    信息来源:中国IT实验室    发布时间:2012-01-09      浏览次数:5222
分享到:

新浪微博

腾讯微博

QQ空间

豆瓣网

QQ好友

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

JMX是GlassFish管理架构的基础, GlassFish的设计和实现都遵循了JMX规范,因此也完全支持JMX。


这种支持体现在它的命令行管理工具asadmin和管理控制台的功能上,体现在第三方管理工具比如JConsole的对其访问的支持上,也体现在通过标准的或GlassFish特有的编程接口AMX对其资源的访问方式上。下面通过实例,来看看GlassFish是如何支持这几种方式对其资源进行访问的。


方法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/__CallFlowPoolserver.resource-ref.jdbc/__TimerPoolserver.resource-ref.jdbc/__defaultserver.resourcesserver.resources.jdbc-connection-pool.DerbyPoolserver.resources.jdbc-connection-pool.__CallFlowPoolserver.resources.jdbc-connection-pool.__TimerPoolserver.resources.jdbc-connection-pool.mypoolserver.resources.jdbc-resource.jdbc/__CallFlowPoolserver.resources.jdbc-resource.jdbc/__TimerPoolserver.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","adminadmin"};env.put(JMXConnector.CREDENTIALS,creds);//建立连接 JMXConnector connector = JMXConnectorFactory.connect(url,env);MBeanServerConnection mbsc = connector.getMBeanServerConnection();//要访问的MBean的Object Name ObjectName mbeanName = new ObjectName("com.sun.appserv:type=jdbc-connection-pool,name=mypool,category=config");//所要访问的属性idle-timeout-in-seconds System.out.println("Using JMX, jdbc pool idle timeout:"+ mbsc.getAttribute(mbeanName,"idle-timeout-in-seconds"));}public static void main( final String[] args ) throws Exception{new JMX_demo();}}

运行结果如下: Using JMX, jdbc pool idle timeout:888

public class AMX_demo {public AMX_demo() throws Exception {//Domain Admin Server的机器名或IP地址 final String host = "localhost";//JMX管理端口,缺省8686。 final int port =8686;//管理员名 final String user = "admin";// 管理员密码 final String password = "adminadmin";TLSParams tlsParams=null;//连接到JMX server AppserverConnectionSource conn = new AppserverConnectionSource(AppserverConnectionSource.PROTOCOL_RMI, host, port, user, password, tlsParams, null);conn.getJMXConnector( true );//DomainRoot和JDBCConnectionPoolConfig就是所说的DCP组件 DomainRoot mDomainRoot = conn.getDomainRoot();//获取JDBCConnectionPool的列表 Map pools = mDomainRoot.getDomainConfig().getJDBCConnectionPoolConfigMap();JDBCConnectionPoolConfig mypool = (JDBCConnectionPoolConfig)pools.get("mypool");System.out.println("Using DCP, jdbc pool idle timeout: "+mypool.getIdleTimeoutInSeconds());}public static void main( final String[] args ) throws Exception{new AMX_demo();}}

 


 


方法5,通过AMX编程方式

AMX方式的代码如下:

import com.sun.appserv.management.DomainRoot;import com.sun.appserv.management.client.AppserverConnectionSource;import com.sun.appserv.management.client.TLSParams;import com.sun.appserv.management.util.misc.ExceptionUtil;import com.sun.appserv.management.config.*;import java.net.ConnectException;import java.util.Map;


/** * 此类为演示使用AMX方式访问服务器端的MBean的演示代码。 */
运行结果如下:
Using DCP, jdbc pool idle timeout: 888
注意,采用AMX的方式时,在项目的库路径上要加入appserv-ext.jar和javaee.jar。
4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730
Baidu
map