深入了解JVM学习笔记——第九章 类加载及执行子系统的案例与实战
深入理解JVM学习笔记——第九章 类加载及执行子系统的案例与实战
注:本系列文章均摘录自《深入理解Java虚拟机:JVM高级特性与最佳实践》,作者周志明,我看的是第一版,现在第二版已经出了,购买地址 http://item.jd.com/11252778.html
1.主流的Java Web服务器都实现了自定义的类加载器(一般都不止一个),因为一个功能健全的Web服务器,都要解决如下几个问题:
(1)部署在同一个服务器上的两个Web应用程序所使用的Java类库可以实现相互隔离。
(2)部署在同一个服务器上的两个Web应用程序所使用的Java类库可以相互共享。
(3)服务器需要尽可能地保证自身的安全不受部署的Web应用程序影响。
(4)支持JSP应用的Web服务器,十有八九都要支持HotSwap功能。
2.OSGi(Open Service Gateway Initiative)中的每个模块(称为Bundle)与普通的Java类库区别并不太大,两者一般都以JAR格式进行封装,并且内部存储的都是Java Package和Class。但是一个Bundle可以声明它所依赖的Java Package(通过Import-Package描述),也可以声明它所允许导出发布的Java Package(通过Export-Package描述)。
3.OSGi的Bundle类加载器之间只有规则,没有固定的委派关系。