我正在使用 Java (SE) + 一些开源库开发服务器应用程序。这是一个游戏,所以我认为它有时必须更新。只要应用程序正在跟踪客户端的状态,使用它,并且还支持客户端 session (以专用线程的形式)和存储对这些播放器实例的引用的单例,我想重新加载 JVM 进程(例如安装一个新版本的 jar 文件),这样一些类和实例就不会被 GC 删除,而是挂接到新启动的进程中。
可能的情况:
我有一个游戏版本 1.0 在服务器上运行。我需要在 1.2 中添加一些新功能。但是100名玩家正在互相战斗。我需要安装version-1.2,玩家可能会感觉有些卡顿,但是即使jar的版本发生了变化,他们也应该可以继续战斗。
如何做到这一点?
最佳答案
看看 JRebel 作者对该主题的精彩总结:
http://zeroturnaround.com/blog/reloading_java_classes_401_hotswap_jrebel/#!/
关于java - 重新加载保留 session 的 JVM 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938254/