Apache Tomcat (7.0.34) で実行されているサーブレットを、ローカルで実行されている JVisualVM (JDK 1.7.0 - 06、64 ビット) を使用して Windows 7 (64 ビット) のサービスとしてプロファイリングしようとしています。
最初は、「java.io.tmp」プロパティのバグ/機能が異なるため、Tomcat がローカル アプリケーションのリストに表示されないという問題がありましたが、このフォーラムのいくつかの投稿でアドバイスされているように回避しました。
ただし、Tomcat プロセスはローカル アプリケーションのリストに「ローカル アプリケーション」として表示されるようになりましたが、プロセスを開くと、[監視]、[スレッド]、[サンプラー]、または [プロファイル] のタブはありません。 -tabs は、恐ろしい「この jvm ではサポートされていません」というメッセージを表示します。
次の項目を再確認しました。
- Tomcat と JVisualVM の両方が同じバージョンの Java を実行していることを、JVisualVM の JVM プロパティを調べて (Tomcat の JMX 接続を使用して) 確認します。
- Tomcat と JVisualVM の両方が同じ「java.io.tmp」パスを持っていることを確認するには、JVisualVM のシステム プロパティを調べ (ここでも Tomcat の JMX 接続を使用します)、実際の TMP/TEMP ディレクトリを調べて、両方の PID ファイルが存在することを確認します。存在
- ファイル システムが NTFS であること
- Windows ユーザーの名前にアンダースコアが含まれていないこと (注: 「firstname.lastname」の形式のネットワーク ログインを使用しているため、ユーザーの名前にはピリオドが含まれていますが、JVisualVM で他の Java アプリケーションを表示するのに問題はありません。なので問題ないと思います)
- タスク マネージャーでプロセスを確認して、Tomcat と JVisualVM の両方が同じ Windows ユーザーとして実行されていることを確認します。
いくつかの最終的なポイント:
- サーブレットをプロファイリングする必要があるため、JMX を使用するだけでは不十分です
- Windows XP マシン (Java 7、サービスとしての Tomcat 7) でプロファイリングできたので、Windows 7 / 64 ビットのように見えますか?
誰かがこの問題を抱えて解決した場合、明らかにその解決策は大歓迎です。ただし、他の人が同じ構成 (Windows 7 64 ビット、Java 7 64 ビット、サービスとして実行されている Tomcat 7) を正常に実行しているかどうかを知るだけでも役立ちます。
更新:サービスとして実行する代わりに、バッチ ファイルを使用して Tomcat を実行したところ、すべてが完全に機能しました。