我正在尝试管理我的play框架应用程序的依赖项。我试图删除/更新我的类路径中存在的一些jar。这甚至可能吗?
很好地解释了play框架如何管理类加载器。我理解为了在开发模式下获得代码的热重新部署Play正在重新启动应用程序类加载器并再次加载所有类。这是对的吗?
非常感谢!
答案 0 :(得分:2)
不是真的Play管理热重装,而是Play SBT插件。
Play应用程序的main
方法位于play.core.server.NettyServer
。该方法接收类型为SBTLink
的重新加载器,每次请求到达服务器时,应用程序都会委派检查重新加载器是否有任何代码更改的任务。
如果存在代码更改,则删除现有的类加载器并替换为包含更新的字节码的新类加载器。应用程序重新启动,但当然,JVM不是。
播放不是为了在运行时提供动态交换Jars而设计的。为此,您需要查看OSGi之类的内容(在使用它几年后我不会亲自推荐)。