web-dev-qa-db-ja.com

このJava動的Webプロジェクトにmainメソッドが表示されないのはなぜですか?

私はWebサービスがどのように機能するかを理解しようとしていて、 このチュートリアル に出くわしました。

今、私は春がエンタープライズアプリケーションで使用されているのを見て、主な方法はどこにあり、すべてがどのように機能するのか常に疑問に思っていました。そして、春のチュートリアルに行くときはいつでも、beanFactoryとContextsで始まり、そうでないものはすべて、メインのJavaメソッドで、そこから必要に応じてBeanを取得し続けます。これはとはまったく異なります。私がアプリケーションで見るもの。

この場合、春はどのように正確に機能するか誰かに教えてもらえますか?呼び出しのシーケンスは何ですか。どこかに隠されたmainメソッドがあると思いますが、それはわかりません。

通常、コマンドラインから単純なJavaプロジェクトを実行する場合は、Java mainClass。さて、この場合はどうなるでしょうか。

ありがとう

16
Kraken

Webアプリケーションにはメインがありません。実行中の「プログラム」は実際にはWebコンテナ(Apache Tomcat、Glassfish、JBoss、Weblogicなど)であり、そのプログラムは、デプロイしたWebアプリケーションにサービスを提供します。 JEEチュートリアルを読んで、Java Web環境とは何かを学び理解することをお勧めします。

https://docs.Oracle.com/javaee/7/tutorial/

11
Gimby

まだメインメソッドがあり、アプリケーションの開発者ではなく、コンテナの開発者によって作成されています。

次のようなデバッガーを使用して、呼び出されているmainメソッドを引き続き確認できます。

  • サーブレットのinitメソッドなどの初期化メソッドにブレークポイントを設定します Servlet.init()
  • ブレアポイントがヒットしたら、呼び出しトレースを下にスクロールすると、メインメソッドが一番下に表示されます。

これは桟橋の例です。

enter image description here

これを確認するには、初期化メソッドにブレークポイントを設定して、アプリケーションのメインスレッドを取得する必要があります。

初期化メソッドの代わりにリクエストの処理にブレークポイントを設定すると、main()ではなくスタックトレースの下部にThread.run()が表示されます。

Thread.run()は、メインスレッド以外のスレッドのmainメソッドと同等です。

したがって、mainメソッドはまだ存在し、コンテナのレベルで処理されているだけです。

17

Webプロジェクトであるという理由だけで、明示的なmainメソッドは表示されません。このプロジェクトは、Webサーバー/サーブレットコンテナにデプロイされるWebアプリケーションアーカイブ(WAR)ファイルに組み込まれています。このチュートリアルのTomcat。

Webアプリケーションにmainメソッドを含める必要はありません。これは、Webアプリケーション内からJavaプロセスを明示的に開始する必要がないためです。Tomcatは、その深さのどこかで、ビルドされたコードのmainメソッドを呼び出します。 from。これはサーバーの起動時に発生します。

次に、コードを着信HTTP呼び出しにバインドしますが、そのための新しいプロセスは開始しません。むしろ新しいスレッドを開始します。

6
Andrei Nicusan

Webアプリケーションはスタンドアロンアプリケーションではなく、JavaコンテキストでservletContainerと呼ばれる一部のアプリケーションで実行されるため、どのWebアプリケーションにもmain method or Java process(os)はありません。これらのアプリケーションにデプロイされるだけです。メインメソッドとJava OSランタイムのプロセスを持つコンテナ。

4
Sachin Verma

Javaで基本的なプログラムを作成した場合、すべてのJavaプログラムにはmain()メソッドがあります。これが開始点です。では、なぜサーブレットにmain()がないのですか?これは、サーブレットがWebコンテナを介して提供されるためです。Webコンテナはサーブレットに代わってすべての基礎となる作業を実行するため、プログラマはビジネスロジックに集中できます。クライアントが要求した場合サーブレットであるサーバーは、サーブレットがデプロイされているWebコンテナにリクエストを渡します。

enter image description here

0
Hitanshi Mehta