为什么tomcat有它自己的类加载器。什么是具有用户定义的类装载器为什么我们需要java中的用户定义类加载器
回答
它隔离了部署到容器中的各种web应用程序;也就是说,Web应用程序的行为不会受(部署)另一个Web应用程序的影响。
每个web应用程序只能看到自己的班,而不是那些由其他应用程序提供。这允许不同的webapps使用同一个类的不同版本。部署几个Web应用程序将是没有隔离的恶梦。
同样,OSGI束获得自己的类加载器,以便不同的包可以使用不同版本的同一插件。同样,这种隔离使得添加插件(使用其依赖库)不太可能影响系统中的其他插件。
Tomcat的(和其他应用程序容器)的优势,必须能够从WAR文件等处理加载类,你会如何能够做到这一点,而无需使用用户定义的类装载器?
编辑:基本上你需要用户定义的类装载器,如果你需要加载在“不寻常”的方式......如从EAR或WAR文件类或资源。作为另一个例子,您可能会从数据库或某些安全存储中加载类。
为什么他们不能使用引导类加载器或系统类加载器 – 2010-08-23 17:56:26
@Suresh S:那些知道如何处理WAR或EAR文件的人? – 2010-08-23 18:13:53
双方感谢从数据库加载breif答案。 – 2010-08-24 16:54:28
我工作的系统上一旦有这样的加载从分布式数据库类类加载器。这样你就可以修改你的代码,编译它并让编译器把它转储到数据库中,然后任何重启系统的人都会立即加载它(这是为分布式客户/服务器系统上的客户端提供的,管理员可以创建他们自己的屏幕模块,并将它们推送给客户端)。
这有问题,顺便说一下,伟大理论,但我不能建议。
- 1. 在Java中,为什么Exception类需要在类加载器需要之前提供给类加载器?
- 2. 为什么我们需要ioc容器
- 3. in solrImportScheduler为什么我们需要为delta导入定义reBuildIndexBeginTime?
- 4. 为什么我们需要通用服务定位器库?
- 5. pkcs11-tool:为什么我需要指定要加载的模块?
- 6. 装配需要什么?为什么我们使用它们?
- 7. 为什么我们需要Java 7中的钻石算子?
- 8. 为什么我们需要.htaccess的worpdress?
- 9. 在Qt中注册用户定义类需要什么?
- 10. Java类加载器:为什么先搜索父类加载器?
- 11. C++ - 为什么我们要定义这个朋友模板类
- 12. 为什么我们需要分开Apply和Applicative类型的类?
- 13. 为什么我需要在routerLink中添加'/',但我们在路由器中没有定义'/'?
- 14. 为什么我们需要装饰器中的包装函数?
- 15. 为什么我们需要装饰器中的`* args`?
- 16. 为什么我们需要android中的intent过滤器?
- 17. 为什么我们需要fieldset标签?
- 18. 为什么我们需要RIA?
- 19. 为什么我们需要9补丁?
- 20. 为什么我们需要在JavaScript
- 21. 我们为什么需要纤维
- 22. 为什么我们需要BeginGetResponse和BeginRead?
- 23. 为什么我们需要TensorFlow tf.Graph?
- 24. 为什么我们需要Bower和Nuget?
- 25. 为什么我们需要ng-click?
- 26. 为什么我们需要`ngDoCheck`
- 27. 为什么我们需要设置SONAR_RUNNER_OPTS?
- 28. 为什么我们需要Anaconda 2.7?
- 29. 为什么我们需要mktemp?
- 30. 为什么我们需要ClassMethods和InstanceMethods?
作为另一个答案,我可能会提到,我非常确定,如果覆盖类加载器,则可以使用代码执行一些非常令人印象深刻的元代码。它可以让你实现你自己的加密方案,并且应该能够做一些aspect-j风格的技巧(例如,每次调用“Log”时都标记它从中注册的类/行号的名称。让它成为“答案”,因为我没有做过这些东西,但我认为这是可能的。 – 2010-08-23 19:01:02