第一步:寻找类加载器
sc -d org.springframework.context.ApplicationContext
因为可能存在很多个类加载器,每个classloader都有可能加载spring的ApplicationContext类,所以需要确定具体是哪个类加载器,找到其hashcode。
- class-info org.springframework.web.context.WebApplicationContext
- code-source /home/admin/appname/target/appname.war/WEB-INF/lib/spring-web-3.2.16.RELEASE.jar
- name org.springframework.web.context.WebApplicationContext
- isInterface true
- isAnnotation false
- isEnum false
- isAnonymousClass false
- isArray false
- isLocalClass false
- isMemberClass false
- isPrimitive false
- isSynthetic false
- simple-name WebApplicationContext
- modifier abstract,interface,public
- annotation
- interfaces org.springframework.context.ApplicationContext
- super-class
- class-loader +-org.apache.catalina.loader.WebappClassLoader
- +-java.net.URLClassLoader@5542c4ed
- +-sun.misc.Launcher$AppClassLoader@18b4aac2
- +-sun.misc.Launcher$ExtClassLoader@1cd072a9
- classLoaderHash 12dde243
第二步:查看bean
vmtool --action getInstances -c 12dde243 --className org.springframework.context.ApplicationContext --express 'instances[0].getBean("ipNotifySwitch2ReservePriceSyncItemConfig")' -x 3
- @IpNotifySwitch2ReservePriceSyncItemConfig[
- LOG=@Log4jLoggerAdapter[
- serialVersionUID=@Long[6182834493563598289],
- logger=@Logger[
- FQCN=@String[org.apache.log4j.Logger],
- class$org$apache$log4j$Logger=@Class[class org.apache.log4j.Logger],
- name=@String[com.example.demo.manager.base.config.IpNotifySwitch2ReservePriceSyncItemConfig],
- level=null,
- parent=@Logger[org.apache.log4j.Logger@3241a0a9],
- FQCN=@String[org.apache.log4j.Category],
- resourceBundle=null,
- repository=@Hierarchy[org.apache.log4j.Hierarchy@31bbea67],
- aai=null,
- additive=@Boolean[true],
- class$org$apache$log4j$Category=@Class[class org.apache.log4j.Category],
- ],
- FQCN=@String[org.slf4j.impl.Log4jLoggerAdapter],
- traceCapable=@Boolean[true],
- serialVersionUID=@Long[9044267456635152283],
- serialVersionUID=@Long[7535258609338176893],
- name=@String[com.example.demo.manager.base.config.IpNotifySwitch2ReservePriceSyncItemConfig],
- ],
- DIAMOND_GROUP=@String[demo],
- DIAMOND_DATAID=@String[com.example.demo.reservepricesync.itemids],
- itemIdSet=@HashSet[
- @Long[1111111],
- ],
- ]
第三步:调用bean的方法
vmtool --action getInstances -c 12dde243 --className org.springframework.context.ApplicationContext --express 'instances[0].getBean("ipNotifySwitch2ReservePriceSyncItemConfig").contains(11111L)' -x 3
@Boolean[false]