glassfish中amx跟jmx有什么区别
时间: 2023-12-31 13:05:24 浏览: 118
AMX(Application Management eXtensions)和JMX(Java Management Extensions)都是Java平台的管理扩展框架,但它们之间有一些区别:
1. 功能不同:JMX是Java SE平台的管理扩展框架,提供了一组API来管理Java应用程序和Java虚拟机。而AMX是GlassFish应用服务器的管理扩展框架,它是基于JMX的,提供了一组API来管理和监控GlassFish应用服务器。
2. 对象模型不同:JMX的对象模型是MBean(Managed Bean),而AMX的对象模型是GBean(GlassFish Managed Bean)。GBean是MBean的扩展,它提供了更丰富和更高级的管理功能,比如集群管理、负载均衡、故障恢复等。
3. 支持不同:JMX是标准的Java SE平台的管理扩展框架,可以在任何Java应用程序中使用。而AMX是GlassFish应用服务器的专有管理扩展框架,只能在GlassFish应用服务器中使用。
总的来说,JMX是Java平台的通用管理扩展框架,而AMX是GlassFish应用服务器的专有管理扩展框架,它们都有各自的优势和适用范围。
相关问题
说下glassfish中amx的技术原理
AMX(Application Management eXtensions)是GlassFish应用服务器的管理扩展框架,其技术原理主要包括以下几个方面:
1. 基于JMX:AMX是基于JMX(Java Management Extensions)的,JMX是Java平台的管理扩展框架,提供了一组API来管理Java应用程序和Java虚拟机。AMX通过扩展JMX,提供了一组API来管理和监控GlassFish应用服务器。
2. GBean:AMX的核心是GBean(GlassFish Managed Bean),它是MBean(Managed Bean)的扩展,提供了更丰富和更高级的管理功能。每个GBean都有唯一的名称和持久标识符,可以通过AMX API对GBean进行管理和监控。
3. 标准GBean:AMX提供了一组标准的GBeans,用于管理和监控GlassFish应用服务器的各个方面,比如JDBC连接池、JMS队列、EJB容器、Web容器等。这些标准GBean都是基于GlassFish应用服务器的内部实现,可以通过AMX API获取和修改它们的状态。
4. 自定义GBean:AMX还支持自定义GBean,可以通过定义XML文件和Java类来扩展AMX的功能。自定义GBean可以用于管理和监控应用程序的自定义组件,比如第三方库、自定义服务等。
5. JMX连接:AMX通过JMX连接到GlassFish应用服务器,获取和修改应用程序的状态。JMX连接可以通过本地或远程的方式进行,本地连接可以直接在应用程序中创建,远程连接需要通过JMX代理进行。
总的来说,AMX是基于JMX的管理扩展框架,提供了一组API和工具,用于管理和监控GlassFish应用服务器的各个方面。AMX的核心是GBean,它提供了更丰富和更高级的管理功能,可以通过标准或自定义的GBean来管理和监控应用程序的状态。
详细说下Glassfish中amx的api使用
在Glassfish中,AMX(Administration Management eXtensions)提供了一组API,用于与Glassfish管理子系统进行交互。这些API可以帮助我们编写自定义的管理工具或监控应用程序的运行状态。
下面是使用Glassfish中AMX API的步骤:
1. 获取MBeanServerConnection
AMX API是通过JMX(Java Management Extensions)来实现的,因此我们需要通过JMX获取MBeanServerConnection对象。可以通过JMXConnectorFactory来获取MBeanServerConnection对象,具体代码如下:
```
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(url);
MBeanServerConnection connection = connector.getMBeanServerConnection();
```
2. 获取AMX根对象
AMX API通过AMX根对象来管理所有的子系统。可以通过MBeanServerConnection获取AMX根对象,具体代码如下:
```
ObjectName amxRoot = new ObjectName("amx:rootType=amx");
AMXRootMBean amxRootProxy = JMX.newMBeanProxy(connection, amxRoot, AMXRootMBean.class);
```
3. 获取子系统对象
通过AMX根对象获取子系统对象,例如获取Web子系统对象的代码如下:
```
WebModuleMBean webModule = amxRootProxy.getWebModule("webModuleName");
```
4. 调用子系统方法
获取子系统对象后,就可以通过调用其方法来管理或监控子系统。例如,可以使用WebModuleMBean来获取Web应用程序的上下文路径,具体代码如下:
```
String contextPath = webModule.getContextPath();
```
总之,通过使用Glassfish中AMX API,我们可以编写自定义的管理工具或监控应用程序的运行状态。需要注意的是,不同子系统的API可能会有所不同,因此在使用API时需要参考相应的文档。
阅读全文