在J2EE中我們經常需要獲取到當前server的host和port等信息,比如在結構復雜的EJB程序中,進行一些remote調用,或者訪問本機中的一個webservice組件,在weblogic中,如果設置了ListenAddress,那么localhost這個主機名是不可訪問的,我們可以通過MBean去獲取到server的信息,以獲取server的ip和port為例:
  
  ObjectName rs = null;
 
MBeanServer mbeanServer= (MBeanServer)context.lookup("java:comp/env/jmx/runtime");
  String RUNTIME_SERVICE_MBEAN 
= "com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean";
  rs 
= new ObjectName(RUNTIME_SERVICE_MBEAN);
  ObjectName serverrt 
= (ObjectName) mbeanServer.getAttribute(rs, "ServerRuntime");

  String listenAddr 
= (String)mbeanServer.getAttribute(serverrt, "ListenAddress");
  String[] tempAddr 
= listenAddr.split("/");
  if (tempAddr.length == 1) {
     listenAddr 
= tempAddr[0];
  } 
else if (tempAddr[tempAddr.length - 1].trim().length() != 0) {
     listenAddr 
= tempAddr[tempAddr.length - 1];
  } 
else if (tempAddr.length > 2) {
     listenAddr 
= tempAddr[tempAddr.length - 2];
  }
  String listenPort 
= String.valueOf(mbeanServer.getAttribute(serverrt, "ListenPort"));

   由于ListenAddress獲取到的可能是weblogic的t3的url,所以應該對該address進行拆分,取最后一部分可用的地址即可。
   通過獲取的ServerReference,我們可以得到更多的server信息,可參考weblogic的相關文檔:
   http://download.oracle.com/docs/cd/E11035_01/wls100/wlsmbeanref/core/index.html
   http://e-docs.bea.com/wls/docs81/jmx/overview.html