2009-04-07 6 views
1

私はSOコミュニティからこの問題についてのアイデアを得たいと思っていました。ここでWeb Startで実行されているクライアントからJavaスタックトレースを取得する方法は?

は問題です:

我々はWebStartのを通じて我々のアプリを立ち上げ、世界の他の側のユーザを持っています。しかし、ユーザーはアプリケーション全体がフリーズして応答しなくなると不平を言っています。通常、クライアントは分散データベースに対して多くのデータベースクエリを実行しています。

質問:

  1. 私たちは彼女のアプリケーションにCTRL-ブレークを行うために彼女を頼む場合は、JVMは、スタックトレースを書くでしょうか?
  2. 使用するだけで十分でしょうかJConsole
  3. クライアント上のJMX beansを実装するのは過度なものでしょうか?実際に生産上の問題のトラブルシューティングに役立つでしょうか?

現在、ユーザーはJRE 1.5.0-b08で実行されていますが、数か月後にJRE 6に移行する予定です。

あなたはどう思いますか?あなたはJavaコンソールが表示されています(コマンドラインから実行するのjavawsをし、[環境設定]ダイアログからこれを選択)する必要が

+0

"通常、クライアントは分散データベースに対して多くのデータベースクエリを実行しています。 バックグラウンドスレッドで、私は願っています.... –

+0

さて、それはそれを実行する適切な方法でなければなりません。残念ながら、誰もがこの基準に従うわけではありません。 –

答えて

2

ホセを打つ、あなたはJVMから多くの情報を得ることができますさまざまな方法で

リモートJVMでデバッグを有効にすることをお勧めします。 hereのように、記述子XMLのj2se要素を使用して設定できます。 -Xdebugを設定することができますので、良いスタートがあります。私はウェブスタートアプリでリモートデバッグを試みたことは一度もなかったので、リモートパートを設定するのはちょっとした問題かもしれません。

また、別のスレッドを追加してリモートで話をしたり、デバッグメッセージを送信したりして、自分で設定することもできます。

native javaまたはlog4j remote loggerを使用できます。

あなたが説明しているようにぶら下がっている場合、何が起こっているのかは非常に高いです。何らかのネットワークハングアップです。会話の末尾にの末尾にのトレース/デバッグを置くことはできますか?

+0

会話の最後に、サーバー側からのトラフィックを監視するという意味ですか? –

+0

+1は非常に便利なリンクです! – javashlook

+0

私はwebstartアプリケーションでjmxremoteを有効にして実装しようとしています。この方法で簡単にユーザーにアプローチできます。彼らがしなければならないのは、私たちに彼らのコンピュータ名を与えることだけです.JConsoleを使って遠隔操作することができます。 –

0

が、その後、「V」

+0

ユーザが気づかずにスタックトレースを取得する方法はありますか、これに何らかの関与がありますか? –

1

これらのデバッグの代わりに、スレッド用の例外ハンドラをインストールするのはなぜですか? java.lang.Threadを参照してください。あなたのコードでそれをインストールする場合 http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)

、一度SwingのEDTの内側に、そしてちょうどに保存し、自分自身にそれを電子メールにいくつかのJavaコードを記述します。

void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 

はここに関連するjavadocのですサーバーに接続し、ユーザーに表示します。

関連する問題