0 0

Tomcat下不同应用的启动顺序怎么更改???10

Tomcat下有两个应用aa , bb

现在的启动顺序是先启bb  后启动aa

请问:怎么样设置下能先启动aa 等aa启动好后再启动bb ????
问题补充:
没有办法? 可是为什么每次一定都是bb先启动?
Tomcat是按什么来决定先启动哪一个应用?
问题补充:
如果是按文件夹的字母顺序,为什么是bb先启动,而不是aa?
问题补充:
谢谢大家的回复.可能问题的根结不在启动顺序吧.
因我配了个RMI.  bb要调用aa中的方法. 应该配两个虚拟主机吧
2008年8月06日 14:56

5个答案 按时间排序 按投票排序

0 0

采纳的答案

听说tomcat 5 相比 tomcat 4 在结构上有很多变化,那么Tomcat 6有没有什么变化也没有过细去学习过。这里以tomcat 6为参考物来和大家讨论一下楼主的问题。

Tomcat下的一个web 应用通常是对应 Server.xml 下<Host>的一个子元素<Context>的。在商业发布你的应用应用的时候你应该在<Host>下面配制和你的web 应用对应的<Context>. 但是在平时大家开发测试的时候发现不怎么做,应用也能跑,通常大家都是扔一个war包或干脆扔一个文件夹就完了,再启动tomcat,不错就可以用了。

我们来插一段,仔细看看Tomcat中conf目录下的Server.xml文件,他基本上反映了正个Tomcat的结构。tomcat 是有容器中间组成的,而且容器嵌套的,一层包着一层,中间还有少量的公共插件。

tomcat 是点火式引擎,由org.apache.catalina.startup.Bootstrap 这个类来点燃整个系统的启动。Bootstrap 就像一根炮引。启动顺序为:
Server{init()-->start()} --> Service{start()} --> Connector(start()) --> Engine{start()} --> Host{start()} --> Context{start()}

在启动过程中tomcat 就以Server.xml这个配置文件为主导的。……^_^
下面我们回到楼主的我问题。
应用的启动顺序是怎么定的呢,其实就是tomcat如何加载Context的问题。
让我们打开apache-tomcat-6.0.16-src\java\org\apache\catalina\startup目录下的HostConfig.java文件,因为Context是Host的子元素,所以我们就是要看Host启动时,是如何加载Context的。找到HostConfig类的start()方法:

    ……
    public void start() {

        ……
         //deployOnStartup见StandardHost 
        if (host.getDeployOnStartup())              
            deployApps();
        
    }

    ……

     protected void deployApps() {

        File appBase = appBase();
        File configBase = configBase();
        // Deploy XML descriptors from configBase
        deployDescriptors(configBase, configBase.list());
        // Deploy WARs, and loop if additional descriptors are found
        deployWARs(appBase, appBase.list());
        // Deploy expanded folders
        deployDirectories(appBase, appBase.list());
        
    }
    ……

     protected File appBase() {

        if (appBase != null) {
            return appBase;
        }

        File file = new File(host.getAppBase());
        if (!file.isAbsolute())
            file = new File(System.getProperty("catalina.base"),
                            host.getAppBase());
        try {
            appBase = file.getCanonicalFile();
        } catch (IOException e) {
            appBase = file;
        }
        return (appBase);

    }
    ……

而apache-tomcat-6.0.16-src\java\org\apache\catalina\core\StandardHost.java
private boolean deployOnStartup = true;



从deployApps()方法我们可以看出,tomcat是先加载
Server.xml配置文件下的Context元素的,然后是处理webapps下的war应用,接着是文件夹列表(appBase.list()))。这个文件夹就是Java 里面的文件夹了。如果你真的想知道这些文件夹应用的先后顺序,你可以创建一个文件目录,该目录下包含很多目录,组成一个链表,尝试过后就应该知道先后顺序了。我猜想应该是字典顺序。^_^.

楼主的应用有启动先后次序关系吗,希望我说的这些对你有帮助,我比较感兴趣的是楼主为什么有这个问题。

2008年8月07日 14:12
0 0

假设server.xml中只配了一个Context
……
<Context docBase="cc" path="/cc"/>
……

webapps 下有 aa, bb.war,cc,dd  (这个顺序是系统固定的,系统是按字典顺序排的)


那按上述分析启动顺序是 cc, bb, aa, dd

上述说法算是我的论证和推理吧,有出入的地方,还请多包含。

2008年8月07日 14:21
0 0

http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html
看看官方怎么说的嘛,英文的哦,不过对你有帮助.

2008年8月06日 16:05
0 0

看一下这个帖子,希望对你有帮助,或者你在baidu里搜tomcat 工程 启动顺序
http://bbs.tech.ccidnet.com/read.php?tid=565012

2008年8月06日 15:58
0 0

没有办法设置不同的web app之间的先后启动顺序。

2008年8月06日 14:57

相关推荐

    Tomcat启动顺序

    Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、公共库、共享库以及Web应用程序。 【详细知识点】: 1. Bootstrap类: Tomcat的启动始于Bootstrap类,这是Tomcat服务器的主入口点...

    window下解决tomcat自启动终极方案

    3、 如存在多个应用,可重复上述处理,如果应用中存在先后顺序,可以优先启动被依赖的应用TOMCAT,设定延迟时间后,再启动其他的应用TOMCAT。 4、 autoRun.bat修改保存成功后,可以双击测试,确保启动无误。 5、 ...

    Tomcat服务器配置、启动分析、Servlet文件配置

    在启动过程中,Tomcat会检查并解析`webapps`目录下的所有应用,读取每个应用的`WEB-INF/web.xml`,配置Servlet和过滤器的映射,设置会话超时和其他运行时参数。了解启动流程有助于优化应用性能和排查问题。 Servlet...

    JBOSS启动顺序、JBOSS占用的端口

    在运维过程中,了解JBoss的启动顺序以及其占用的端口对于调试、监控和优化系统性能至关重要。 **JBoss启动顺序** JBoss的启动过程大致分为以下几个阶段: 1. **环境准备**:首先,JBoss会检查运行环境,包括Java...

    解决tomcat5.5以上不能用命令行启动的问题

    在IT行业中,Tomcat是一款广泛使用的开源Java应用服务器,尤其以其轻量级、高效的特点而闻名。当遇到“Tomcat 5.5以上版本不能用命令行启动”的问题时,通常涉及多个可能的原因,需要逐步排查。下面我们将深入探讨这...

    tomcat

    2. **启动过程分析**:Tomcat的启动过程包括读取配置文件、初始化服务器、加载web应用等步骤。其中,`catalina.sh/bat`是主要的启动脚本,它会读取`conf/server.xml`等配置文件,这些文件定义了服务器的端口、线程池...

    Nutch在Tomcat下的部署.doc

    Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,而Tomcat是一款流行的Java应用服务器,常用来部署Web应用程序。在本文中,我们将深入探讨如何在Tomcat环境下部署Nutch以及解决相关问题。 首先...

    linux中设置tomcat自启动.pdf

    如果需要调整服务的启动顺序或者依赖关系,可以使用`chkconfig --level &lt;level&gt; tomcat on/off`命令,其中`&lt;level&gt;`代表运行级别(如2、3、4、5)。此外,如果Tomcat安装路径或版本发生变化,需要更新脚本中的相应...

    tomcat类加载器

    通常,开发者希望在不重启服务器的情况下更新代码,这时DevLoader可能会有热部署功能,即在代码更改后,能自动或手动重新加载修改过的类,而无需停止和重新启动Tomcat服务。这大大提高了开发效率。 类加载器在...

    用批处理(.bat)自动配置Tomcat服务器

    3. **复制和部署应用**:如果需要自动部署应用到Tomcat,可以在批处理脚本中使用`xcopy`命令来复制应用程序的WAR文件到Tomcat的webapps目录下。例如: ``` xcopy "C:\MyApp\myapp.war" "%TOMCAT_HOME%\webapps\" /...

    tomcat6.0和7.0的exe文件

    - 引入了嵌入式模式,可以直接在应用中启动和管理Tomcat,无需独立的服务器进程。 - 添加了对JASPIC(Java Authentication Service Provider Interface for Containers)的支持,增强了安全功能。 - 对WebSocket协议...

    tomcat 类加载机制 —— ClassLoader

    Tomcat作为一个Web服务器,其类加载机制设计得相当灵活,以便支持不同Web应用之间的隔离和热部署。 Tomcat的类加载机制主要由以下几部分构成: 1. **Bootstrap ClassLoader**:这是JVM启动时的第一个类加载器,...

    Tomcat与JavaWeb开发技术详解

    3.2 配置Context:通过修改Tomcat的server.xml或使用Context元素在webapps目录外定义应用,可以自定义应用的初始化参数、加载顺序等。 3.3 负载均衡与集群:Tomcat支持通过mod_jk、mod_proxy等Apache模块实现负载...

    tomcat8源码-eclipse工程

    4. **类加载机制**:Tomcat有独特的类加载机制,确保不同Web应用之间的类隔离,避免冲突。这涉及到Web-INF/classes和lib目录的加载顺序,以及“common”、“catalina”、“shared”类加载器的角色。 5. **Servlet...

    Tomcat(二) Tomcat实现:Servlet与web.xml介绍 以及 源码分析Tomcat实现细节1

    在web.xml文件中,你可以通过`&lt;listener&gt;`元素定义监听器,当Web应用启动时,Tomcat会实例化这些监听器并调用相应的初始化方法。 ```xml &lt;listener-class&gt;org.springframework.web.context....

Global site tag (gtag.js) - Google Analytics