前言:
基于Vert写的组件,其中在使用过程中碰到若干瓶颈问题,如果每个组件都采用日志方式,查看资源使用情况略微低廉点,所以采用了JMX来进行管理工作。
提到JMX,就必须按照JMX的规范,写一大堆的MBean、MXBean、Agent等,想起来就挺麻烦的,这个时候想起来Spring支持JMX,发现虽然原理差不多使用MXBeanServer.register,但是就是Spring写得东西就是让你配置特别简单。
import org.apache.log4j.Logger; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.jmx.export.annotation.ManagedResource; import org.springframework.stereotype.Component; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; @Aspect @Component @ManagedResource(objectName = "aop-vertx:name=VertxRedisAspect") public class VertxRedisAspect { private static Logger LOG = Logger.getLogger(VertxRedisAspect.class); private AtomicInteger redisPartitions = new AtomicInteger(0); public void sharePartitions(int count) { redisPartitions.set(count); } }
springXML的配置结构:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:ctx="http://www.springframework.org/schema/context" xmlns:int="http://www.springframework.org/schema/integration/jmx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/integration/jmx http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd"> <ctx:mbean-server/> <ctx:mbean-export default-domain="aop-vertx"/> <int:mbean-export default-domain="aop-vertx"/> <bean id="rmiRegistry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean" p:port="1099"/> <bean id="jmxServerConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="rmiRegistry" p:objectName="connector:name=rmi" p:serviceUrl="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/aop-vertx"/> </beans>
查看JConsole:
MBean下就有具体的操作和通知
个人结论:
不管你做中间件还是其它服务化的,最好都支持JMX support,不仅仅为了自己,也为了本身系统的健壮性。
相关推荐
标题"基于Spring+JMX+Tomcat实现资源动态管理"揭示了我们将讨论的核心技术栈。 首先,Spring是一个广泛使用的Java应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等功能,极大地简化了企业级应用的构建...
1. **启用JMX支持**:在Spring配置文件中,我们需要添加`<management>`标签来启用JMX支持。这将创建一个内嵌的MBeanServer,并配置相关的MBeanServerExporter。 2. **定义MBeans**:MBeans可以通过两种方式创建:...
Spring支持两种类型的MBean注册,对于标准MBean,可以使用`StandardMBean`类;对于非标准MBean,可以使用`MBeanExporter`来实现。 3. **基于接口和注解的MBean 注册**:接口方式需要创建一个Java接口,然后让MBean...
本文将深入探讨基于SpringCloud的微服务系统设计方案,涵盖核心组件、架构设计原则以及实施策略。 1. **微服务架构基础** 微服务架构是一种将单一应用程序分解为一组小型服务的方法,每个服务运行在其自己的进程中...
Spring Boot 是一个基于 Spring 框架的开源项目,旨在简化 Spring 应用的初始搭建及开发过程。Spring Boot 的目标是让开发者能够更加专注于业务逻辑的实现,而减少在配置、依赖管理等方面的投入。作为一个快速、轻便...
首先,Spring4是Spring框架的一个主要版本,引入了许多增强和改进,如支持Java 8的新特性、对WebSocket的支持以及对JMS和JMX的改进。在Spring4MVC中,我们可以通过注解驱动的配置来简化Web应用的开发,例如使用@...
本实例重点探讨的是基于Spring框架和Hessian协议的Web Service实现,这是一种轻量级、高效的远程调用解决方案。 首先,我们要理解Spring框架。Spring是Java领域的一个核心框架,它提供了全面的编程和配置模型,用于...
- **AOP实现**:Spring支持基于XML和注解的方式定义AOP切面,并提供了强大的切入点表达式语言。 - **@AspectJ支持**:Spring 2.5还支持使用@AspectJ注解编写切面类,这种方式更加灵活。 #### 六、数据访问支持 - **...
Java Management Extensions(JMX)是...例如,Spring框架提供了对JMX的集成支持,简化了在Spring应用中使用JMX的复杂性。总的来说,JMX因其灵活性、标准化和广泛的生态系统支持,成为了Java环境中不可或缺的管理工具。
5. **Test**:Spring Test模块提供测试支持,包括单元测试和集成测试,使得基于Spring的应用程序可以轻松进行测试驱动开发。 在Spring 4.3.7.RELEASE中,一些主要的改进和新增功能包括: 1. **Java 8支持**:这一...
Spring MVC是一个基于Servlet API构建的传统Web框架,而Spring WebFlux则是一个全新的响应式框架,支持非阻塞式处理,非常适合构建高响应性和高吞吐量的Web应用。 Spring还提供了WebSocket、SockJS和STOMP消息传递...
虽然Spring Boot不在4.2版本中直接引入,但它是基于Spring 4.x构建的,简化了Spring应用的初始设置和运行。Spring Boot的自动配置特性使得开发者能快速搭建项目,而无需过多关注配置细节。 5. **WebSocket支持** ...
5. **JMX支持**:提供了更好的Java Management Extensions(JMX)支持,使得Spring应用可以被管理和监控。 6. **WebFlow集成**:Spring Web Flow的集成更加紧密,方便创建复杂的用户交互流程。 7. **数据访问增强**...
Spring支持JMX,可以创建和注册MBeans(Managed Beans),提供对应用程序状态和操作的远程管理。 2. **slf4j**:Simple Logging Facade for Java是日志记录的抽象层,提供一个通用的日志API,允许用户在运行时选择...
9. **JMX支持**:Spring 3.0增加了对Java Management Extensions(JMX)的集成,使得Spring应用可以被管理和监控。 10. **更多数据库支持**:Spring 3.0改进了与多种数据库的兼容性,包括对JDBC、Hibernate、JPA等...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...
4. **Spring Context**:这是Spring框架的上下文模块,它扩展了Core Container的概念,引入了环境感知能力,如bean的国际化、事件传播以及对其他Spring模块(如JDBC、JMS、JMX等)的支持。 5. **Spring JDBC**:...
- **JMX支持**:增强了与Java Management Extensions (JMX)的集成,便于监控和管理Spring应用程序。 - **作为JCA适配器部署Spring应用上下文**:支持将Spring应用上下文作为JCA适配器进行部署,便于与其他企业级...