1 Tomcat启动后,产生了一套类装载器,Tomcat4.x类装载器组织关系为:Bootstrap->System->common->catalina,shared->webapp,Tomcat6的类装载器组织关系为:Bootstrap->System->common->webapp,
这里的的Bootstrap为Java虚拟器内嵌的类装载器与ExtClassLoader的总称,负责加载java核心包中的类,以及存放在<java_home>/jre/lib/ext目录下的类。
2 system即系统类加载器,通常情况下就是AppClassLoader,负责加载calsspath环境变量中的类,Tomcat不会继承操作系统上原理设置好的CLASSPATH环境变量的内容,而是将环境变量重新设置仅包含如下的两个jar包:
<catalina_home>/bin/bootstrap.jar
<java_home>/lib/tools.jar
3 Common类加载器负责从<catalina_home>/common/classes中的.class类文件和<catalina_home>/common/lib中的jar包加载类
4 Catalina类加载器负责从<catalina_home>/server/classes中的.class类文件和<catalina_home>/server/lib中的jar包加载类.
5 shared类加载器负责从<catalina_home>/share/classes中的.class类文件和<catalina_home>/share/lib中的jar包加载类.
6 webappx类加载器负责从当前web应用程序的/web-inf/classes中的.class类文件和/WEB-INF/lib中的jar包加载类。webappx类加载器加载的类只对当前web应用程序可见。对与运行每个web应用程序的线程,他们的上下文类加载器就是他们各自的webappx类加载器。webappx类加载器采用的也是标准委托模式。
直接在tomcat中运行Servlet程序,依据Tomcat对Servlet的加载机制,要做到两点,才能成功。
1,要把编译好的.class文件放在web应用程序\WEB-INF\classes目录中。
2,要将servlet.jar文件复制到<java_home>/jre/lib/ext目录中,或者修改setclasspath.bat文件,将servlet.jar文件的路径之间到CLASSPATH环境变量中。
启动Tomcat后,就可以使用Servlet映射的路径访问这个Servlet了。
Servlet的编译和运行环境
他们是完全不同的两个环境,解释执行Servlet的过程是在Tomcat服务器程序中进行的,Servlet的运行环境就是Tomcat服务器程序所设置的环境。Servlet的编译环境是某个命令行窗口或开发工具所设置的环境,编译Servlet有javac命令完成。
编写一个自动编译的工具,这里使用的是Tomcat6,新建一个complier.bat文件,内容如下:
rem把servlet.jar文件加入到classpath环境变量的路径列表中
set CLASSPATH=D:\apache-tomcat-6.0.18\webapps\lesson4;%CLASSPATH%
rem 编译servlet并把.class文件放到D:\apache-tomcat-6.0.18\webapps\lesson4\WEB-INF\classes
javac -d D:\apache-tomcat-6.0.18\webapps\lesson4\WEB-INF\classes %1
rem编译完后暂停,便于查看编译错误。
pause
文章信息来源:
http://aguang520.iteye.com/blog/794659
分享到:
相关推荐
6. 装载Servlet:根据`web.xml`中的配置,Tomcat实例化Servlet类,并调用其`init()`方法进行初始化。 7. 服务器开始监听并处理请求:一旦启动完成,Tomcat就开始接受HTTP请求,将请求分发给相应的Servlet进行处理。 ...
在 Tomcat 中使用 JNI 时,需要了解类装载器的问题。不能将本地库或者他们的 JNI 接口放在应用程序的 WEB-INF/lib 或者 WEB-INF/classes 目录下,否则可能会导致类装载器的问题。调用 System.loadLibrary(String) 的...
2. **容器(Containers)**:容器是Tomcat的核心,用于装载和管理Web应用程序。容器可以分为四个层次:Engine、Host、Context和Wrapper,分别对应整个服务器、虚拟主机、Web应用程序和具体的Servlet或JSP页面。 - ...
Apache是一个卡车,可以装载静态网页等,而Tomcat是一个桶,可以装载JSP、Servlet等动态网页。如果我们想装载水(JSP、Servlet等),我们需要一个卡车(Apache)和一个桶(Tomcat)。 Apache和Tomcat的区别还可以...
当Web容器启动时,它会根据`web.xml`配置文件中的信息来装载Servlet。这个过程中,如果在`web.xml`中配置了`<load-on-startup>`元素,那么该Servlet将在服务器启动时自动装载。例如: ```xml <servlet> <servlet-...
9. Servlet生命周期:包括装载Servlet、创建Servlet实例和销毁三个阶段。装载是Web容器加载Servlet类,创建是为每个请求创建Servlet实例,销毁是在Web应用停止或卸载时释放资源。 10. JSP开发模式:主要有两种模式...
4. **生命周期管理**:Tomcat通过`Lifecycle`接口和`LifeCycleListener`机制来管理Servlet的生命周期,包括装载、初始化、启动、停止和卸载等阶段。 5. **JSP编译**:Jasper会监控JSP文件的改动,自动重新编译。JSP...
- **Container**:用于装载和管理Servlet,提供生命周期管理服务。主要包括Engine(代表整个服务器)、Host(代表虚拟主机)、Context(代表Web应用)以及Wrapper(代表Servlet实例)四个层次结构。 - **Valve**:...
- **Servlet生命周期**:Servlet的生命周期由容器(如Tomcat)管理,包括装载Servlet类、实例化Servlet、初始化(调用`init()`)、处理请求(调用`service()`)、清理资源(调用`destroy()`)等阶段。 3. **...
- Context容器是Tomcat中直接管理Servlet的组件,每个Context对应一个Web应用程序。在Tomcat的配置文件中,可以通过`<Context>`元素来定义Context,例如设置路径、文档根目录等属性。 3. **Servlet解析和加载**: ...
- 第一种形式定义于 `Servlet` 接口中并在 `GenericServlet` 类中实现,第二种形式则直接定义在 `GenericServlet` 类中。 - **初始化参数**:初始化参数用于向 Servlet 提供配置信息。可以通过 `ServletConfig` ...
1. 装载Servlet:容器根据需要动态加载Servlet,可能在服务器启动时完成。 2. 创建Servlet实例:每个Servlet只有一个实例,由容器负责创建。 3. 初始化:容器调用Servlet的init方法进行初始化。 4. 服务:当收到请求...
另外,当Servlet类文件被更新时,容器也会重新装载Servlet。在这一阶段,Servlet容器会创建Servlet的一个实例,并调用`init()`方法进行初始化。`init()`方法在整个Servlet生命周期中只被调用一次,通常用来进行一些...
- **Application类加载器**:也称为系统类加载器,它根据classpath加载应用程序类,是Extension类加载器的子加载器。 3. Tomcat类加载机制 Tomcat服务器的类加载机制有所不同,主要有四个类加载器: - **...
Apache Tomcat是一款开源的Servlet容器,它实现了Servlet和JavaServer Pages (JSP) 技术规范,能够作为独立的应用服务器运行Web应用程序。Tomcat因其简洁性、灵活性以及较低的资源消耗等特点,在中小型项目开发中...
Extension类加载器加载扩展库,如jre/lib/ext目录下的类,而Application类加载器则加载应用程序的类路径中的类。 类加载器之间的关系遵循委托模型机制,即每个类加载器在尝试加载类时,首先委托其父加载器尝试加载...
`Context`负责装载Servlet和处理请求。 2. **Jasper**:JSP的处理涉及`org.apache.jasper.JspC`和`org.apache.jasper.compiler.Generator`类,它们负责将JSP转换为Servlet源代码,并通过`java.sun.net....
当Web容器启动时,根据配置文件(如web.xml),它会装载Servlet类并创建一个Servlet实例。初始化阶段,Servlet会执行`init()`方法,通常用于设置初始参数。在服务过程中,每当有新的请求到来,Web容器并不会每次都...