Tomcat增加Context配置导致启动的时候项目加载两次问题解决方案

1. 出现场景

eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/
现在需要改成这样访问http://localhost
修改tomcat的server.xml文件,增加如下配置<Context path="" docBase="myapp" reloadable="false"/>,修改后host部分如下:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="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"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

       <Context path="" docBase="myapp" reloadable="false"/>

      </Host>

  

2. 问题原因

虚拟目录引起的问题,我们在Host标签里配置了appBase="webapps",tomcat加载一次应用。在里配置了一次docBase,tomcat又去加载一次应用。

3. 解决办法

将appBase="webapps"置为appBase="",docBase="myapp"置为docBase="webapps/myapp"。配置如下:

<Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="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"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

       <Context path="" docBase="webapps/myapp" reloadable="false"/>

      </Host>

  说明:如果你的项目中的链接或者图片写的都是绝对路径的话,那么带有项目名称的绝对路径是不可以使用的。

eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/
现在需要改成这样访问http://localhost
修改tomcat的server.xml文件,增加如下配置<Context path="" docBase="myapp" reloadable="false"/>,修改后host部分如下:

时间: 2024-12-24 06:24:21

Tomcat增加Context配置导致启动的时候项目加载两次问题解决方案的相关文章

Tomcat启动后加载两次servlet的问题

前提: 1.存在某个应用:hello 2.该应用存放路径:D:\apache-tomcat-5.5.17\webapps\hello 3.Tomcat的server.xml部分配置信息如下: Java代码 ...  <Context path="" reloadable="true" docBase="hello"/>  ...  ...  <Context path="" reloadable="

Tomcat加载两次问题

前提介绍: 1.某个应用Dragon放置路径:/opt/apache-tomcat-7.0.47/webapps/Dragon 2.Tomcat的server.xml部分配置信息如下: <Context path="" reloadable="false" docBase="Dragon"/> 问题:此时tomcat启动时发现控制台打印两次信息. 问题原因: 因为Dragon应用本来就放在Tomat的默认webapp目录下(tomca

Spring task配置,及解决加载两次的方法

? 关于 启动Task任务同时加载两次的解决方法:? 将spring MVC部分的定义另外建立一个文件,同时把Task配置放在此处,然后在web.xml文件中的处加载 <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-pa

tomcat加载两次项目,事务初始化多次

1.  项目重复启动    appBase设置和docBase设为一样,不写appBase默认也是webapps 2.  事务 通常会这样配置 代码这样写 但jeesite中,在启动时基本上会扫描所有的service   这会有个冲突在配置文件中开启事务时初始化了一次定时任务,在扫描service时又初始化了一次,在执行定时任务时就会同时执行两个task 如果人品不好(比如我),项目加载两次,事务初始化两次,那么每次执行就会有4个task Jeesite中定义事务只需要写一个task类,配置文件

Tomcat Server Context 配置

context 元素代表一个web应用在特定的虚拟主机上运行.在一个 Host 元素中嵌套多个 Context 元素,但每个路径 path 必须是唯一的 还须定主一个 path="" 的 Context,缺省 web 应用.处理不能匹配任何 Context 的Conteext 路径的请求. 除在 Host 元素中嵌套,也可存放在单个文件中,放在 $CATALINA_HOME/conf/[enginename]/[hostname]/目录下面 应用的自动发布,这咱方法允许动态重新配置we

spring启动component-scan类扫描加载过程---源码分析

有朋友最近问到了 spring 加载类的过程,尤其是基于 annotation 注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,但是变化并不是特别大),另外,这里会从WEB中使用spring开始,中途会穿插自己通过newClassPathXmlApplicationContext 的区别和联系.

selenium启动Chrome时,加载用户配置文件

selenium启动Chrome时,加载用户配置文件 Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法: 一.加载所有Chrome配置 用Chrome地址栏输入chrome://version/,查看自己的“个人资料路径”,然后在浏览器启动时,调用这个配置文件,代码如下: #coding=utf-8 from selenium import webdriver option = webdriv

Tomcat中的类是怎么被一步步加载的?

前言 了解Tomcat的类加载机制,原来一切是这么的简单. 一.类加载 在JVM中并不是一次性把所有的文件都加载到,而是一步一步的,按照需要来加载. 比如JVM启动时,会通过不同的类加载器加载不同的类.当用户在自己的代码中,需要某些额外的类时,再通过加载机制加载到JVM中,并且存放一段时间,便于频繁使用. 因此使用哪种类加载器.在什么位置加载类都是JVM中重要的知识. 二.JVM类加载 JVM类加载采用:父类委托机制,如下图所示:JVM中包括集中类加载器: BootStrapClassLoade

配置Spring的用于解决懒加载问题的过滤器

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://j