0

我正在尝试分析 tomcat 服务器。我的分析器输出由 tomcat 服务器执行的方法列表。我使用 Ubuntu 12.04。我所做的如下:

1)启动tomcat服务器(./startup.sh)

2)打开浏览器并执行在java中开发的Web应用程序(并包含jsp页面)例如(http://localhost:8080/bodgeit。)我已将bodgeit Web应用程序放在tomcat 7.0.28的webapps目录中(我运行Tomcat 上的 bodgeit Web 应用程序)

3) 我在这个 web 应用程序中执行了一些操作,例如登录、向购物篮添加东西、更改密码、注销等。

4) 然后我通过 ./shutdown.sh 停止服务器。当我运行 shudown 脚本时,我的分析器会输出包含运行 tomcat 时执行的方法列表的文件。

现在我的问题是:我通过执行上述步骤两次或多次收集配置文件。我在第 3 步中在 Web 应用程序中执行完全相同的操作(以相同的顺序)。但是我在两个输出中获得的方法顺序是不同的。为什么会这样?我的分析器也能够保存方法序列。

apache web server执行的方法每次都不同吗?他们不是固定的吗?就像某些方法在您启动服务器、发出请求或关闭服务器时执行?我也是 tomcat、servlet 和 jsp 的新手。我对它的工作原理有基本的了解。例如,以下序列在第一个文件中不存在,而在第二个文件中存在。像这样,还有很多不同之处。

<callingContextTree><method declaringClass="Lorg/apache/catalina/startup/HostConfig$DeployWar;" name="run" params="" return="V"><callsite instruction="7"><method declaringClass="Lorg/apache/catalina/startup/HostConfig;" name="deployWAR" params="Lorg/apache/catalina/util/ContextName; Ljava/io/File;" return="V"><callsite instruction="555"><method declaringClass="Lorg/apache/catalina/core/StandardHost;" name="addChild" params="Lorg/apache/catalina/Container;" return="V"><callsite instruction="20"><method declaringClass="Lorg/apache/catalina/core/ContainerBase;" name="addChild" params="Lorg/apache/catalina/Container;" return="V"><callsite instruction="15"><method declaringClass="Lorg/apache/catalina/core/ContainerBase;" name="addChildInternal" params="Lorg/apache/catalina/Container;" return="V"><callsite instruction="75"><method declaringClass="Lorg/apache/catalina/util/LifecycleBase;" name="start" params="" return="V"><callsite instruction="88"><method declaringClass="Lorg/apache/catalina/core/StandardContext;" name="startInternal" params="" return="V"><callsite instruction="517"><method declaringClass="Lorg/apache/catalina/util/LifecycleBase;" name="start" params="" return="V"><callsite instruction="88"><method declaringClass="Lorg/apache/catalina/session/StandardManager;" name="startInternal" params="" return="V"><callsite instruction="4"><method declaringClass="Lorg/apache/catalina/session/StandardManager;" name="load" params="" return="V"><callsite instruction="43"><method declaringClass="Lorg/apache/catalina/session/StandardManager;" name="doLoad" params="" return="V"><callsite instruction="61"><method declaringClass="Lorg/apache/catalina/core/ContainerBase;" name="getLoader" params="" return="Lorg/apache/catalina/Loader;"/></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callsite></method></callingContextTree>

有人可以帮我找出发生了什么吗?简而言之,如果我启动服务器,访问tomcat的主页并停止服务器。我再次这样做。tomcat 是否两次都以相同的顺序执行相同的方法?据我所知,事实并非如此。为什么 ?

谢谢你。

4

1 回答 1

0

看起来 Tomcat 在您使用它时会自动重新加载 Web 应用程序。您可能想要检查文件上相对于计算机系统时钟的时间戳。如果您将来修改了文件,则可以触发这种行为。检查您logs/catalina.out是否正在进行任何自动部署活动。

于 2012-08-07T14:15:36.287 回答