熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

使用jmx對weblogic進行動態的配置(源代碼)

2022-06-13   來源: Java開源技術 

  對weblogic進行配置一般是通過console控制台來進行配置的但有的時候需要自己在程序中需要進行動態的配置比如增加隊列顯示隊列或者配置數據源改寫寫configxml是可以達到動態配置的效果的但bea不推薦這樣做而且這樣做需要重新啟動服務器
  怎麼樣既動態的配置又不重新啟動服務器呢?
  
  筆者查詢了weblogic的網站了解到有兩種方法動態的配置()可以使用weblogicAdmin命令(文檔地址)使用weblogic是用jmx編程來進行管理通過jmx來對weblogic中的組件進行動態的配置jmx的文檔地址如果使用這種方法要將weblogicjar配置到CLASSPATH環境變量中(因為weblogic的jmx類是放在weblogicjar中的)
  
  本人寫了一份代碼對Queue進行管理包括JMSQueue的增加刪除和顯示我的configxml文件如下
  <JMSServer Name=MessageCenterServer Store=MyJmsSave
  Targets=myserver TemporaryTemplate=MyJMSTemplate>
  <JMSQueue CreationTime= JNDIName=CenterQueue
  Name=CenterQueue Template=MyJMSTemplate/>
  <JMSQueue CreationTime= JNDIName=que
  Name=que Template=MyJMSTemplate/>
  <JMSQueue CreationTime= JNDIName=que
  Name=que Template=MyJMSTemplate/>
  <JMSQueue CreationTime= JNDIName=queue Name=queue/>
  </JMSServer>
  
  代碼如下
  package messagecenter;
  
  /**
  * <p>Title: 消息中心</p>
  * <p>Description: 對消息隊列進行維護</p>
  * @author 張榮斌
  * @version
  */
  import javautil*;
  import javautilregexPattern;
  import javaxnamingContext;
  import weblogicjndiEnvironment;
  import weblogicmanagementMBeanHome;
  import weblogicmanagementruntimeServletRuntimeMBean;
  import weblogicmanagementruntimeApplicationRuntimeMBean;
  import weblogicmanagementruntimeWebAppComponentRuntimeMBean;
  import weblogicmanagementruntimeComponentRuntimeMBean;
  import weblogicjmsextensions*;
  import weblogicmanagementRemoteMBeanServer;
  import javaxmanagementObjectName;
  import javaxmanagementQueryExp;
  
  public class JMSQueueMaintain {
  public static final String WEBLOGIC_URL = t://localhost:;
  public static final String WEBLOGIC_USER=system;
  public static final String WEBLOGIC_PASSWORD = ;
  public static final String WEBLOGIC_JMSSERVER = MessageCenterServer; //JMS服務器的名字可以看到我的configxml<JMSServer
  
  Name=MessageCenterServer Store=MyJmsSave這一行
  
  public JMSQueueMaintain() {
  }
  /**
  * 得到initial context
  */
  private static Context getCtx(String urlString username String password) throws Exception{
  Environment env = new Environment();
  envsetProviderUrl(url);
  envsetSecurityPrincipal(username);
  envsetSecurityCredentials(password);
  return envgetInitialContext();
  }
  /**
  * 得到the Admin MBean Home
  */
  private static MBeanHome getMBeanHome(String urlString username String password) throws Exception
  {
  return (MBeanHome) getCtx(urlusernamepassword)lookup(MBeanHomeADMIN_JNDI_NAME);
  }
  /**
  * 增加隊列
  */
  public static void addQueue(String queuename) throws Exception{
  Context ctx = getCtx(WEBLOGIC_URLWEBLOGIC_USERWEBLOGIC_PASSWORD);
  JMSHelpercreatePermanentQueueAsync(ctxWEBLOGIC_JMSSERVERqueuenamequeuename);
  }
  /**
  * 刪除隊列
  */
  public static void deleteQueue(String queuename) throws Exception{
  Context ctx = getCtx(WEBLOGIC_URLWEBLOGIC_USERWEBLOGIC_PASSWORD);
  JMSHelperdeletePermanentQueue(ctxWEBLOGIC_JMSSERVERqueuename);
  }
  /**
  * 得到所有的隊列名
  */
  public static Vector getQueuenames() throws Exception{
  Vector vect = new Vector();
  
  MBeanHome home = getMBeanHome(WEBLOGIC_URLWEBLOGIC_USERWEBLOGIC_PASSWORD);
  RemoteMBeanServer homeServer = null;
  QueryExp query = null;
  homeServer = homegetMBeanServer();
  Set JMSMBeans = homeServerqueryNames(new ObjectName(mydomain:JMSServer=+WEBLOGIC_JMSSERVER+Type=JMSQueue*)
  
  query);
  //where query could be any object that implements the JMX
  //javaxmanagementQueryExp
  for (Iterator itr = erator(); itrhasNext(); ) {
  ObjectName mbean = (ObjectName)itrnext();
  if(!mbeangetKeyProperty(Name)equals(CenterQueue)){
  vectaddElement(mbeangetKeyProperty(Name));
  }
  }
  
  return vect;
  }
  
  public static void main(String[] args) {
  JMSQueueMaintain JMSQueueMaintain = new JMSQueueMaintain();
  try{
  Systemoutprintln(JMSQueueMaintaingetQueuenames());
  JMSQueueMaintainaddQueue(queue);
  JMSQueueMaintaindeleteQueue(queue);
  Systemoutprintln(JMSQueueMaintaingetQueuenames());
  }catch(Exception e){
  
  }
  }
  
  }

From:http://tw.wingwit.com/Article/program/Java/ky/201311/28614.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.