代码之家  ›  专栏  ›  技术社区  ›  Dead Programmer

为什么我们需要java中的用户定义类加载器

  •  7
  • Dead Programmer  · 技术社区  · 15 年前

    为什么tomcat有自己的类加载器。拥有用户定义的类加载器有什么好处

    3 回复  |  直到 15 年前
        1
  •  12
  •   meriton    15 年前

    它隔离了部署到容器中的各种webapplications;也就是说,一个webapplication的行为不会受到(取消)部署另一个webapplication的影响。

    每个webapp只看到自己的类,而不是其他应用程序提供的类。这允许不同的webapp使用同一类的不同版本。如果没有这种隔离,部署几个web应用程序将是一场噩梦。

    类似地,OSGI包有自己的类加载器,因此不同的包可以使用同一插件的不同版本。同样,这种隔离使得添加插件(及其依赖库)影响系统中其他插件的可能性降低。

        2
  •  8
  •   Jon Skeet    15 年前

    Tomcat(和其他应用程序容器)需要能够处理从WAR文件等加载类。如果不使用用户定义的类加载器,您将如何做到这一点?

    编辑:如果需要以“不寻常”的方式加载类或资源,基本上需要用户定义的类加载器。。。例如从EAR或WAR文件中。另一个例子是,可以从数据库或安全存储中加载类。

        3
  •  3
  •   Bill K    15 年前

    我曾经在一个系统上工作过,这个系统有一个从分布式数据库加载类的类加载器。这样,您就可以修改代码、编译代码并让编译器将其转储到数据库中,然后任何重新启动系统的人都可以立即加载代码(这是针对分布式客户机/服务器系统上的客户机的,在该系统中,管理员可以动态创建自己的屏幕模块,并将其推送到客户机)。

    顺便说一下,这有问题,理论很好,但我不能推荐。