国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

WebLogic Server 9.0 應(yīng)用配置管理接口

2019-11-18 12:43:35
字體:
供稿:網(wǎng)友

  WLS 9可以說是自WLS 6.0以來最重大的一次改革,不僅增加了許多功能,而且對許多舊有的子系統(tǒng)重新進(jìn)行了設(shè)計。為了集成第三方治理系統(tǒng),WLS提供了與JMX完全兼容的標(biāo)準(zhǔn)接口來執(zhí)行所有的治理操作。
  
  在WLS中,每個Domain中使用一系列Mbean負(fù)責(zé)維護(hù)該Domain的配置。這些MBean對內(nèi)部的各個子系統(tǒng)是樹狀組織形式。對外則提供JMX作為訪問接口。此外還有Console,WLST,WLConfig等治理工具利用Mbean來治理Domain。在WLS 9中完全重寫了JMX子系統(tǒng),從而代替了從6以來的這部分框架。新的JMX框架支持可靠的批量操作,提高性能,并增加對更多J2EE標(biāo)準(zhǔn)的支持。包括JSR 77,JMX 1.2以及JSR 160等。
  
  此外WLS 9中包含了另一套和JMX類似的API,稱為J2EE Management API,用于實現(xiàn)J2EE Management data model。后面我會通過一個例子對J2EE Management API進(jìn)行更深入的討論。
  
  本文所有代碼通過WLS 9.0測試,使用Eclipse 3.1.0開發(fā)。
  
  本文沒有包括用JMX治理安全Realm和使用自定義MBean。自定義MBean將在另一篇文章中討論。
  
  一.JMX功能介紹
  
  WLS 9中JMX的新特性主要包括如下六方面:
  
  1。由于JMX新版本中遠(yuǎn)程API的發(fā)布(JSR 160),遠(yuǎn)程JMX客戶端可以使用標(biāo)準(zhǔn)的JMX remote API 1.0來訪問WLS上的JMX代理。以前可以通過weblogic.management.MBeanHome接口訪問WLS Mbean的類型安全存根接口。在9中這個接口是不贊成的。假如你的JMX客戶端應(yīng)用中使用了類型安全接口,建議升級到標(biāo)準(zhǔn)的JMX模型上。但假如使用舊的MBeanHome 接口,仍然可以被新的JMX兼容。
  
  2。新JMX框架中修改Domain配置的過程類似二階段事務(wù)提交機(jī)制。所有“修改”操作會先臨時保存到Administration Server的Edit MBeans中。然后這些“修改”會發(fā)布到各個Server上。假如任何Server不能執(zhí)行這個修改操作,整個修改過程將回滾。Mbean的發(fā)布使用了WLS的部署框架,因此部署和配置使用相同的渠道。
  
  3。新的MBean數(shù)據(jù)模型。由于整個Domain配置是由一個xml文檔來描述,因此Mbean是以等級結(jié)構(gòu)來表示這個文檔的。每個Domain有一個類型為DomainMBean的MBean來表示這個Domain,該Mbean中又有屬性來訪問Domain的Server和Cluster。當(dāng)調(diào)用一個MBean是通嗨芆bjectName on =
  
  javax.management.MBeanServerConnection.getAttribute (object-name, attribute);的方法。
  
  4。新的MBean Server結(jié)構(gòu)。Administration Server必須維護(hù)三個MBean server,每個Server用于訪問特定種類的Mbean。Edit MBean Server用于訪問Domain中可編輯配置的Mbean;Domain Runtime MBean Server用于訪問該Domain的所有運(yùn)行時Mbean和只讀配置的Mbean;Runtime MBean Server用于訪問Administration Server的運(yùn)行時Mbean和只讀配置的Mbean。對于每個授管Server只維護(hù)各自的Runtime MBean Server用于訪問該Server上的運(yùn)行時Mbean和只讀配置的Mbean。JMX客戶端使用J2EE的標(biāo)準(zhǔn)接口
  
  javax.remote.access來訪問在上述MBean servers上注冊的Mbean。此外還有第四種作為可選的:JVM's platform MBean Sever,用于監(jiān)控JVM的信息,可存在于Administration Server或被管Server。
  
  5。在WLS 9中,開發(fā)者可以把描述應(yīng)用服務(wù)的描述符文件打包到應(yīng)用的EAR文件中去。因此當(dāng)部署這個應(yīng)用時WLS會按照部署描述符文件創(chuàng)建一個實例代表這個服務(wù)。因此WLS中許多子系統(tǒng)已經(jīng)不贊成使用舊的JMX接口轉(zhuǎn)而升級到新的Mbean。
  
  6。注冊自定義MBean。以前假如需要注冊自定義Mbean,則需要使用自己的Mbean Server或通過weblogic.management.RemoteMBeanServer接口把MBean注冊到WLS的MBean Server上。對于9c除了可以創(chuàng)建自己的MBean Server外,還可以將自定義Mbean注冊到Runtime MBean server上并通過JNDI訪問,或者將自定義Mbean注冊到JVM's platform MBean server上。
  
  二.理解WLS Mbean
  
  按照Mbean是用于監(jiān)控或配置,分為Runtime MBeans,Configuration MBeans和Configuration MBeans for system modules。Runtime MBeans只包括Server和其資源的運(yùn)行時狀況,因此只在Server運(yùn)行期內(nèi)存活。Configuration MBeans包括Server和其資源的配置,因此保存在Domain的XML配置文檔中。
  
  Configuration MBeans for system modules包括各種系統(tǒng)級Service的配置信息。Domain中每個Server有自己的一份Domain配置文件。當(dāng)該Server啟動后或者做任何改動時會和Administration Server連絡(luò)來更新其配置文件。即使啟動時無法和Administration Server連絡(luò),仍然可以成功啟動。此外對Administration Server,在Domain的config/pending路經(jīng)下還有一份可編輯的Domain配置文檔拷貝用于保存JMX client端所作的中間修改狀態(tài)。
  
  在WLS中MBean是以樹狀組織的,對應(yīng)到Domain的XML配置文檔結(jié)構(gòu)。每個Mbean用一個唯一的ObjectName來注冊到MBean Server上。按照約定,子MBean的ObjectName要包含父Mbean的ObjectName中的一部分:
  
  com.bea:Name=name,Type=type[,TypeOfParentMBean=NameOfParentMBean]
  [,TypeOfParentMBean1=NameOfParentMBean1]...
  
  其中com.bea是這個Mbean所屬于的JMX Domain名。對于非自定義的MBean,這個Domain Name總是com.bea。此后這些屬性名值對的次序無所謂。JMX答應(yīng)從本地或遠(yuǎn)程訪問MBean Server。假如從本地訪問,JMX客戶端可以通過JNDI獲得javax.management.MBeanServer接口,并還可以訪問創(chuàng)建注冊自定義的MBean。假如遠(yuǎn)程訪問需要包含WL_HOME/lib/wljmxclient.jar包,獲得javax.management.MBeanServerConnection接口,但不能操作自定義Mbean。
  
  三.使用JMX的例子
  
  下面用一個例子來說明如何使用JMX訪問Mbean來修改Domain配置。
  import java.io.IOException;
  import java.net.MalformedURLException;
  import java.util.Hashtable;
  import java.util.Map;
  import javax.management.Attribute;
  import javax.management.MBeanServerConnection;
  import javax.management.ObjectName;
  import javax.management.remote.JMXConnector;
  import javax.management.remote.JMXConnectorFactory;
  import javax.management.remote.JMXServiceURL;
  import javax.naming.Context;
  public class JMXSample {// JMXSample class definition - do not copy this linePRivate static String USERNAME = "weblogic";
  private static String PASSWord = "weblogic";
  private static String PROTOCOL = "t3";
  private static String HOSTNAME = "localhost";
  private static int PORT = 7001;
  private static String JNDI = "/jndi/";
  private static String RUNTIME_URI = "weblogic.management.mbeanservers.runtime";
  private static String EDIT_URI = "weblogic.management.mbeanservers.edit";
  private static String RUNTIME_SERVICE = "com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean";
  private static String EDIT_SERVICE = "com.bea:Name=EditService,Type=weblogic.management.mbeanservers.edit.EditServiceMBean";
  private MBeanServerConnection runtimeServiceConnection = null;
  private MBeanServerConnection editServiceConnection = null;
  public static void main(String[] args) {JMXSample jmx = new JMXSample();
  jmx.runtests();
  }//連到特定Server的特定MBean Server上。
  //WLS9支持JDK 1.5,所以我這里用上了Tiger的新特性,泛型public MBeanServerConnection getConnection(String URI) throws IOException,MalformedURLException {//描述MBean Server的地址JMXServiceURL serviceURL = new JMXServiceURL(PROTOCOL, HOSTNAME, PORT, JNDI + URI);
  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");
  //構(gòu)造JMXConnector對象。JMXConnector connector = JMXConnectorFactory.connect(serviceURL, (Map)h);
  //連接到MBean ServerMBeanServerConnection connection = connector.getMBeanServerConnection();
  return connection;
  }//包括兩類操作,前面一部分是讀取Domain配置,后面一部分是修改Domain配置。public void runtests() {try {runtimeServiceConnection = getConnection(RUNTIME_URI);
  editServiceConnection = getConnection(EDIT_URI);
  ObjectName runtimeON = new ObjectName(RUNTIME_SERVICE);
  ObjectName editON = new ObjectName(EDIT_SERVICE);
  // 獲得 serverObjectName server = (ObjectName) runtimeServiceConnection.getAttribute(runtimeON, "ServerConfiguration");
  // 獲得并顯示當(dāng)前 server 名System.out.println("SERVER NAME "+ runtimeServiceConnection.getAttribute(runtimeON,"ServerName"));
  // 獲得并顯示 domain 名ObjectName domain = (ObjectName) runtimeServiceConnection.getAttribute(runtimeON, "DomainConfiguration");
  System.out.println("DOMAIN NAME "+ runtimeServiceConnection.getAttribute(domain, "Name"));
  // Since we have the server already we will just

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长宁县| 章丘市| 岳西县| 怀来县| 佛学| 沅江市| 内丘县| 天门市| 静宁县| 大姚县| 江都市| 汝南县| 庆元县| 始兴县| 怀宁县| 墨竹工卡县| 宁陕县| 隆德县| 黑水县| 乌兰浩特市| 同心县| 牙克石市| 和平区| 昌邑市| 米泉市| 和静县| 安多县| 金山区| 明光市| 扎鲁特旗| 东光县| 体育| 成都市| 什邡市| 渑池县| 台安县| 平利县| 鄂托克前旗| 象州县| 靖西县| 靖宇县|