tomcat 7 启动项目的createStandardContext方法是怎样被调用的?

问题描述

我在阅读tomcat 7 源代码的时候,不明白createStandardContext这个方法是怎样被调用到的。调用栈信息如下 :createStandardContext这个方法用于加载web应用。我的问题是:这个线程是在什么时候加入到线程池的?这个rmi请求是在哪里调用的?RMI TCP Connection(3)-127.0.0.1@951 daemon, prio=5, in group 'RMI Runtime', status: 'RUNNING' at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:569) at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426) at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1359) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788) at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(AccessController.java:-1) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619)

解决方案

亲,Tomcat加载Web应用(调用StandardContext对象)分为两种策略:1.Tomcat默认加载目录webapps下的所有应用,也就是每个应用就是一个StandardContext。调用顺序为:StandardHost -> HostConfig ->StandardContext.2.加载server.xml中配置的context节点。 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/> <Context docBase="demo" path="/demo" reloadable="true" source="org.eclipse.jst.jee.server:demo"/></Host>注:具体代码参见HostConfig中的以下方法:1. protected void deployDescriptor(ContextName cn, File contextXml) 该方法加载用户配置的context.2.protected void deployDirectory(ContextName cn, File dir) 该方法加载webapps下的应用。

时间: 2024-10-25 21:06:05

tomcat 7 启动项目的createStandardContext方法是怎样被调用的?的相关文章

Win7设置开机启动项命令的方法

  我们都知道电脑刚装完Win7的系统,开机速度很快,但使用一段时间后会发现开机启动越来越慢.导致开机启动越来越慢的原因有很多,比如:电脑使用久了,不知不觉启动的项目就多了,系统垃圾也多了.那Win7开机启动项怎么设置?下面就和大家说一下Win7开机启动项怎么设置,设置开机启动项命令的方法. 具体步骤如下: 1.在"开始"-"运行"对话框中输入"Msconfig"就打开"系统配置实用程序". 2.Msconfig是Window

win7开机启动项的设置方法是什么

  win7旗舰版开机启动项的设置方法是什么?对此在下面小编会一一的进行解答.目前很多人都在使用win7系统,不过由于新手对于具体的操作和设置不了解,因此操作的过程中会出现各种各样的问题,开机启动项的设置方法请看下面的解答. 方法1.系统自带的开机启动项设置 1.打开开始---运行,接着就调出出运行界面(同时按住快捷键win+R ). 2.在输入框输入msconfig"命令字符,接着单击回车键确认. 3.接着就可以看到相关的设置界面了,然后就可以根据自己的需求对开机启动项进行设置和修改了. 以上

Mac OS X系统下设置开机自动启动运行软件(开机启动项)的方法

  开机自行启动运行软件可以说是把双刃剑,一方面方便操作,另一方面开机启动项过多会降低开机速度.今天就介绍苹果电脑 Mac OS X 系统下设置开机自动启动运行软件(开机启动项)的方法. 右击 Dock 上的图标即可设置软件随 Mac 开机自动加载运行 首先是最简单的设置 Mac 开机自动启动运行软件(开机启动项)的方法:右击苹果电脑 Dock 栏上的软件图标,点击"选项",选择"在登录时打开". OK,下次开机,该软件会和 Mac OS X 系统一起自动启动.反之

Windows 7禁用开机启动项简单设置方法

1. 我们在windows 7 界面点击左下角的 开始菜单,找到里面的运行,点击打开,然后在运行框中输入"msconfig",弹出系统配置对话框: 2. 在我们在系统配置中切换到 启动, 你会看到有很多的 计算机的启动项 如下图所示全部都是应用程序的名称: 3. 如果不想让某一启动项继续开机启动,则把此开机启动项前面的勾去掉,另外,也可以选择全部启用或全部禁用.然后点击确定. 4. 重启生效. 记住一定要重启电脑才会生效,当然你什么时候重启电脑这个没关系,下次重启之后就生效了. 另一种

Windows7开机启动项管理实用方法

我们知道,Windows中有自带的启动文件夹,它是最常见的启动项目,但很多人却很少注意仔细检查它.如果把程序装入到这个文件夹中,系统启动就会自动地加载相应程序,而且因为它是暴露在外的,所以非常容易被外在的因素更改. 一.具体的位置是"开始"菜单中的"启动"选项 在硬盘上的位置是:C:Documents andSettingsAdministrator"开始"菜单程序启动; 在注册表中的位置是: HKEY_CURRENT_USERSoftwareM

win8开机启动项的关闭方法

  当朋友们每一次开启电脑的时候,我们的电脑也随之就会产生很多开机自动启动.自动加载的程序.每一次的开机启动项太多,会严重的影响到我们电脑的开机速度.系统的运行速度.虽然大家不用手动去启动那些程序,但是也没有必要都设置成开机启动吧!但是当前我们很多的也能用户朋友们对这个系统都不是很熟,所以小编带大家一起去看下怎么操作? 关闭win8启动项的图文教程: 1. 在传统界面,可以在任务栏右键单击选择"任务管理器"; 2. 点开后如果您看到的界面; 3.请点击"详细信息",

Windows 7系统开机启动项的管理方法

  第一步.具体的位置是"开始"菜单中的"启动"选项 在硬盘上的位置是:C:Documents andSettingsAdministrator"开始"菜单程序启动; 在注册表中的位置是: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun 第二步.Msconfig Msconfig是Windows系统中的"系统配置实用程序",它管的方面可够宽,包括:syste

设置Windows 7系统开机启动项优化的方法

大家知道,在Windows系统里,有个非常实用的命令程序:msconfig,即系统配置实用程序.该程序为系统启动和加载项设置,合理的配置可以大大提升系统的启动速度和运行效率,大家也可以借助软件来优化,如360安全卫士里也就很全的开机加速优化功能,这里系统之家以电脑设置为例,不介绍使用软件优化,因为软件优化比较简单,但对于爱动手用户建议还是自己靠优化电脑本身来优化了. 首先找到windows 7开始运行--在运行命令框中输入:msconfig 回车确认进入系统配置实用程序 找不到windows 7

解析Tomcat的启动脚本--catalina.bat_Tomcat

概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 catalina.bat 脚本. 至于 setclasspath.bat 这个脚本, 相信看完这一篇, 就可以自己看懂这个脚本了. 可以点击下载 [ setclasspath.bat 脚本 ]查看附注释的 setclasspath.bat 脚本 catalina.bat 这个脚本的代码有点多, 就单独弄