• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

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

    發布: 2007-6-22 07:38 | 作者:   | 來源:   | 查看: 75次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      對weblogic進行配置一般是通過console控制臺來進行配置的,但有的時候,需要自己在程序中需要進行動態的配置,比如增加隊列,顯示隊列,或者配置數據源;改寫寫config.xml,是可以達到動態配置的效果的,但bea不推薦這樣做,而且這樣做需要重新啟動服務器。

      怎么樣既動態的配置,又不重新啟動服務器呢?
      
      筆者查詢了weblogic的網站,了解到有兩種方法動態的配置(1)可以使用weblogic.Admin命令(文檔地址:http://e-docs.bea.com/wls/docs81/pdf/adminguide.pdf),(2)使用weblogic是用jmx編程來進行管理,通過jmx來對weblogic中的組件進行動態的配置。jmx的文檔地址:http://e-docs.bea.com/wls/docs81/pdf/jmx.pdf,如果使用這種方法,要將weblogic.jar配置到CLASSPATH環境變量中(因為weblogic的jmx類是放在weblogic.jar中的)
      
      本人寫了一份代碼,對Queue進行管理,包括JMSQueue的增加,刪除,和顯示,我的config.xml文件如下:
      <JMSServer Name="MessageCenterServer" Store="MyJmsSave"
      Targets="myserver" TemporaryTemplate="MyJMSTemplate">
      <JMSQueue CreationTime="1092359207895" JNDIName="CenterQueue"
      Name="CenterQueue" Template="MyJMSTemplate"/>
      <JMSQueue CreationTime="1092372641842" JNDIName="que00001"
      Name="que00001" Template="MyJMSTemplate"/>
      <JMSQueue CreationTime="1092372701067" JNDIName="que00002"
      Name="que00002" Template="MyJMSTemplate"/>
      <JMSQueue CreationTime="1093353883216" JNDIName="queue0003" Name="queue0003"/>
      </JMSServer>
      
      代碼如下:
      package messagecenter;
      
      /**
      * <p>Title: 消息中心</p>
      * <p>Description: 對消息隊列進行維護</p>
      * @author 張榮斌
      * @version 1.0
      */
      import java.util.*;
      import java.util.regex.Pattern;
      import javax.naming.Context;
      import weblogic.jndi.Environment;
      import weblogic.management.MBeanHome;
      import weblogic.management.runtime.ServletRuntimeMBean;
      import weblogic.management.runtime.ApplicationRuntimeMBean;
      import weblogic.management.runtime.WebAppComponentRuntimeMBean;
      import weblogic.management.runtime.ComponentRuntimeMBean;
      import weblogic.jms.extensions.*;
      import weblogic.management.RemoteMBeanServer;
      import javax.management.ObjectName;
      import javax.management.QueryExp;
      
      public class JMSQueueMaintain {
      public static final String WEBLOGIC_URL = "t3://localhost:7001";
      public static final String WEBLOGIC_USER="system";
      public static final String WEBLOGIC_PASSWORD = "12345678";
      public static final String WEBLOGIC_JMSSERVER = "MessageCenterServer"; //JMS服務器的名字,可以看到我的config.xml<JMSServer
      
      Name="MessageCenterServer" Store="MyJmsSave"這一行
      
      public JMSQueueMaintain() {
      }
      /**
      * 得到initial context
      */
      private static Context getCtx(String url,String username, String password) throws Exception{
      Environment env = new Environment();
      env.setProviderUrl(url);
      env.setSecurityPrincipal(username);
      env.setSecurityCredentials(password);
      return env.getInitialContext();
      }
      /**
      * 得到the Admin MBean Home
      */
      private static MBeanHome getMBeanHome(String url,String username, String password) throws Exception
      {
      return (MBeanHome) getCtx(url,username,password).lookup(MBeanHome.ADMIN_JNDI_NAME);
      }
      /**
      * 增加隊列
      */
      public static void addQueue(String queuename) throws Exception{
      Context ctx = getCtx(WEBLOGIC_URL,WEBLOGIC_USER,WEBLOGIC_PASSWORD);
      JMSHelper.createPermanentQueueAsync(ctx,WEBLOGIC_JMSSERVER,queuename,queuename);
      }
      /**
      * 刪除隊列
      */
      public static void deleteQueue(String queuename) throws Exception{
      Context ctx = getCtx(WEBLOGIC_URL,WEBLOGIC_USER,WEBLOGIC_PASSWORD);
      JMSHelper.deletePermanentQueue(ctx,WEBLOGIC_JMSSERVER,queuename);
      }
      /**
      * 得到所有的隊列名
      */
      public static Vector getQueuenames() throws Exception{
      Vector vect = new Vector();
      
      MBeanHome home = getMBeanHome(WEBLOGIC_URL,WEBLOGIC_USER,WEBLOGIC_PASSWORD);
      RemoteMBeanServer homeServer = null;
      QueryExp query = null;
      homeServer = home.getMBeanServer();
      Set JMSMBeans = homeServer.queryNames(new ObjectName("mydomain:JMSServer="+WEBLOGIC_JMSSERVER+",Type=JMSQueue,*"),
      
      query);
      //where "query" could be any object that implements the JMX
      //javax.managementQueryExp
      for (Iterator itr = JMSMBeans.iterator(); itr.hasNext(); ) {
      ObjectName mbean = (ObjectName)itr.next();
      if(!mbean.getKeyProperty("Name").equals("CenterQueue")){
      vect.addElement(mbean.getKeyProperty("Name"));
      }
      }
      
      return vect;
      }
      
      public static void main(String[] args) {
      JMSQueueMaintain JMSQueueMaintain1 = new JMSQueueMaintain();
      try{
      System.out.println(JMSQueueMaintain1.getQueuenames());
      JMSQueueMaintain1.addQueue("queue0005");
      JMSQueueMaintain1.deleteQueue("queue0003");
      System.out.println(JMSQueueMaintain1.getQueuenames());
      }catch(Exception e){
      
      }
      }
      
      }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>