今天在写一个用java发email的程序的一点总结:
在tomcat如果要使用mail session,必须保证activation.jar和mail.jar在同一个级别的classpath tomcat5默认是在${CATALINA_HOME}common/lib/下放了mail.jar,但是没有activation.jar,就这一点害的我今天忙了半天。
下面是tomcat启动加载类的顺序,记住在container环境下,类是有层次的,我今天就是把activation.jar 放在了WEB-INF/lib下,mail.jar在${CATALINA_HOME}common/lib/下,结果邮件怎么也发不出去。
代码
- Bootstrap: uses JVM classes & looks in $JAVA_HOME/jre/lib/ext
- |
- System: uses $CATALINA_HOME/bin/bootstrap.jar
- | and $JAVA_HOME/lib/tools.jar
- |
- Common: uses $CATALINA_HOME/common/lib
- / \ and $CATALINA_HOME/common/classes
- / \ and $CATALINA_HOME/common/endorsed
- / \ >> jsp and servlet API jars are here
- / +---------------------------------+
- / |
- Catalina: uses $CATALINA_HOME/server/lib |
- and $CATALINA_HOME/server/classes |
- >> catalina.jar is here |
- Shared: uses
- $CATALINA_BASE/shared/lib
- / \ and
- $CATALINA_BASE/shared/classes
- / \
- Webapp1 Webapp2 ... <--- **GREEDY**
- CLASSLOADERS
|
相关推荐
tomcat详解与启动加载顺序 tomcat详解与启动加载顺序
### Tomcat启动时类加载顺序详解 #### 一、引言 Apache Tomcat是一款开源的Servlet容器,主要用于部署Java Web应用程序。它支持最新的Servlet、JSP等规范,并且以其轻量级、简单易用的特点而受到开发者的青睐。在...
【标题】:Tomcat启动顺序 【描述】:Tomcat作为Apache软件基金会的开源Java Servlet容器,其启动过程是理解其工作原理的关键部分。Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、...
类加载器遵循双亲委派模型,这意味着当一个类加载器尝试加载类时,它首先会将请求委托给其父类加载器,直到到达顶层的Bootstrap ClassLoader,如果父类加载器无法找到该类,子类加载器才会尝试自己加载。 在Tomcat...
类加载遵循“双亲委托模型”,即当一个类加载器收到加载类的请求时,它会首先委托父类加载器尝试加载,只有当父类加载器无法找到对应的类时,才会自己尝试加载。这样保证了基础类库的一致性,同时也允许Web应用覆盖...
- **System类加载器**:加载Tomcat启动所需的类,如bootstrap.jar。 - **Common类加载器**:加载Tomcat共用的类库,这些类库位于`CATALINA_HOME/lib`目录下。 - **Webapp类加载器**:每个Web应用程序都有自己独立...
5. "tomcat加载类的顺序.doc":详细说明了Tomcat加载类的具体步骤和顺序,这对于理解和调试类加载问题至关重要。 6. "Tomcat源码研究.pdf":提供了一个全面的源码分析概览,可能包括了Tomcat的主要组件、设计模式...
这些脚本会执行一些初始化任务,包括设置环境变量、加载JVM参数、初始化类加载器以及启动服务器。 问题可能出现在以下几个方面: 1. **环境变量配置**:确保`JAVA_HOME`和`CATALINA_HOME`环境变量已正确设置。`...
`Tomcat启动分析-Servlet-Web.xml.doc`文档可能涵盖了启动过程中的关键步骤,包括加载`context.xml`(用于全局配置)、解析`web.xml`(Web应用的部署描述符)以及初始化Servlet和过滤器等。在启动过程中,Tomcat会...
StandardClassLoader与URLClassLoader类似,而WebappClassLoader则按照Servlet规范的顺序加载类。 在初始化过程中,如在Bootstrap的initClassLoaders方法中,会创建并设置这些类加载器。例如,commonLoader是通过...
在Web开发中,理解Web项目的启动时文件加载顺序是至关重要的,因为它直接影响到应用程序的初始化和运行。本文将深入探讨这个主题,重点关注Web容器如何处理配置文件`web.xml`,以及不同组件(如`context-param`、`...
1. 应用启动,Servlet容器查找并实例化实现ServletContainerInitializer的类(SpringServletContainerInitializer)。 2. SSCI发现并使用实现WebApplicationInitializer的类(比如我们的AACDSI子类)。 3. ...
类加载的顺序为: 1. /Web-INF/classes 2. /Web-INF/lib/*.jar 3. Bootstrap 4. System 5. $CATALINA_HOME/common/classes 6. $CATALINA_HOME/common/endores/*.jar 7. $CATALINA_HOME/common/lib/*.jar 8. $...
3. **类加载顺序问题**:在多模块项目中,如果两个或更多模块都包含了同一个本地库,而它们的加载顺序不正确,也可能导致UnsatisfiedLinkError。 针对上述问题,我们可以采取以下策略进行解决: ### 解决方法一:...
Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...
1. **Tomcat启动脚本catalina** Tomcat的启动脚本`catalina.sh/bat`是服务器运行的关键。这个脚本负责配置环境变量、初始化Java选项,并启动或关闭Tomcat服务器。通过研究这个脚本,我们可以了解如何配置JVM参数,...
2. **启动过程分析**:Tomcat的启动过程包括读取配置文件、初始化服务器、加载web应用等步骤。其中,`catalina.sh/bat`是主要的启动脚本,它会读取`conf/server.xml`等配置文件,这些文件定义了服务器的端口、线程池...