tomcat5-类加载机制 Tomcat5 shared目录下加载的Spring如何管理Tomcat中部署的多个项目

问题描述

类加载机制 Tomcat5 shared目录下加载的Spring如何管理Tomcat中部署的多个项目 20C
我们知道Tomcat5.x类加载体系结构如下:不同的类加载器加载不同路径上的类或jar包。
Bootstrap
|
System
|
Common
/
Catalina Shared
/
Webapp1 Webapp2
有这样一个场景,在Tomcat5.x下部署了10个项目,每个项目都是用Spring来组织和管理的,可以吧Spring放到Tomcat的Common或Shared目录下让这些程序共享。Spring要对用户程序的类进行管理,自然要能访问到用户程序的类,而用户程序显然是放在WebApp/WEB-INF目录中的,那么背CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的程序呢。

解决方案

线程上下文类加载器,可以实现父加载器对子加载器的逆向访问。一个线程上下文类加载器是,在默认情况下,设置为其父线程的上下文类加载器。线程的继承关系开始与初始线程(它运行了程序)。初始线程的类加载器被设置为加载应用程序的类加载器。所以,除非显式的变更线程上下文类加载器,线程的上下文类加载器应该是应用程序的类加载器。也就是说,这个上下文类加载器能加载应用程序能加载的类。

解决方案二:
对这个问题我也非常疑惑,我一直搞不懂作者的意思是什么。比如说我将spring的jar包放到了common中,这样spring的jar包肯定就是被commonloder
加载.但是spring的配置文件或者说spring加载配置文件的入口肯定还是web程序,比如web1。这个时候web2肯定是无法访问web1加载的内容了,因为
web1和web2是两个不同webappclassloader加载的。其实这样来看的话,我感觉这是双亲加载才对啊,先是webclassloader加载了web1然后需要spring
相关类,而这些类(Spring中的类)发现是由commonclassloder加载的。这样我web1中的内容(比如bean节点配置的class)还是由webclassloder加载
的。所以这里真的不是很清楚。当然线程上下文类加载器确实是实现了加载器之间的互相访问。可是对于这个问题而言我是搞不懂什么情况。如果楼主
知道了告诉我哦。

解决方案三:
补充一下,难道作者说的是Spring加载配置文件的时候,Spring容器将bean加载完毕这个过程,这样的话应该就可以理解了,因为这个Spring容器中应该有一个参数制定了这是由Web1加载的。然后这样可以通过上下文加载器去加载Web1中的内容,是不是这样。我入行不久,不知道对不对,请指正。

时间: 2024-09-09 19:16:06

tomcat5-类加载机制 Tomcat5 shared目录下加载的Spring如何管理Tomcat中部署的多个项目的相关文章

XP系统下加载Q77芯片组的AHCI驱动安装指导

  故障现象: 主机Q77芯片组主板,已经在IDE硬盘模式下安装了XP系统,希望指导在Windows XP系统下手动加载AHCI驱动 解决方案: 注意: 1. 确认用户当前BIOS中硬盘模式为IDE,如果先选成AHCI模式则启动会蓝屏,一定在系统下成功加载AHCI驱动之后再在BIOS中将IDE改成AHCI模式 2. 本方法并不能保证在非标准操作系统上加载成功,同时操作前提示用户一定备份数据,加载有风险此方案非微软官方操作,不一定能100%成功 步骤: 1. 带用户在设备管理器中找到此选项,如图选

ie 8-easyui在IE8下加载很慢

问题描述 easyui在IE8下加载很慢 easyui在IE8下加载很慢,通过查看探查器发现combobox和datebox加载需要5,6S,有什么好的解决办法吗,浏览器要固定为IE8 解决方案 没有办法,ie8运行js就是慢,通常比chrome慢1个数量级,除非你愿意自己去优化easyui本身. 解决方案二: 不能很有效的解决,尽量优化自己的代码,去掉不必要的功能. 解决方案三: Easyui Datagrid IE8下数据加载很慢,IE会被卡住的直接原因

linux-Linux下, 加载动态库报宽字符错误.

问题描述 Linux下, 加载动态库报宽字符错误. 请教: 如题: 程序启动时加载某动态库(.so)时,提示加载失败 具体提示为 load lib???????.so fail, reason:Invalid or incomplete multibyte or wide character. 解决方案 可能是字符集不同的原因

img加载不出来-html下加载img的问题,图片资源访问变成下载

问题描述 html下加载img的问题,图片资源访问变成下载 下面是html的代码,在本地直接用chrome打开,可以显示图片. 下面有几个问题: 1 如果把这个html页面放到tomcat下面,图片显示不了. 2 如果直接在浏览器地址栏访问图片地址,不会直接显示图片,变成了下载图片 3 这个图片的连接是服务器上,有ip访问显示,如果是在百度里面随便找一张图片,图片是正常显示的. 请问这是什么原因,如何才能在tomcat下正常显示img 解决方案 主要还是检查路径问题 解决方案二: 在tomcat

webbrowser https-delphi xe67 webbrowser android 下加载https错误

问题描述 delphi xe67 webbrowser android 下加载https错误 哪位大侠能告诉我 delphi xe7 webbrowser android 下怎么加载https webbrowser1.URL:="http://***.***.**"以及 webbrowser1.Navigate"http://***.***.**"都提示找不到网页

关于xUtils 在无网络状态下加载本地缓存图片的问题

问题描述 关于xUtils 在无网络状态下加载本地缓存图片的问题 使用xUtils的BitmapUtils加载网络图片,默认缓存图片到本地.但是在无网络状态下再打开app 怎么加载缓存到本地的图片呢? 默认的缓存 只能获取到路径却得不到缓存的文件名,这样就没办法加载了.因为是开始是加载多张网络图片到viewpager所以没办法手动设置文件名.请问有没有好的解决办法?求大神知道 解决方案 http://www.oschina.net/question/2251728_174767 解决方案二: 这

ios-IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中

问题描述 IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中 绝大多数新闻资讯类应用开发过程中都会遇到这么一个问题: 规定每次从服务器最多只能获取20条数据,第一次刷新获取了20条最新的数据,添加到列表中,过一段时间有了30条未刷新的记录,这下问题来了:第二次刷新时是获取最新的20条还是接着第一次获取之后的20条数据放在列表前面?前者会导致列表中间空缺一部分数据,后者问题是要多刷新几次才能把所有数据获取到. 有过相关开发经验的大神们来说说你们的解决方案. 解决方案 刷新

弱引用-ios 与xib视图加载相关的内存管理问题

问题描述 ios 与xib视图加载相关的内存管理问题 在通过xib加载视图的时候,我们遵循一个准侧 那就是顶层视图 我们的成员变量要是强引用 若是非顶层视图,而是顶层视图的子视图,为了防止顶层视图被释放以后,字视图还存在而造成的内存泄漏,我们把这字视图的成员变量定义为弱饮用 现在问题是,在ARC模式下,假如我有个视图控制起ViewController,然后有个UIButton子视图 @interface ViewController:UIViewController {weak/strong I

C#如何实现从数据库查询到的值直接加载到窗体的控件中

问题描述 我是学生,现在在做项目作业,写的是三层架构的项目,可能学的还不是很够.现在想在C#的代码中查询数据库,从数据库查询到的值直接加载到窗体的控件中,请哪位高手提点,谢谢! 解决方案 解决方案二:这个社会上有2种人,一种靠写程序赚钱,前提是会写程序,另一种是不会写程序,但是需要程序,前提是需要拿钱来买.这两种人相互合作,相互依赖.如果你要想成为前一种人,就好好学习.就是因为学得不够,才需要做作业,让会的人代替你做,对你有什么用呢?你会说了,我不会,你写出来我好学习啊.实际上,这么简单的程序,