jconsole 使用_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问
jconsole 使用
與以前的版本相比,JBoss AS7的目標(biāo)之一是使其在默認(rèn)情況下更加安全。 受此目標(biāo)直接影響的領(lǐng)域之一是,您不再期望服務(wù)器在端口上公開某些服務(wù),而無需任何身份驗(yàn)證/授權(quán)即可訪問它。 請記住,在以前的JBoss AS版本中,只要打開了這些端口以進(jìn)行遠(yuǎn)程通信,就可以訪問JNDI端口,JMX端口而無需任何身份驗(yàn)證/授權(quán)。 在JBoss AS7中,此類端口上用于通信的更細(xì)粒度的授權(quán)允許服務(wù)器控制誰可以通過該端口調(diào)用操作。
當(dāng)然,這不僅限于JBoss AS7,而且仍然是WildFly(這是JBoss Application Server的重命名)的目標(biāo)。 實(shí)際上,WildFly向前邁了一步,現(xiàn)在具有“一個單一端口”的功能來進(jìn)行所有通信。
JBoss AS7和WildFly中的JMX通信
在此背景下,我們現(xiàn)在將重點(diǎn)關(guān)注JBoss AS7和WildFly中的JMX通信。 在本文的其余部分,我將使用WildFly(8.2.0 Final)作為參考,但是相同的細(xì)節(jié)(略有變化)適用于JBoss AS7和WildFly的其他主要版本,這些版本到目前為止已經(jīng)發(fā)布。
WildFly服務(wù)器由“子系統(tǒng)”組成,每個子系統(tǒng)都具有一組特定的功能。 例如,有支持Java EE功能集的EE子系統(tǒng)。 然后是支持Web / HTTP服務(wù)器功能的Undertow子系統(tǒng)。 同樣,有一個JMX子系統(tǒng)公開了服務(wù)器上的JMX功能集。 眾所周知,我敢肯定,JMX服務(wù)通常用于監(jiān)視甚至管理Java服務(wù)器,其中包括遠(yuǎn)程管理服務(wù)器。 WildFly中的JMX子系統(tǒng)允許遠(yuǎn)程訪問JMX服務(wù),并且端口9990是用于該遠(yuǎn)程JMX通信的端口。
JConsole用于針對JBoss AS7和WildFly的遠(yuǎn)程JMX訪問
Java(JDK)與JConsole工具捆綁在一起,該工具允許連接到公開JMX服務(wù)的本地或遠(yuǎn)程Java運(yùn)行時。 該工具易于使用,您所要做的就是運(yùn)行jconsole命令,它將顯示一個圖形菜單,列出所有本地Java進(jìn)程,以及一個用于指定遠(yuǎn)程URL以連接到遠(yuǎn)程進(jìn)程的選項(xiàng):
# Start the JConsole $JAVA_HOME/bin/jconsole假設(shè)您已經(jīng)在本地啟動了WildFly獨(dú)立服務(wù)器。 現(xiàn)在,當(dāng)您啟動jconsole時,您會注意到WildFly Java進(jìn)程在您可以連接到的本地運(yùn)行進(jìn)程中列出。 選擇WildFly Java實(shí)例時,將自動連接到它,并且您會注意到服務(wù)器公開的MBean。 但是,在本文的上下文中,JConsole中的這種“本地過程”模式不是我們感興趣的。
讓我們使用該JConsole菜單中的“遠(yuǎn)程進(jìn)程”選項(xiàng),該菜單允許您指定用于連接到Java運(yùn)行時的遠(yuǎn)程URL以及用于連接到該實(shí)例的用戶名和密碼。 即使我們的WildFly服務(wù)器在本地運(yùn)行,我們也可以使用此“遠(yuǎn)程進(jìn)程”選項(xiàng)嘗試并連接到它。 因此,讓我們嘗試一下。 在此之前,讓我們考慮以下幾點(diǎn):
牢記這些要點(diǎn),讓我們首先在管理領(lǐng)域中創(chuàng)建一個用戶。 可以使用添加用戶命令行腳本(位于JBOSS_HOME / bin文件夾中)完成此操作。 由于有足夠的文檔資料,因此我將不做詳細(xì)介紹。 讓我們假設(shè)我在管理領(lǐng)域中創(chuàng)建了一個名為“ wflyadmin”的用戶,并使用了適當(dāng)?shù)拿艽a。 要驗(yàn)證是否已正確創(chuàng)建用戶,請在正確的領(lǐng)域中訪問URL http:// localhost:9990 / console的WildFly管理控制臺。 系統(tǒng)將要求您輸入用戶名和密碼進(jìn)行訪問。 使用與新創(chuàng)建的用戶相同的用戶名和密碼。 如果登錄有效,那么您就很好。 如果不是,那么請確保您在添加新用戶時做得正確(正如我說的,我將不贅述添加新用戶的細(xì)節(jié),因?yàn)檫@只會不必要地延長本文的篇幅)。
因此,在這一點(diǎn)上,我們已經(jīng)創(chuàng)建了一個名為ManagementManager的名為“ wflyadmin”的用戶。 我們將使用相同的用戶帳戶通過JConsole訪問WildFly上的JMX服務(wù)。 現(xiàn)在讓我們照常啟動jconsole:
$JAVA_HOME/bin/jconsole在JConsole菜單上,讓我們再次選擇“遠(yuǎn)程進(jìn)程”選項(xiàng),并在URL文本框中使用以下URL:
service:jmx:http-remoting-jmx://localhost:9990注意:對于JBoss AS 7.x和JBoss EAP 6.x ,供應(yīng)商特定的協(xié)議是remoting-jmx,并且通信端口是9999 。 因此,URL為service:jmx:remoting-jmx:// localhost:9999
在用戶名和密碼文本框中,使用與新創(chuàng)建的用戶/密碼相同的密碼。 最后,單擊“連接”。 你看到了什么? 這是行不通的! 連接失敗。 那么出了什么問題呢?
為什么JConsole對WildFly的遠(yuǎn)程訪問不起作用?
您做了所有顯而易見的事情來遠(yuǎn)程訪問WildFly JMX服務(wù),但您仍然看到JConsole無法連接到它。 可能是什么原因? 記住,在前面的幾點(diǎn)中,我注意到“特定于供應(yīng)商的協(xié)議”很有趣嗎? 我們使用http-remoting-jmx,該協(xié)議內(nèi)部依賴于某些WildFly / JBoss特定的庫,主要用于遠(yuǎn)程通信以及身份驗(yàn)證和授權(quán)。 這些庫特定于WildFly服務(wù)器,因此不是標(biāo)準(zhǔn)Java運(yùn)行時環(huán)境的一部分。 啟動jconsole時,它將使用標(biāo)準(zhǔn)類路徑,該類路徑僅包含JDK / JRE中的相關(guān)庫。
要解決此問題,您需要做的是將WildFly服務(wù)器特定的庫引入JConsole的類路徑中。 在研究如何做之前,讓我們看一下需要哪些WildFly特定的庫。 工作所需的所有必要類均在JBOSS_HOME / bin / client /文件夾中的jboss-cli-client.jar中。 因此,我們需要做的所有事情就是將此jar包含在jconsole工具的類路徑中。 為此,我們使用jconsole工具的-J選項(xiàng),該選項(xiàng)允許將參數(shù)傳遞給jconsole的Java運(yùn)行時。 執(zhí)行該命令的命令是:
$JAVA_HOME/bin/jconsole -J-Djava.class.path=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:/opt/wildfly-8.2.0.Final/bin/client/jboss-cli-client.jar(請注意,對于Windows,classpath分隔符是分號而不是冒號)
注意,針對JBoss AS 7.x和JBoss EAP 6.x的服務(wù)器特定的jar名為jboss-client.jar,并且位于相同的JBOSS_HOME / bin / client目錄位置。
因此,我們使用-J選項(xiàng)將-Djava.class.path作為參數(shù)傳遞給jconsole Java運(yùn)行時。 注意,我們在該類路徑中指定的不僅僅是服務(wù)器特定的jar。 這是因?yàn)?#xff0c;使用-Djava.class.path應(yīng)該包含完整的類路徑。 我們包括JConsole所需的Java JDK lib文件夾中的jar,以及該類路徑中服務(wù)器特定的jar。
運(yùn)行該命令應(yīng)該像往常一樣啟動JConsole,讓我們繼續(xù)并選擇“ Remote process”選項(xiàng)并指定與以前相同的URL:
service:jmx:http-remoting-jmx://localhost:9990并使用與以前相同的用戶名和密碼,然后單擊“連接”。 這次您應(yīng)該能夠連接,并且應(yīng)該開始看到通過JMX公開的MBean和其他服務(wù)。
如何提供執(zhí)行此必要的類路徑設(shè)置的腳本?
由于嘗試使用JConsole進(jìn)行針對WildFly的遠(yuǎn)程訪問是很平常的事情,因此可以合理地期望擁有一個設(shè)置類路徑的腳本(如上所述),然后可以使用該腳本。 這就是為什么WildFly會提供這樣的腳本的原因。 它位于JBOSS_HOME / bin文件夾中,稱為jconsole.sh(對于Windows,稱為jconsole.bat)。 這只是一個包裝腳本,在適當(dāng)設(shè)置了類路徑之后,該腳本內(nèi)部調(diào)用Java JDK中存在的jconsole工具。 您所要做的就是運(yùn)行:
$JBOSS_HOME/bin/jconsole.sh在真正的遠(yuǎn)程計算機(jī)上針對WildFly使用JConsole怎么辦?
到目前為止,我們使用的是與WildFly實(shí)例在同一臺計算機(jī)上的jconsole工具,這意味著我們可以訪問文件系統(tǒng)上WildFly安裝目錄中存在的WildFly服務(wù)器特定jar的文件系統(tǒng)。 這使我們可以設(shè)置jconsole的類路徑以指向本地文件系統(tǒng)上的jar?
如果要從一臺遠(yuǎn)程計算機(jī)對另一臺計算機(jī)上安裝并運(yùn)行的WildFly服務(wù)器運(yùn)行jconsole,該怎么辦。 在這種情況下,您的遠(yuǎn)程客戶端計算機(jī)將無法訪問WildFly安裝目錄的文件系統(tǒng)。 因此,要使jconsole在這種情況下運(yùn)行,您必須將JBOSS_HOME / bin / jboss-cli-client.jar復(fù)制到遠(yuǎn)程客戶端計算機(jī)上,并復(fù)制到您選擇的目錄中,然后按照說明設(shè)置jconsole工具的類路徑并將其指向該jar位置。 這樣一來,您就可以從遠(yuǎn)程計算機(jī)上的jconsole訪問WildFly的JMX服務(wù)。
翻譯自: https://www.javacodegeeks.com/2014/12/my-wiki-remote-jmx-access-to-wildfly-or-jboss-as7-using-jconsole.html
jconsole 使用
總結(jié)
以上是生活随笔為你收集整理的jconsole 使用_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大的ddos攻击(ddos最高攻击)
- 下一篇: js 使用多态替换条件语句_用多态和组成