私はWebサービスがどのように機能するかを理解しようとしていて、 このチュートリアル に出くわしました。
今、私は春がエンタープライズアプリケーションで使用されているのを見て、主な方法はどこにあり、すべてがどのように機能するのか常に疑問に思っていました。そして、春のチュートリアルに行くときはいつでも、beanFactoryとContextsで始まり、そうでないものはすべて、メインのJavaメソッドで、そこから必要に応じてBeanを取得し続けます。これはとはまったく異なります。私がアプリケーションで見るもの。
この場合、春はどのように正確に機能するか誰かに教えてもらえますか?呼び出しのシーケンスは何ですか。どこかに隠されたmainメソッドがあると思いますが、それはわかりません。
通常、コマンドラインから単純なJavaプロジェクトを実行する場合は、Java mainClass
。さて、この場合はどうなるでしょうか。
ありがとう
Webアプリケーションにはメインがありません。実行中の「プログラム」は実際にはWebコンテナ(Apache Tomcat、Glassfish、JBoss、Weblogicなど)であり、そのプログラムは、デプロイしたWebアプリケーションにサービスを提供します。 JEEチュートリアルを読んで、Java Web環境とは何かを学び理解することをお勧めします。
まだメインメソッドがあり、アプリケーションの開発者ではなく、コンテナの開発者によって作成されています。
次のようなデバッガーを使用して、呼び出されているmainメソッドを引き続き確認できます。
これは桟橋の例です。
これを確認するには、初期化メソッドにブレークポイントを設定して、アプリケーションのメインスレッドを取得する必要があります。
初期化メソッドの代わりにリクエストの処理にブレークポイントを設定すると、main()ではなくスタックトレースの下部にThread.run()が表示されます。
Thread.run()は、メインスレッド以外のスレッドのmainメソッドと同等です。
したがって、mainメソッドはまだ存在し、コンテナのレベルで処理されているだけです。
Webプロジェクトであるという理由だけで、明示的なmain
メソッドは表示されません。このプロジェクトは、Webサーバー/サーブレットコンテナにデプロイされるWebアプリケーションアーカイブ(WAR)ファイルに組み込まれています。このチュートリアルのTomcat。
Webアプリケーションにmain
メソッドを含める必要はありません。これは、Webアプリケーション内からJavaプロセスを明示的に開始する必要がないためです。Tomcatは、その深さのどこかで、ビルドされたコードのmain
メソッドを呼び出します。 from。これはサーバーの起動時に発生します。
次に、コードを着信HTTP呼び出しにバインドしますが、そのための新しいプロセスは開始しません。むしろ新しいスレッドを開始します。
Webアプリケーションはスタンドアロンアプリケーションではなく、JavaコンテキストでservletContainerと呼ばれる一部のアプリケーションで実行されるため、どのWebアプリケーションにもmain method or Java process(os)
はありません。これらのアプリケーションにデプロイされるだけです。メインメソッドとJava OSランタイムのプロセスを持つコンテナ。