【问题标题】:Application server and main methods [closed]应用程序服务器和主要方法[关闭]
【发布时间】:2015-01-04 21:34:51
【问题描述】:

假设我启动了一个应用程序服务器,并在这个应用程序服务器下部署了一个网页。此页面有一些链接(url),它们调用(每个)应用程序服务器部署代码(war)中的不同主要方法。 每个 main 方法如何“知道”不是启动一个新的 JVM 而是全部运行在 Application Server JVM 下?

【问题讨论】:

  • main 方法从什么时候开始启动 JVM 实例?更有可能一个新的 JVM 实例在应用程序启动期间运行指定的 main 方法。
  • 什么触发了新的 JVM 实例?
  • 会。通过调用java -jar ... 或启动应用程序服务器或其他方式。
  • 对。好的 。所以我的问题是:当代码在应用程序服务器 JVM 下运行时,我对 java myMain1Method 的调用如何不启动新的 JVM 实例

标签: java jvm classloader server application-server


【解决方案1】:

从 war 文件部署的 Java Web 应用程序没有多个 main 方法(也称为入口点)。每个 servlet 或 JSP(编译为 servlet)都由 service 方法访问(如 Servlet 规范中所记录的 Servlet 生命周期);

init()    // <-- called once
service() // <-- called multiple times, once for each request
destory() // <-- called once

Java EE Tutorial 详细记录了 Servlet 生命周期。

【讨论】:

  • 正如我提到的:一些网页有链接调用:java myMain1Method , java myMain2Method .. 等等。这与 servlet API 无关
  • 没有。如果它与 servlet API 无关,你为什么要谈论战争文件?发布工作代码,因为那是不正确的。你的意思是javascript:
  • 我将发布代码。但是您是否声称war文件中的许多不同类中不能有许多主要方法?
  • 您可以将任意数量的main 方法放在一个war 文件中,但是没有一个 会被Web 应用程序服务器执行。
  • 您是什么意思:Web 应用程序服务器?用户点击链接并调用 main 方法。我会仔细检查电话的样子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多