glassfish mysql datasource_5种方法访问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*

运行结果如下:

undefined

undefined

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.aperv” - “jdbc-connection-pool” - “my pool” - “config” - “属性”。

可以

看到我们所关心的连接池mypool的信息。属性idle-timeout-in-seconds的值为777。修改777为888。

在回到管理控制台或命令行工具asadmin同样可以看到刚才在JConsole所作的修改已经生效。

以上说明三种工具对GlassFish资源的修改是等效的。

接下来通过编程的方式来访问数据库连接池mypool。

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

标准的JMX方式的代码如下:(以下为演示代码。为突出重点,未作异常处理。)

undefined

undefined

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

undefined

undefined

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方式的代码如下:

undefined

undefined

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.ConnectException; import java.util.Map;

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

GlassFish 应用服务器中,ManagedResource 和 ManagedObject 都是管理资源的机制。下面我将以 JDBC 连接池为例,来举例说明 ManagedResource 和 ManagedObject 的使用。 在 GlassFish 中,JDBC 连接池是一资源,可以通过 ManagedResource 和 ManagedObject 来进行管理。在这个例子中,JDBC 连接池是 ManagedResource,而数据源是 ManagedObject。 具体来说,一个 JDBC 连接池可以有多个数据源,每个数据源都有一个名称、一个连接 URL、一个用户名、一个密码等属性。在 GlassFish 中,这些属性可以通过 ManagedObject 进行管理。 例如,我们可以通过以下命令在 GlassFish 中创建一个名为 myPool 的 JDBC 连接池: ``` asadmin create-jdbc-connection-pool --restype javax.sql.DataSource --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --property user=root:password=123456:url=jdbc:mysql://localhost:3306/test myPool ``` 在这个命令中,我们指定了连接池的资源类型、数据源类名、属性等信息。其中,--property 参数指定了数据源的属性,这些属性将作为 ManagedObject 进行管理。 一旦创建了 JDBC 连接池,我们就可以使用 JMX 来管理其中的数据源。例如,我们可以使用 JConsole 连接GlassFish 中的 MBean 服务器,然后找到 myPool 的 MBean,从而访问其中的 ManagedObject。 在 JConsole 中,我们可以找到 myPool 的 MBean,然后展开它,可以看到其中包含了多个 ManagedObject,每个 ManagedObject 都代表一个数据源。我们可以通过这些 ManagedObject 来查看和修改数据源的属性,例如修改用户名和密码等。 总之,ManagedResource 和 ManagedObject 是 GlassFish 中管理资源的两个不同层次,ManagedResource 是更高层次的资源管理机制,而 ManagedObject 是 ManagedResource 的一部分,用于实现具体的属性管理。在 GlassFish 中,JDBC 连接池就是一个很好的例子,演示了 ManagedResource 和 ManagedObject 的使用方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值