Tomcat 7 を数日間使い始めました。私はそれを使って多くのJAVA BASED Webアプリケーションを実行しようとしました。実際に Java ベースの Web アプリケーションのフローを確認したいと考えています。これは、Web アプリケーションのメソッドがどの順序で実行されるかを意味します。これを行うには、Tomcat サーバーを Java プロファイラーでプロファイリングします。
私のプロファイラーは次のように機能します。
- アプリケーションの war ファイルを tomcat の web Apps ディレクトリにデプロイします。
- サーバーを起動します
./startup.sh
- ブラウザでアプリケーションにアクセスして実行します。
- でサーバーを停止します
./shutdown.sh
。
サーバーを停止した後、プロファイラーは出力を xml 形式でダンプします (コンテキスト ツリーの呼び出しとしてメソッドの階層を示します) (私のプロファイラーは基本的に Java クラスのメソッドをプロファイルします)。
ご存知のように、Tomcat はサーブレットに基づいているため、アプリケーションをまったく同じように 2 回実行すると (上記の 4 つの手順を 2 回実行し、2 つの同じ実行に対して 2 つの異なる出力が得られます)、プロファイラーは異なる出力を返します。Q.1) なぜこのようなことが起こるのか正確にはわかりませんが、その背後にある理由を知りたいと思っています。
また、単純なアプリケーションでも、出力は非常に大きくなります (約 200 MB)。出力のサイズを制限し、2 つのまったく同じ実行で同じ出力を得るために、プロファイリングから org.apache.* のメソッドを除外しました。最終的には、Web アプリケーション自体のフローを知ることに関心があるためです (Web アプリケーションのメソッドがどの順序で実行されるかを知るため)。このシナリオでは、次の質問があります。
Q.2) war ファイルをデプロイしてアプリケーションを実行し、ディレクトリ自体からフェッチして実行すると、プロファイラーの出力に違いが生じる可能性がありますか? または、両方のケースで実行される一連のメソッドに影響を与えることができますか?
Q.3)アプリケーションの jsp ページを実行するとどうなるか教えてください。つまり、Tomcatはそれらをどのように実行しますか? 一歩進んでください....
Q.4)アプリケーションの実行後にプロファイラーの出力を確認すると、org/eclipse/jdt/internal/... から多数のメソッドが実行されていることがわかります。では、このクラスは実際に何をするのでしょうか? 出力にそれらがあるのはなぜですか?
質問を説明できていない場合はお知らせください。よく検索しましたが、質問に対する正確な答えを見つけることができませんでした。
私は本当にあなたの応答をいただければ幸いです..
ありがとうございます。