【发布时间】:2012-08-04 07:23:18
【问题描述】:
我正在尝试分析 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 是否两次都以相同的顺序执行相同的方法?据我所知,事实并非如此。为什么 ?
谢谢。
【问题讨论】:
-
请发布两个不同的序列。
-
请仔细阅读我编辑的问题。我已经上传了其中一个差异。
标签: jsp tomcat web-applications servlets profiling