2012-05-11 13 views
8

AmazonのクラウドでLinuxサーバーでTomcat 6を実行しています。私は私のオフィスで私のMacからVisualVMで接続しようとしています。デスクトップとサーバーの間にすべてのTCPポートを開くことができましたが、VisualVMに何かをさせることができません。私はamazonhostname.com入力VisualVMリモート接続のデバッグ

...>新規JMX接続 - 私はVisualVMのを起動し、ファイルを選択し、私のMac上で

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9191 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

:Linuxボックスの

は、私はTomcatを開始しました9191 「amazonhostname.com:9191を追加しています...」と表示され、タイムアウトするまで数分待っています。

私のMacからは、 "telnet amazonhostname.com 9191"をうまく使用でき、他のランダムポートを試してみました。 UDPやICMPなどを開く必要がない限り、ファイアウォールの問題ではないと確信しています。 (本当に??)

サーバーのcatalina.logや、Macのシステムコンソールにはjmxに関連するものはありません。サーバー上のnetstatは9191を表示し、他のいくつかのポートはすべてのインターフェイスで開きます。

リモートサーバーにjstatdはありません。これはJMXの前提条件ですか? (私はJavaに全く新しいですし、それらのことがどういう意味なのかはまだ分かりませんが、私はブログの投稿でどこかを見ました)。

+0

iptablesがあなたのLinuxボックスの接続をブロックしていないことを確認しましたか?編集:私はあなたがtelnetを見ることができます - 大丈夫、それを傷つけることがわかります。 –

+1

もう1つのことは、RMIのホスト名です。http://stackoverflow.com/questions/9985293/how-do-i-use-jconsole-to-connect-to-ec2 –

+1

Jstatd必要ない。 GregがTomcatのJVM引数に-Djava.rmi.server.hostname = the.public.ipを追加するよう提案したため。 –

答えて

18

VMが起動する前にhostnameプロパティを設定してください:

java -Dcom.sun.management.jmxremote \ 
    -Dcom.sun.management.jmxremote.port=9191 \ 
    -Dcom.sun.management.jmxremote.authenticate=false \ 
    -Dcom.sun.management.jmxremote.ssl=false \ 
    -Djava.rmi.server.hostname=the.public.ip \ 
    -jar program.jar 

関連するルールをセキュリティグループに追加します。

+0

残念ながら、Elastic Beanstalkのような自動スケーリングでは機能しません。 – mwoodman

+0

@mwoodman:私はEBを使用しませんでしたが、なぜこれが当てはまらないのかを知っていますか? –

+1

-Dcom.sun.management.remote.ssl = falseは-Dcom.sun.management.jmxremote.ssl = falseにする必要があると思います。 –