`

tomcat下同一个应用通过不同路径加载为两个应用时的陷阱

 
阅读更多

在tomcat的webapps目录下,可以部署多个应用,例如应用的名称为appName,则访问该应用的url为:

host:port/appName

如果需要以host:port/ 路径来访问该应用,可以设置server.xml的Context属性

<Context path="" docBase="appName" />

 

其中docBase是应用存放的位置,path是访问路径
这样设置后可以用两种路径访问名为appName的应用,即:host:port/appName以及host:port/
由于tomcat在加载app的时候,每个应用有自己的classloader,所以用两种路径来访问同一个应用实际上是启动了两个不同的应用。虽然两个应用都运行在同一个JVM中,但是他们的类版本是不同的。
这样用两种路径访同一个应用时,类的静态变量是两个不同的版本,访问静态变量的值可能是不同的,需要特别注意这个隐藏的很深的陷阱。
 
分享到:
评论

相关推荐

    一个tomcat配置多个端口运行不同项目

    在IT行业中,Tomcat是一个广泛使用的Java应用服务器,主要用于运行Servlet和JSP应用程序。本教程将深入探讨如何配置Apache Tomcat 8.5.11以支持在一个实例中同时运行多个项目,每个项目绑定到不同的端口,以实现资源...

    Tomcat部署为每个应用分配不同端口

    【Tomcat部署为每个应用分配不同端口】的实践与理解 在IT行业中,Tomcat作为流行的Java Servlet容器,常用于部署Web应用程序。部署过程包括安装应用到Tomcat服务器,通常分为静态部署和动态部署两种方式。 **静态...

    Tomcat 9 虚拟路径配置

    虚拟路径是指在Web服务器中为某个Web应用指定一个不同于其物理路径的URL路径。通过这种方式,用户可以通过一个更简洁、更具语义化的URL来访问该Web应用。例如,在上面的例子中,Web应用的实际物理路径是`D:\Java\...

    Tomcat作为Web Server时,应用被重复加载的四种解决方案

    Tomcat作为Web Server时,应用被重复加载的四种解决方案 优劣分析

    tomcat类加载器

    5. WebApp ClassLoader:每个Web应用有自己的类加载器,它加载应用的`WEB-INF/classes`和`WEB-INF/lib`目录下的类和库。 "DevLoader"可能是Tomcat提供的一种特殊类加载器,设计用于开发环境。通常,开发者希望在不...

    Tomcat指定jdk路径

    在部署和配置Tomcat时,指定JDK路径有以下几个重要原因: 1. **版本兼容性**:不同的应用程序可能依赖于不同版本的JDK。 2. **性能优化**:某些版本的JDK可能在特定场景下表现出更好的性能。 3. **安全考虑**:使用...

    一台机器上部署不同版本JDK,两个Tomcat的解决方案

    ### 一台机器上部署不同版本JDK及两个Tomcat实例的解决方案 #### 一、背景介绍 在实际项目开发和运维过程中,有时会遇到需要在同一台机器上部署不同版本的Java Development Kit (JDK) 和多个Apache Tomcat服务器的...

    Tomcat启动顺序

    总结来说,Tomcat的启动顺序是一个自底向上,从核心到应用的过程,依次加载Bootstrap、System、Common、Shared和WebApp类加载器,确保了服务的正确初始化和Web应用程序的隔离运行。理解这一启动流程对于调试、优化和...

    Tomcat启动时类加载顺序

    - 如果两个不同的Web应用包含名称相同的类,它们将被视为不同的类,即使它们具有相同的全限定名。 - 例如,在不同的WebApp中存在相同包名`com.lizongbo`下的`TestClass`,这两个类会被加载为不同的实例。 2. **...

    tomcat配置不同版本的JDK路径

    在Tomcat的安装目录下的`bin`文件夹中,存在一个名为`catalina.bat`的批处理文件,该文件用于设置启动时的环境变量。例如,在示例中可以看到以下行: ```bash set JAVA_HOME=C:\ProgramFiles\Java\jdk1.5.0_11 ...

    tomcat 类加载机制 —— ClassLoader

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

    tomcat配置虚拟路径保存访问图片

    这里的`path="/photo"`表示在Tomcat容器中设置了一个名为/photo的虚拟路径。当用户通过浏览器访问`***`时,实际上访问的是`D:\upFiles`这个目录下的文件。`docBase`属性指明了这个目录的绝对路径。而`reloadable=...

    tomcat虚拟路径配置

    这个过程涉及到对Tomcat服务器的配置文件进行编辑,以确保Web应用可以通过一个友好的URL路径来访问。现在,我们将深入探讨如何配置Tomcat的虚拟路径。 一、理解虚拟路径与实际路径 1. 虚拟路径:这是用户在浏览器...

    java类加载器-tomcat中的类加载器

    1. 隔离性:每个Web应用都有独立的类加载器,避免不同应用之间的类冲突。 2. 重用性:通过Shared ClassLoader实现类的共享,提高内存利用率。 3. 安全性:防止恶意代码通过加载器侵入其他应用。 4. 动态性:可以在...

    Linux开发机上使用tomcat管理多个应用

    在Linux开发环境中,使用Tomcat来管理多个应用是一项常见的任务,尤其对于Java Web开发者来说更是必不可少。Tomcat是一个开源的、轻量级的应用服务器,主要用来运行Java Servlet和JavaServer Pages(JSP)。本篇文章...

    Tomcat加载顺序

    ### Tomcat加载顺序详解 Apache Tomcat作为一款广泛使用的开源Servlet容器,其类加载机制是理解和维护基于Tomcat的应用...开发人员在部署和调试应用时,应充分了解这一机制,以便于解决可能出现的类加载冲突等问题。

    tomcat7 tomcat9 两个资源

    在描述中,“两个资源”意味着提供的是两个不同版本的Apache Tomcat安装包,即Apache Tomcat 7.0.52和Apache Tomcat 9.0.37。这两个版本分别代表了Tomcat在不同时期的发展状态,每个版本都有其特定的改进和特性。 ...

    myeclipse下tomcat动态加载

    在IT行业中,开发和调试Web应用是一个常见的任务,而MyEclipse作为一款强大的Java集成开发环境,对于Web项目的开发提供了很多便利。Tomcat是Apache软件基金会的开源项目,是一款广泛使用的Java Servlet容器,用于...

    tomcat配置虚拟路径(window)

    虚拟路径在Tomcat中扮演着重要角色,它使得用户可以通过不同的域名或URL访问同一台服务器上的不同应用,而无需关心这些应用的实际物理位置。以下是如何在Windows系统中配置Tomcat虚拟路径的详细步骤: 1. **编辑...

    Java 类在 Tomcat 中是如何加载的(过程分析)

    Java 类在 Tomcat 中的加载过程是一个关键的环节,它涉及到如何有效地管理和执行Web应用程序的类。理解这一过程对于开发和调试基于Java的Web应用程序至关重要。以下是对标题和描述中所述知识点的详细解释: 1. **类...

Global site tag (gtag.js) - Google Analytics