- 浏览: 1012607 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
转载请注明出处 http://blog.csdn.net/lovingprince
-------------------------------------------------------------------------------------------------------------------------------
一般类加载器分三类:引导类加载器、扩展类加载器、系统类加载器
请见这里的分析 http://blog.csdn.net/lovingprince/archive/2009/07/02/4317069.aspx
请记住类加载器的几个特点:
1、 双亲委托
2、 全局负责
Jetty 的 jetty_home/lib 下包含了 jetty 服务器运行所需要的 jar 包 , 而 jetty_home/lib/ext 下包含的服务器使用的一些扩展包,运行在 webapps 下特定应用的 WEB-INF/lib 和 WEB-INF/classess 是各个应用自己的使用的类,特定应用自己的类当然不能与其他应用分享。
-
系统类加载器
Jetty 启动方式 java -jar start.jar (内部实际执行 org.eclipse.jetty.start.Main 类)
那么这个 org.eclipse.jetty.start.M ain 是由哪个加载器加载的呢?很明显,这里没有其他的自定义类加载器,只有系统类加载器能够做这个工作。
-
系统自定义加载器
Jetty 自定义了一个的 Loader 类加载器,以系统类加载器做为父加载器,完成对 start.config 配置文件的读取 ( 注意,这里只是读取,并没有实例化里面的类,只是使用类加载器来确定里面的 class 是否可用 ) 。
接下来, Jetty 有两种运行方式,一种进程内运行 ( 通过反射执行 MainClass), 一种是进程外执行 ( 通过 Runtime.getRuntime().exec()), 进程外执行时由于线程上下文不能进程之间传递,因此相当于我们直接使用如下方式直接执行:
-cp 后是 classpath , org.eclipse.jetty.xml.XmlConfiguration 是 MainClass, 大家可以猜猜 org.eclipse.jetty.xml.XmlConfiguration 是哪个 ClassLoader 加载的?同样加载他的只能依靠系统加载器来完成。同时 classpath 中的 lib/ 中的类都由系统类加载器完成。
而进程内启动则不同,通过自定义的 Loader 加载器完成对 MainClass 的加载,通过反射方式运行 MainClass 的 main() 方法,后续所有的 lib/ 中的类都以该自定义 Loader 做为加载器。
-
WebApp 自定义类加载器
上面我们说了 jetty 服务器 lib/ 中的 jar 都是系统自定义加载器加载的,如果让这个系统自定义加载器来加载 WEB-INF/lib 、 WEB-INF/classes 下的类,那么在这个服务器下 WEB 应用之间可能就会相互影响了,并且服务器绝大多数时候并不需要应用 /WEB-INF/lib 下的类,于是 WebApp 自定义类加载器应运而生, Jetty 中默认叫 WebAppClassLoader 。
他是以当前线程上下文的 ClassLoader 为父 classloader, 如果上下文没有设定 classLoader ,俺么就使用加载 WebAppClassLoader 的加载器,如果还是没有,则采用系统类加载器。很明显,默认情况下,如果采用进程内运行,那么这个 parent 就是 Loader( 系统自定义类加载器 ) ,如果是进程外, parent 就是系统类加载器。
WebAppClassLoader 可以设定是否由 parent 优先加载 lib/ 、 classes 下的类。
Jetty 的 ClassLoader 体系结构可以使用下图来简单表示:
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1050调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1072Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 18151、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 934“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 9231、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 993概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 886下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 916<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1647安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1154Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 1020///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 1057J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1263六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1581HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2117最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 969Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 968在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1046maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 131124小时制时间 显示: public clas ... -
使用Spring的表单标签库
2011-11-22 20:08 107013.9. 使用Spring的 ...
相关推荐
2. **Java体系结构**:Java体系结构包括JVM(Java虚拟机)、类加载器、垃圾收集机制等核心组件。理解这些概念有助于优化代码性能和内存管理。此外,了解JDK(Java Development Kit)和JRE(Java Runtime Environment...
类加载器的设计对应用服务器的性能和稳定性至关重要,JBoss通过层次化的类加载器体系结构来优化资源利用,减少内存占用并提高加载速度。 ### 日志配置 最后,文档强调了日志配置的重要性。合理的日志配置不仅有助...
Eclipse有自己的类装入机制,它与标准JVM有所不同,能够支持插件体系结构。Eclipse类装入器允许开发者自定义类路径,使得在开发和调试过程中可以方便地替换或扩展类。理解类装入器的工作原理,有助于解决类冲突、...
创建类加载器。 3. 加载服务并部署应用程序。 - **体系架构**:Tomcat架构简单明了,易于部署和维护。 ##### Jetty架构体系 Jetty是一款轻量级的Web服务器,适用于嵌入式环境。 - **目录结构**: - `bin`:...
比如,可以编写自己的资源加载器来支持动态生成的资源,或者定制资源处理器以实现特定的编码转换。 通过以上详细解析,我们可以了解到E3.Resource作为一个强大的静态资源管理工具,它的功能涵盖资源加载、处理和...
5. **插件体系结构**:采用插件体系结构,便于功能的扩展和定制。 6. **多视图支持**:支持多种视图技术,如FreeMarker、JSP、Velocity,满足不同场景的需求。 7. **Validator功能**:内置强大的Validator后端校验...
4. **类加载机制**:分析类加载过程,双亲委派模型,以及如何利用类加载器进行优化。 5. **并发编程优化**:理解Java并发库,如线程池(ThreadPoolExecutor)、Future、Callable、Lock接口,以及如何避免死锁、活锁...
7. 插件体系结构:支持多种插件,具有很强的扩展性。 8. 多视图支持:同时支持FreeMarker、JSP、Velocity等模板引擎。 9. 强大的后端校验功能(Validator):提供了全面的验证机制。 10. 功能全面:基本上拥有Struts...
9. JFinal架构及扩展:这部分概述了JFinal架构的各个方面,包括其核心特性、组件、插件体系结构以及如何进行扩展。 JFinal的手册提供了一个完整的学习指南,从入门基础到高级特性,都进行了详细的介绍,以帮助...
JFinal的主要特点包括MVC架构、遵循COC原则、ActiveRecord支持、自动加载修改后的java文件、AOP支持、Plugin体系结构、多视图支持、强大的Validator后端校验功能和无第三方依赖。 在快速上手指南中,首先介绍了如何...
了解Class文件的内部结构,如常量池、字段表、方法表等,有助于理解类加载机制和字节码执行。 5. **JVM(Java虚拟机)**:这是Java程序运行的平台,深入理解JVM的工作原理对于性能调优至关重要。这部分可能涵盖类...
- MVC架构:JFinal采用模型-视图-控制器(MVC)的设计模式,使得开发结构清晰、易于理解。 - 无XML配置:遵循约定优于配置(COC)的原则,JFinal几乎无需XML配置文件,简化了项目的初始化过程。 - ActiveRecord模式...
这个认证针对的是Servlet和JSP(JavaServer Pages)技术,是Java EE(Enterprise Edition)认证体系中的一个重要组成部分。SCWCD模拟题合集是一个宝贵的资源,对于准备这项考试的考生来说,它提供了大量的实践题目和...
- 控制器类的定义; - HTTP请求方法(GET/POST)的选择; - 请求参数的获取与传递; - 跳转至前端页面或返回JSON数据。 - **应用场景**: - 负责处理用户的HTTP请求,并调用业务层的方法。 - **前端页面设计...
6. Plugin体系结构,提供良好的可扩展性。 7. 多视图支持,兼容FreeMarker、JSP等模板引擎。 8. Validator后端校验功能,确保数据的有效性。 9. 体积小巧,无第三方依赖,便于分发与部署。 SpringBoot是一个简化...
7. **Servlet的继承体系**:`GenericServlet`是所有Servlet的基类,它实现了`Servlet`和`ServletConfig`接口。`HttpServlet`是`GenericServlet`的子类,专门处理HTTP请求,提供了一些默认的处理方法,如`doGet()`、`...
理解类与对象的关系、继承和多态的概念,以及如何利用接口实现模块间的解耦,这些都是构建Java Web应用的基础。 2. **Servlet**:Servlet是Java Web应用程序的核心组件,用于处理HTTP请求和响应。理解Servlet生命...