java - PlayFramework 如何使代码更改出现在运行时?

标签 java spring tomcat playframework playframework-2.0

PlayFramework 如何在不重新启动和重新部署的情况下使代码更改在运行时出现? 它内部使用tomcat吗?如果没有,我能否将我的 Spring 应用程序置于它使用的服务器容器之上,并获得运行时更改的好处。

注意:我知道在技术上也可以使用 Tomcat 做到这一点,但是,根据我的经验,它有很多错误,并且不能一直工作。有时,它甚至需要重新加载整个应用程序上下文(大约 16 秒),这就离题了。

最佳答案

正如 Zenklys 指出的那样,Play 的工作原理是检查 java 文件的最后修改日期,并将它们与运行时生成的 .class 文件交叉引用。如果它识别出某些内容已更改,则会在运行时重新编译它们。

在 Play 1.x 中 - 重新编译是使用 eclipse jdt 编译器 (org.eclipse.jdt.internal.compiler.Compiler) 完成的。如果您想查看 Play 1.x 中的代码,只需查看以下类 - https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

在 Play 2.x 中,Play 似乎是通过与 SBT 工具互连来实现的。检查一下 - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala

关于java - PlayFramework 如何使代码更改出现在运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982369/

相关文章:

android - GCM 演示不会在服务器和应用重启时接受消息

java - NoSuchMethodError : javassist. CtClass.getDeclaredClasses()

java - 使用 @Value 会产生 UnsatisfiedDependencyException

java - 从实际复制的 DuplicateKeyException 中检索特定的 MongoDB 键 (Java/Spring)

sql - 使用 hibernateTemplate、JdbcTemplate 进行 Spring 批量插入

Tomcat/IntelliJ 断开连接

java - Eclipse不可逆Dynamic Web Module 4.0选择; Tomcat 9 不支持

java - "Variable might not have been initialized"编译时未给出错误

java - 下拉菜单 "Conversion Error setting value ' ' 为 'null Converter' "

java - Android 两个AsyncTasks 串行执行还是并行执行? - 第二个是卡住,但结果还可以