jmx 基础

猛击 这里

一些其他资料

2012/2/3补充:
总结一些发现的小细节:
1. MBean中无法直接用@EJB annotation来注入其他EJB,哪怕把它自身标记为@Stateless;用jndilookup可行。
2. MBean如果被标记为@Stateless,可以被其他EJB直接用@EJB注入
3. EJB3.1新加的@Singleton跟@Stateless两者不能同时存在,否则会引起两次加载冲突。
4. MBean如果被标为@Singleton,那么它的field的值即使在JMX Console里面更新掉,在其他用@EJB方法注入该MBean的地方,该field的值 依然保持不变!而用JNDILOOKUP查到的实例的值才是最新的!所以最好不要把MBean做成单例的ejb来保存数据,可以在MBean中去更新另一个单例ejb,用该ejb来保存数据。而该EJB在其他地方用@EJB注入后的值是更新后的。

下面是一个查找MBean的client:

import java.util.Properties; import javax.management.JMX; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.naming.InitialContext; import com.test.bean.TestSingletonRemoteIfc; import com.test.mbean.HelloWorldMBean;

/** * */ public class Test { /** * @param args */ public static void main(String[] args) { while(true) { try { //Get RMIAdaptor Object Properties pro = new Properties(); pro.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); pro.setProperty("java.naming.provider.url", "jnp://localhost:1099"); pro.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); InitialContext ic = new InitialContext(pro);  

// find a singleton bean to test TestSingletonRemoteIfc singleton = (TestSingletonRemoteIfc)ic.lookup("TestSarEar/TestSingletonBean/remote-com.test.bean.TestSingletonRemoteIfc"); System.out.println("EJB1: " + singleton.getValue()); System.out.println("EJB2: " + singleton.getSuffix());  

// find MBean //RMIAdaptor server = (RMIAdaptor) ic.lookup("jmx/rmi/RMIAdaptor"); MBeanServerConnection connection = (MBeanServerConnection) ic .lookup("jmx/invoker/RMIAdaptor"); HelloWorldMBean myMBean = (HelloWorldMBean) JMX.newMBeanProxy( connection, new ObjectName("com.test.mbean:service=HelloWorld"), HelloWorldMBean.class); System.out.println("JNDI: " + myMBean.printGreeting()); Thread.sleep(1000); } catch (Exception e) { System.out.println("Damn!!"); e.printStackTrace(); } } } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值