国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
針對開發(fā)人員的WebLogic Server應(yīng)用管理,第 6 部分使用 JMX 自定義應(yīng)用程序管理
本文是針對開發(fā)人員的WebLogic Server應(yīng)用管理的最后一篇。第一部分側(cè)重 WebLogic Server 管理概念和術(shù)語,以及打包應(yīng)用程序和設(shè)置、配置 WebLogic Server 域的圖形化工具。

第一部分側(cè)重 WebLogic Server 管理概念和術(shù)語,打包應(yīng)用程序和設(shè)置、配置 WebLogic Server 域的圖形化工具。第二篇文章著眼于可用的應(yīng)用程序部署、運行時管理和不需要 JMX 知識的監(jiān)控工具。第三篇文章討論 JMX 和 WebLogic Server 8.1 JMX 基礎(chǔ)結(jié)構(gòu)的基本概念和術(shù)語,并介紹如何使用 WebLogic Server 8.1 隨附的特定于 JMX 的工具。第四篇文章側(cè)重于編寫自定義 Java 應(yīng)用程序的基礎(chǔ)知識,這些應(yīng)用程序使用 JMX 配置、管理基于 WebLogic Server 8.1 的應(yīng)用程序。上個月,我們通過展示如何使用通知工具創(chuàng)建通知偵聽器、監(jiān)控器和定時器,繼續(xù)討論了 JMX 編程。

本月,我們將描述如何通過 JMX 和 WebLogic Admin Console 展示您自己的管理功能。我們從討論您選擇使用 JMX 裝配應(yīng)用程序的原因入手。然后,討論使用標準、動態(tài)和模型 MBean 裝配應(yīng)用程序的基礎(chǔ)知識。最后介紹如何通過 WebLogic Console 安置您的 MBean。

選擇使用 JMX 進行裝配
您為什么考慮使用 JMX 裝配應(yīng)用程序?如果您閱讀了這個系列中前面的文章,您應(yīng)該已經(jīng)知道了這個問題的答案。如果您還沒有閱讀,這個答案非常簡單:使用 JMX 裝配的應(yīng)用程序代碼允許在 WebLogic Server 中監(jiān)控和管理應(yīng)用程序的配置及運行時信息,就像其他資源一樣。

上個月,我們展示了 JMX 通知和監(jiān)控器怎樣允許應(yīng)用程序動態(tài)地監(jiān)控和跟蹤任意數(shù)量的 MBean 值。通過 MBean 展示應(yīng)用程序信息可簡化關(guān)聯(lián)應(yīng)用程序狀態(tài)和其他 MBean(如,提供關(guān)于組成產(chǎn)品環(huán)境的各種服務(wù)器和應(yīng)用程序組件統(tǒng)計信息的 WebLogic MBeans)的狀態(tài)。

最后,使用 JMX 裝配代碼允許您通過 WebLogic Admin Console 展示應(yīng)用程序的監(jiān)控和管理功能。

您能通過 JMX 展示那些功能呢?答案是您希望能管理的應(yīng)用程序的任何屬性或功能都可以。例如,一個應(yīng)用程序可能使用一個日志框架,允許在運行時動態(tài)地改變?nèi)罩炯墑e。使用 JMX 裝配日志框架來展示日志級別,可以相對簡單地實現(xiàn):

·         通過標準的 JMX 機制動態(tài)地修改日志級別。

·         當觀察到其他 MBean 上的某些其他條件時,使用 JMX 通知和監(jiān)控器來修改日志級別。

·         通過 WebLogic Console 展示日志框架配置和/或運行時信息。

現(xiàn)在,您已經(jīng)知道自己希望展示哪種功能,需要做的下一個決定就是希望實現(xiàn)哪種類型的 MBean。JMX 提供了一些實現(xiàn) MBean 的可選方法:

·         標準 MBean

·         動態(tài) MBean

·         模型 MBean

我們將使用同一個簡單示例來一起說明這三個方法(示例可以在 www.sys-con.com/weblogic/sourcec.cfm 上找到)。我們的示例使用一個簡單的 Java 類來模擬一個日志框架并展示當前的日志級別和通過 MBean 寫入的日志記錄數(shù)。我們包括了一個簡單的 Web 應(yīng)用程序,允許您給日志(在我們的示例中,指 stdout)撰寫消息。這些示例演示了一個簡單的案例,在該案例中,開發(fā)人員希望用一種系統(tǒng)管理員或操作員能夠以輕松監(jiān)控的方式呈現(xiàn)他們應(yīng)用程序一些部分的狀態(tài)和使用信息。稍后,我們將展示如何通過 WebLogic Admin Console 展示這一功能。

使用標準 MBean 進行 JMX 裝配
實現(xiàn)標準 MBean 很簡單。在開始前,必須確保 MBean 接口類和 MBean 實現(xiàn)類名稱遵守適用于所有標準 MBean 的特定模式:MBean 接口類名稱必須和去掉后綴 MBean 的 MBean 實現(xiàn)類名稱一樣。在我們的例子中,MBean 實現(xiàn)類名稱是 wldj.standard.Logger,因此,MBean 接口類名稱是 wldj.standard.LoggerMBean?,F(xiàn)在您已經(jīng)為創(chuàng)建標準 MBean 做好了準備。

首先,創(chuàng)建一個通過方法定義提供公開 JMX 屬性和操作的接口類。就像第3部分中討論的,屬性通過遵守標準 JavaBean 格式的 getter 和/或 setter 方法來公開:

public Bar getFoo();
public void setFoo(Bar newValue);

接口中公開的不遵守這些約定的所有其他方法被認為是 JMX 操作。我們的 LoggerMBean 接口公開了以下 JMX 屬性和操作:

Read-Write Attributes:
LoggingLevel

Read-Only Attributes:
DebugLogWrites
InfoLogWrites
WarningLogWrites
ErrorLogWrites
EmergencyLogWrites
TotalLogWrites

Operations:
void resetLogWriteStatistics()

下一步,創(chuàng)建 MBean 實現(xiàn)類來實現(xiàn)所定義的 MBean 接口。記住,接口只需要公開您希望 JMX 應(yīng)用程序管理的方法。

最后,需要在應(yīng)用程序中包含初始化代碼來用 MBeanServer 創(chuàng)建和注冊 MBean。在我們的例子中,使用了一個 WebLogic Startup 類在 MBean 服務(wù)器中創(chuàng)建并注冊MBean,像 LoggerStartup 類的代碼段中展示的一樣(參見清單 1)。

這種方法的主要限制是它不允許公布這些屬性的額外描述信息。JMX 1.2 通過標準 MBean 基類來處理這個限制,您能夠擴展和使用其來提供額外信息。然而,您必須等到 BEA WebLogic Server 的下一個發(fā)行版才能利用這個功能。

使用動態(tài) MBean 進行 JMX 裝配
實現(xiàn)動態(tài) MBean 有一點復(fù)雜,但提供了更多的靈活性,您實際上可以公開運行時定義的 JMX 屬性和操作,而不是編譯期間的。為了實現(xiàn)動態(tài) MBean,您的 MBean 實現(xiàn)類必須實現(xiàn) DynamicMBean 接口,包括:

·         提供一個 MBeanInfo 對象,它提供關(guān)于 MBean 所提供的 JMX 屬性、操作和通知的詳細信息。

·         實現(xiàn) getAttribute() 和 setAttribute() 方法,為 MBean 的 JMX 屬性提供讀寫能力。

·         實現(xiàn) invoke() 方法,解釋方法和屬性類型,并執(zhí)行所需的 JMX 操作。

·         如果 MBean 發(fā)送 JMX 通知,則實現(xiàn) NotificationBroadcaster 接口。

·         如果 MBean 需要生命周期回調(diào)來創(chuàng)建和/或清除 MBean 狀態(tài),則實現(xiàn)MBeanRegistration 接口。

在我們的例子中,實現(xiàn)了 DynamicMBean 接口方法。該實現(xiàn)很簡單,因此我們這里不仔細討論其細節(jié)(參閱示例代碼)。

動態(tài) MBean 提供最大的靈活性,并允許使用整個 JMX 功能。就如示例演示的那樣,它也需要比實現(xiàn)標準 MBean 更多的工作。怎樣才能既保持動態(tài) MBean 的靈活性,同時又減少復(fù)雜性呢?模型 MBean 顯著地減少了實現(xiàn)動態(tài) MBean 所需的工作量。

使用模型 MBean 進行 JMX 裝配
模型 MBean 提供和動態(tài) MBean 類似的功能,但顯然更易于實現(xiàn)。使用模型 MBean 的大多數(shù)工作是構(gòu)建元數(shù)據(jù),此元數(shù)據(jù)用于描述 MBean 將公開的屬性、構(gòu)造函數(shù)、操作和通知,以及它們?nèi)绾闻c正在裝配的應(yīng)用程序類相關(guān)。模型 MBean 的許多好處來自于其無需修改就能適應(yīng)已存在的實現(xiàn)代碼的能力。

我們選擇將創(chuàng)建包含元數(shù)據(jù)的 ModelMBeanInfo 對象的邏輯放在Logger類中。我們能輕易地把它放在 LoggerStartup 類中,因此 Logger 類將沒有任何 JMX 代碼。在我們的示例中,我們使用的 ModelMBeanAttributeInfo 類構(gòu)造函數(shù)版本假定要公布的 JMX 屬性在被裝配的類上具有標準的 getter 和 setter 方法名稱。

模型 MBean 也支持通過 Descriptor 類指定被裝配類上的不同方法名稱來更改屬性和操作的名稱。該描述符包含一個名稱-值對的列表。JMX 1.0 規(guī)范定義了一套必需的和可選的描述符字段。例如,設(shè)置描述符中的 currencyTimeLimit 字段會使模型 MBean 實現(xiàn)類緩存指定時段的屬性值。這種靈活性在獲取涉及遠程調(diào)用的值或查詢后端系統(tǒng)時非常重要。因為我們的類從標準 MBean 開發(fā),所以不需要使用描述符功能。

一旦組裝了 ModelMBeanInfo 對象,我們只需要使用 RequiredModelMBean 類創(chuàng)建一個 ModelMBean 的實例,配置它以裝配我們的 Logger類,并使用 MbeanServer 注冊它(參見清單2)。

盡管創(chuàng)建和組裝 ModelMBeanInfo 對象的代碼比創(chuàng)建標準 MBean 需要更多工作,它與實現(xiàn) DynamicMBean.getMBeanInfo() 方法是等價的。由于這項工作,您獲得了動態(tài) MBean 的靈活性,不需要在 DymanicMBean 接口中實現(xiàn)其他指派方法。

WebLogic Admin Console 中公開 MBean
WebLogic Admin Console 提供了一個擴展機制,允許向控制臺中添加頁面來公開應(yīng)用程序的 MBeans。其基本步驟為:

1.     實現(xiàn)擴展 weblogic.management.console.extensibility.Extension 類的 Java 類,并實現(xiàn) weblogic.management.console.extensibility.NavTreeExtension 接口。

2.     編寫 JSP 來描述您希望添加到控制臺的導航樹的節(jié)點。

3.     編寫一套 JSP 頁面,當用戶從導航樹中選擇節(jié)點時,這些頁面出現(xiàn)在控制臺的右邊部分。

4.     創(chuàng)建一套 Web 應(yīng)用程序部署描述符,告訴服務(wù)器該 Web 應(yīng)用程序是一個控制臺擴展。

5.     打包 Web 應(yīng)用程序,部署 Web 應(yīng)用程序,就像對任何其他應(yīng)用程序做的那樣。

在編寫 Java 類時,要實現(xiàn)的最重要方法是 getNavExtensionFor() 方法。傳遞的參數(shù)是一個 MBean 引用,它指明導航樹中的不同節(jié)點。應(yīng)用程序?qū)@些調(diào)用的響應(yīng)決定新節(jié)點在導航樹中出現(xiàn)的位置。例如,我們希望擴展在域級別上顯示,因此如果參數(shù)是 DomainMBean 的實例,則實現(xiàn)只返回 URL:

 
    public String getNavExtensionFor(Object key) 
    {
        if (key instanceof DomainMBean)
            return "logging_navlink.jsp";
        return null;
    }

要描述希望添加的節(jié)點,必須編寫 JSP 文件,這些文件的名稱與從 getNavExtensionFor() 方法返回的值相匹配。BEA WebLogic Server 8.1 提供了一個自定義JSP標簽庫——console_extensions_taglib.tld,它包含 JSP 自定義標簽 wl:node,您需要使用它定義您的控制臺擴展節(jié)點。要創(chuàng)建嵌套的節(jié)點集,只需將 wl:node 標簽嵌入 JSP 中。wl:node 標簽的 url 參數(shù)定義了當用戶在控制臺中選擇自定義節(jié)點時調(diào)用的 JSP 頁面。例如,在我們的例子中選擇標準 MBean Logger 文件夾,將調(diào)用 standard_summary.jsp 來填入到控制臺窗口的右邊部分(參見清單 3)。

在為應(yīng)用程序編寫控制臺頁面集時,可以使用 wl:tag JSP 自定義標簽創(chuàng)建一套類似于 WebLogic Console 的其他部分中選項卡頁面的選項卡。該標簽至多允許創(chuàng)建兩層選項卡。參考我們的示例,了解如何使用該功能。要了解有關(guān)支持擴展 WebLogic Console 的自定義 JSP 標簽的更多信息,請參閱下面的聯(lián)機文檔,地址為:http://edocs.bea.com/wls/docs81/console_ext/taglib.html。

下一步,您需要編寫 Web 應(yīng)用程序部署描述符。除了描述 Web 應(yīng)用程序內(nèi)容的標準信息外,還有三件必須做的事情。首先,您需要告訴控制臺怎樣通過在 web.xml 部署描述符中定義 context-param 來找到您的 NavTreeExtension 類:

 
    <context-param>
        <param-name>weblogic.console.extension.class</param-name>
        <param-value>wldj.LoggingConsoleExtension</param-value>
    </context-param>

第二,您需要向 web.xml 部署描述符中添加 taglib 定義:

 
    <taglib>
        <taglib-uri>console_extension_taglib.jar</taglib-uri> 
        <taglib-location>
            WEB-INF/console_extension_taglib.tld
        </taglib-location>
    </taglib>

最后,您需要把您的 Web 應(yīng)用程序使用的 CookieName 設(shè)置成和 WebLogic Admin Console 一樣,所以在用戶登錄到控制臺時您的擴展將被認證。您可以通過在 weblogic.xml 部署描述符中定義一個 session-param 來實現(xiàn)這一點(參見清單 4)。在最后一步,您需要打包Web應(yīng)用程序,并將其部署到您的 WebLogic Admin 服務(wù)器。您需要將控制臺擴展標簽庫描述符文件——/server/lib/console_extensions_taglib.tld——復(fù)制到您 Web 應(yīng)用程序的 WEB-INF 目錄中。

盡管這里的空間不允許我們更加詳細地討論創(chuàng)建控制臺擴展的所有細微差別,我們?nèi)匀幌M@個可下載的示例能提供一個足夠現(xiàn)實的例子來開始您的學習。要了解有關(guān)創(chuàng)建控制臺擴展的更多信息,請參閱 BEA WebLogic Server 8.1 文檔 http://edocs.bea.com/wls/docs81/console_ext/。

結(jié)束語
我們已經(jīng)到達了使用 BEA WebLogic Server 8.1 進行應(yīng)用程序管理這一系列教程的末尾。我們希望能夠向您展示 WebLogic Server 8.1 管理工具和服務(wù)的能力及靈活性。WebLogic Server內(nèi)建的基礎(chǔ)結(jié)構(gòu)不僅允許您創(chuàng)建自定義管理應(yīng)用程序來管理 WebLogic Server,而且允許您將應(yīng)用程序與 JMX 裝配在一起,并將該裝配通過 WebLogic Console 的擴展來展示公開。

本文程序清單:

 
清單 1
 
InitialContext ctx = new InitialContext();
         MBeanServer mbeanServer = (MBeanServer)
         ctx.lookup("weblogic.management.server");
         ObjectName mbeanName = new ObjectName("wldj:Name=" + name);
         Logger myLogger = new Logger(name);
         ObjectInstance mbeanInstance =
         mbeanServer.registerMBean(myLogger, mbeanName);
 
清單2
 
ObjectName mbeanName = new ObjectName("wldj:Name=" + name);
Logger myLogger = new Logger(name);
ModelMBean modelMBean = new RequiredModelMBean();
modelMBean.setModelMBeanInfo(myLogger.getModelMBeanInfo());
modelMBean.setManagedResource(myLogger, "ObjectReference");
ObjectInstance mbeanInstance =
mbeanServer.registerMBean(modelMBean, mbeanName);
 
清單3
 
    <wl:node label="Standard MBean Loggers"
             icon="/images/folder.gif" expanded="false"
             url="/standard_summary.jsp">
      <%
          for (int i = 0; i < standardNames.length; i++) {
              String name = standardNames[i];
      %>
            <wl:node label="<%= name %>"
                     icon="/images/bullet.gif"
                     url="/standard_detail.jsp?Name=<%= name %>"
            />
      <%
          }
      %>
    </wl:node>
 
清單4
 
<weblogic-web-app>
        <session-descriptor>
            <session-param>
                <param-name>CookieName</param-name>
                <param-value>ADMINCONSOLESESSION</param-value>
            </session-param>
        </session-descriptor>
    </weblogic-web-app>

 

 作者簡介
Robert Patrick是BEA的CTO Office的技術(shù)總監(jiān),也是Mastering BEA WebLogic Server: Best Practices for Building and Deploying J2EE Applications一書的作者之一。Robert的職業(yè)生涯致力于使用BEA Tuxedo 和 BEA WebLogic Server來幫助客戶設(shè)計、構(gòu)建和部署高性能、容錯性強和任務(wù)關(guān)鍵型的分布式系統(tǒng)。
Vadim Rosenberg是BEA WebLogic Server的產(chǎn)品市場經(jīng)理。在加入BEA之前,他有13年從事商業(yè)軟件工程的經(jīng)驗,最近的工作是在Compaq Computers (Tandem Division)開發(fā)容錯性強和高度可擴展的J2EE框架。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
CSDN 文檔中心:針對開發(fā)人員的WebLogic Server應(yīng)用管理,第 2 部分
使用ORACLE JDEVELOPER 10G在WEBLOGIC SERVER 8.1上開...
JBossAS Tuning Sliming jboss 瘦身配置
定制自己的WebLogic LDAP Authentication Provider
JMX基礎(chǔ)
Java?管理擴展(JMX)(Zz)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服