有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java沙盒或墙式类加载器将应用程序与运行时环境分离

Tomcat的Web应用程序被包装到一个。war文件并将其放入Tomcat中。应用程序可以使用war文件和包含的jar文件中的类。这将Tomcat的运行时类与应用程序类分开

使用storm时(请参见storm project.net),没有类似的隔离。相反,推荐的方法需要创建一个“fatjar”,表示从各自的jar中解包后包含所有必需类文件的jar。对于简单的情况,这是可行的,但生成的fat jar必须正确合并所有合并jar中的所有META-INF/*文件,这不会半自动工作

我会毫不犹豫地编写自己的类加载器,它模拟类似于war文件的东西。除了我不知道如何拦截加载我部署的所有类的默认类加载器之外

我的理论是,我的应用程序的一个类首先由默认的类装入器装入。大概在它的static-部分中,我会施展魔法类加载器咒语,这样所有依赖类都将由我自己的类加载器加载,现在我将如何从我认为合适的任何地方获取必要的类

对于所描述的一般问题以及所需的特定魔法的任何提示,我们将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    拦截类加载器:默认类加载器是加载当前正在执行的类的类加载器。因此,如果您使用一个单独的类加载器来引入WAR的入口点,那么来自它或其(运行时/创建)后代的每个类引用都将默认通过该类加载器。然后,该类加载器可以决定它应该引用更高级别的类加载器什么,以及它应该使用自己的解析规则重新加载什么。简单的规则“只向父级询问我在这个插件中没有的东西”,也称为“父级最后一个”,通常就足够了