簡體   English   中英

無法使用JConsole遠程連接到weblogic服務器

[英]Can't connect to weblogic server remotely using JConsole

我需要使用JConsole監視在遠程計算機上運行的Weblogic服務器。 就目前而言,當我嘗試測試計算機上的所有內容時,即我正在嘗試使其在計算機上遠程運行,當此方法有效時,我將在服務器上進行必要的更改,但將應用程序置於服務器正在被其他用戶使用,我無法進行更改並經常停止/啟動服務器。 因此,我將PC用作服務器,並使用JConsole“遠程”連接。

環境:我的電腦和服務器都運行WL 10.3; 服務器運行Java Sun JDK 1.6.0_27和Solaris OS,我的電腦運行Java Sun JDK 1.6.0_26和Ubuntu OS。

我可以在本地連接,運行JConsole並單擊weblogic進程。

應用程序部署很大,它運行一些腳本。 創建weblogic的域后,請設置以下屬性:

java -classpath ${CLASSPATH} ${MY_OPTS} -Dweblogic.management.username=${ADMIN_USER}  \
    -Dweblogic.management.password=${ADMIN_PASSWD} -Dweblogic.Domain=${MY_DOMAIN} \
    -Dweblogic.Name=${MY_SERVER} -Dweblogic.ListenPort=${MY_PORT} \
    -Dweblogic.RootDirectory=${MY_DOMAIN_HOME}/${MY_DOMAIN} \
    -Dcom.sun.management.jmxremote.port=22222 \
    -Dcom.sun.management.jmxremote.authenticate=true \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.password.file=/home/MY_USER/jmxremote.password \
    -Dcom.sun.management.jmxremote.access.file=/home/MY_USER/jmxremote.access \
    -Dweblogic.management.GenerateDefaultConfig=true weblogic.Server &

我還在某個時候添加了此屬性-Djava.rmi.server.hostname =->我既沒有使用localhost也沒有使用127.0.0.1,但是沒有區別

然后,我從控制台運行jconsole -debug,並嘗試使用以下服務URL與遠程選項連接(我嘗試使用另一個):

service:jmx:rmi:///jndi/rmi://127.0.0.1:22222/jmxrmi
service:jmx:rmi:///jndi/rmi://<my_ip>:22222/jmxrmi
service:jmx:rmi://127.0.0.1:22222/jndi/rmi://127.0.0.1:1099/

1099是運行rmiregistry的端口,但是我必須使用rmiregistry&手動啟動它,否則該端口將無法監聽。

當應用程序運行時,我運行netstat命令,盡管我看到端口8080、8081(SSL端口)和管理控制台的端口(這不是默認的7001),但我沒有看到端口22222在監聽,我認為我應該吧?

我什至在weblogic.policy中添加了以下內容:

grant {
permission java.net.SocketPermission
"<my_ip>:1024-65535", "connect,resolve";
};

在部署應用程序的控制台中,我看到:

Connector Server Address = service:jmx:iiop://<my_ip>:8080    /jndi/weblogic.management.mbeanservers.runtime

連接器服務器地址= service:jmx:iiop://:8080 / jndi / weblogic.management.mbeanservers.edit

連接器服務器地址=服務:JMX:RMI://127.0.0.1/stub/rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LnJlbW90ZS5ybWkuUk1JU2VydmVySW1wbF9TdHViAAAAAAAAAAICAAB4cgAaamF2YS5ybWkuc2VydmVyLlJlbW90ZVN0dWLp/tzJi+FlGgIAAHhyABxqYXZhLnJtaS5zZXJ2ZXIuUmVtb3RlT2JqZWN002G0kQxhMx4DAAB4cHc0AAtVbmljYXN0UmVmMgAACTEyNy4wLjEuMQAAxMelHYZki5P74FdoVWYAAAEzsm1U1oACAHg=

可以在以下位置使用Conector JMX:service:jmx:rmi:/// jndi / rmi:// usuario-System-Product-Name:22222 / jmxrmi

我也嘗試過這些,但是沒有成功。

我能夠連接的唯一方法是,如果我首先使用pid在本地訪問,那么在控制台中,我將獲得一個類似於在日志中獲得的服務URL:

服務:JMX:RMI://127.0.0.1/stub/rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LnJlbW90ZS5ybWkuUk1JU2VydmVySW1wbF9TdHViAAAAAAAAAAICAAB4cgAaamF2YS5ybWkuc2VydmVyLlJlbW90ZVN0dWLp/tzJi+FlGgIAAHhyABxqYXZhLnJtaS5zZXJ2ZXIuUmVtb3RlT2JqZWN002G0kQxhMx4DAAB4cHc0AAtVbmljYXN0UmVmMgAACTEyNy4wLjEuMQAAgDBSpbjGvIybrBekgUYAAAEzsm9/YIASAHg=

使用我可以連接的遠程部分中的該url,它與記錄的URL相似但不相同,順便說一句不起作用。

使用-debug時,在JConsole控制台中出現的錯誤是:

我在控制台中遇到的一些錯誤不是隨機的。.我的意思是,當我嘗試不同的URL,手動運行/不運行rmiregistry時出現了不同的錯誤,等等:

Failed to retrieve RMIServer stub: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

11/11/2011 09:46:46 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://127.0.0.1:22222/jmxrmi] connecting...
11/11/2011 09:46:46 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://127.0.0.1:22222/jmxrmi] finding stub...
11/11/2011 09:46:46 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://127.0.0.1:22222/jmxrmi] Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: 
non-JRMP server at remote endpoint]

Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: non-JRMP server at remote endpoint]

17/11/2011 12:08:28 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://<my_ip>:22222/jmxrmi] connecting...
17/11/2011 12:08:28 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://<my_ip>:22222/jmxrmi] finding stub...
17/11/2011 12:08:28 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://<my_ip>:22222/jmxrmi] Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: jmxrmi
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: jmxrmi
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:340)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
    at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:350)
    at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:296)
    at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:280)
Caused by: javax.naming.NameNotFoundException: jmxrmi
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1888)
    at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1858)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:257)
    ... 4 more

注意:我用的意思是172.xx.xxx.xxx

我究竟做錯了什么? 我還應該設置/檢查/更改什么?


好吧,我做了一些更改,但仍然無法使它生效。

我設定

java -classpath ${CLASSPATH} ${MY_OPTS} -Dweblogic.management.username=${ADMIN_USER} \ -Dweblogic.management.password=${ADMIN_PASSWD} -Dweblogic.Domain=${MY_DOMAIN} \ -Dweblogic.Name=${MY_SERVER} -Dweblogic.ListenPort=${MY_PORT} \ -Dweblogic.RootDirectory=${MY_DOMAIN_HOME}/${MY_DOMAIN} \ -Djava.rmi.server.hostname=${ADMIN_HOST} \ -Dcom.sun.management.jmxremote.port=22222 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.password.file=/home/MY_USER/jmxremote.password \ -Dcom.sun.management.jmxremote.access.file=/home/MY_USER/jmxremote.access \ -Dweblogic.management.GenerateDefaultConfig=true weblogic.Server &

我將身份驗證屬性更改為false,並添加了java.rmi.server.hostname,其中ADMIN_HOST是設置為我的計算機的ip 172.17.209.66的變量。

當我在JConsole中使用服務URL時:service:jmx:rmi:/// jndi / rmi://172.17.209.66:22222 / jmxrmi

我得到以下異常

22/11/2011 05:22:54 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://172.17.209.66:22222/jmxrmi] connecting...
22/11/2011 05:22:54 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://172.17.209.66:22222/jmxrmi] finding stub...
22/11/2011 05:22:54 RMIConnector connect
MÁS FINA: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://172.17.209.66:22222/jmxrmi] Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 172.17.209.66; nested exception is: 
    java.net.ConnectException: Conexión rehusada]
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 172.17.209.65; nested exception is: 
    java.net.ConnectException: Conexión rehusada]
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:340)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:207)

在我的應用程序日志中,我看到以下內容:

可以在以下位置使用Conector JMX:service:jmx:rmi:/// jndi / rmi:// usuario-System-Product-Name:22222 / jmxrmi

/ etc / hosts顯示:

172.17.209.65 usuario系統產品名稱#由NetworkManager添加127.0.0.1 localhost.localdomain localhost :: 1 usuario系統產品名稱localhost6.localdomain6 localhost6 127.0.1.1 usuario系統產品名稱

這就是為什么我看到usuario-System-Product-Name而不是IP的原因? 即使將主機名設置為計算機的IP?

我禁用了兩個firewals,並嘗試使用命令行jmx工具Alex建議不要運氣:-(

還有其他建議/技巧/幫助嗎?

我遇到了同樣的問題,並使用端口掃描程序對服務器進行了掃描。 然后我意識到默認情況下,服務器上的大多數端口都對外部不開放。 至少在我的組織中就是這種情況。 實際上,掃描儀說22是打開的唯一設備,我想這就是我可以SSH到服務器的原因。 您可能需要與您的網絡團隊一起澄清“封閉式防火牆”的含義,並確保已將端口(在您的情況下為22222)打開到工作計算機上。

我認為您在一端遇到了防火牆問題。

因此,首先(如果可能)嘗試關閉兩個防火牆,然后看看會發生什么。 如果開始工作,請檢查您必須打開哪些端口。 問題是JMX使用2個端口。 您可以配置一個,另一個是動態選擇的。 因此,如何打開防火牆取決於您的防火牆。

其他可能性是使用命令行jmx工具:在通過SSH / telnet終端窗口運行服務器的同一台計算機上本地運行它。 我使用了一個這樣的應用程序: http : //crawler.archive.org/cmdline-jmxclient/downloads.html ,發現它運行良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM