簡體   English   中英

如何在Weblogic服務器上訪問ehcache mbeans

[英]How to access ehcache mbeans on weblogic server

在我的weblogic服務器中,部署了ehcache,我需要通過java編程從該程序中獲取ehcahe mbeans。通過JMX,我無法連接。如何獲得這些自定義mbeans?

我試圖通過weblogic t3協議獲取mbeans

public class Test
{

    private String hostName = "";
    private String port = "";
    private String userName = "";
    private String password = "";
    private String connectorURL = "service:jmx:rmi:///jndi/rmi://{0}:{1}/jmxrmi";
    private JMXConnector jmxc = null;
    public static void main(String []args) throws Exception
    {
        Test t = new Test();
        t.hostName = args[0];
        System.out.println(args[1]);
        t.port = args[1];
        t.userName = args[2];
        t.password = args[3];
        t.jmxc = t.initConnection(); 




        MBeanServerConnection mbsc = t.jmxc.getMBeanServerConnection();
        System.out.println(mbsc);
        Set<ObjectInstance>  st =mbsc.queryMBeans(new ObjectName("net.*:*"), null);
        System.out.println(st.toString());
        Iterator<ObjectInstance> it = st.iterator();

        while(it.hasNext())
        {
            System.out.println(it.next());
        }


        t.closeConnection();
    }


    private  JMXConnector initConnection() 
    {
        System.out.println("initiate connection");


        JMXServiceURL serviceURL = null;

        try 
        {
            String jndiroot = "/jndi/";
            String mserver = "weblogic.management.mbeanservers.domainruntime";

            int port1 = Integer.parseInt(port);
            serviceURL = new JMXServiceURL("t3", hostName, port1, jndiroot + mserver);

            Hashtable h = new Hashtable();
            h.put(Context.SECURITY_PRINCIPAL, userName);
            h.put(Context.SECURITY_CREDENTIALS, password);
            h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,  "weblogic.management.remote");

            long lngJmxClientWTO = 10000;

            h.put("jmx.remote.x.request.waiting.timeout", lngJmxClientWTO );



            return JMXConnectorFactory.connect(serviceURL, h);
        }
        catch (Exception e)
        {
             e.printStackTrace();
             return null;
        }

   }


  /**
    * This method closes client connection with server 
    * @throws IOException
    */
   public void closeConnection() 
   {

       if(jmxc != null)
       {
           try
           {
               jmxc.close();
           }
           catch (IOException e) {
               jmxc = null;
           }
       }
   }
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Ehcache;

CacheManager manager = CacheManager.newInstance();
Ehcache cache = manager.getEhcache("Some cache name here..."); //<-- PLEASE EDIT THE CACHE NAME...

我不知道這是否是您要的...。

獲取cache ,就可以使用它了,就像Java Map


您可以遵循Ehcache文檔,以了解如何以編程方式獲取遠程緩存。 本質上,您將需要創建CacheManager可以訪問的配置(或配置文件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM