Jvm 运行时播放框架卸载jar

Jvm 运行时播放框架卸载jar,jvm,playframework-2.0,classloader,Jvm,Playframework 2.0,Classloader,我正在尝试管理我的play framework应用程序的依赖项。我正在尝试删除/更新类路径中存在的一些jar。这可能吗 如果能解释一下play框架是如何管理类加载器的,那就太好了。我了解到,为了在开发模式下获得代码的热重新部署,Play正在重新启动应用程序类加载器并再次加载所有类。对吗 非常感谢 管理热重新加载的不是真正的Play,而是Play SBT插件 播放应用程序的main方法位于Play.core.server.NettyServer中。该方法接收类型为SBTLink的重载程序,每次请求

我正在尝试管理我的play framework应用程序的依赖项。我正在尝试删除/更新类路径中存在的一些jar。这可能吗

如果能解释一下play框架是如何管理类加载器的,那就太好了。我了解到,为了在开发模式下获得代码的热重新部署,Play正在重新启动应用程序类加载器并再次加载所有类。对吗


非常感谢

管理热重新加载的不是真正的Play,而是Play SBT插件

播放应用程序的
main
方法位于
Play.core.server.NettyServer
中。该方法接收类型为
SBTLink
的重载程序,每次请求到达服务器时,应用程序都会委托检查重载程序是否有任何代码更改的任务

如果代码发生了更改,那么现有的类加载器将被删除并替换为包含更新字节码的新类加载器。应用程序会重新启动,但JVM当然不会


Play的设计目的不是在运行时提供JAR的动态交换。为此,您需要看看OSGi之类的东西(在使用它几年后,我个人不会推荐它)。

为什么不推荐OSGi?它似乎满足了我的需求,但我真的不知道它是如何与我的Play framework应用程序集成的?如果能有一些指导就太好了,非常感谢!OSGi的利弊是一个相当长的争论。就个人而言,我不喜欢用它来构建在线应用程序。对于以插件为核心功能的基于服务的体系结构,即IDE之类的工具,这是一个不错的选择,但在实践中,我发现,在OSGi上为web应用程序投入时间通常是不值得的。实际上,您无法将Play与OSGi集成在一起——它们是为相对不同的用例设计的。OSGi可能会解决您的运行时需求,但它对您的项目有多重要?它不是我的项目必须具备的需求,但在许多情况下,它是一个可以帮助我们的功能。您将如何使用Play应用程序实现它?还是它迫使我改变我的框架?我发现vert.x似乎能满足我的需要,你对此有什么看法吗?谢谢。我想你会很难通过Play实现这一点,因为它不是为你所说的模块化而设计的——它是一个旨在成为快速开发平台的平台。如果你想要快速的结果,并且拥有一个小团队,那么就放弃你的模块化需求——如果你有一个大型项目,其中有多个团队想要部署不同版本的软件包,而不必将它们的所有版本耦合在一起,那么你可以考虑OSGi。