【发布时间】:2016-02-27 05:43:53
【问题描述】:
我正在开发 Java/Spark 框架中的应用程序,并且正在使用 Apache Velocity 模板引擎。我的问题是,每次我更改模板中的任何内容时,我都必须重新加载整个服务器。有没有办法让某种热交换能够在模板上工作而无需重新加载整个服务器?
private final VelocityEngine velocityEngine;
public VelocityTemplateEngine() {
Properties properties = new Properties();
properties.setProperty("resource.loader", "class");
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
properties.setProperty("class.resource.loader.cache", "true");
properties.setProperty("class.resource.loader.modificationCheckInterval", "2");
properties.setProperty("velocimacro.library.autoreload", "true");
properties.setProperty("velocimacro.permissions.allow.inline.to.replace.global", "true");
velocityEngine = new org.apache.velocity.app.VelocityEngine(properties);
//velocityEngine.init(); <-- This bit of code does not change anything when uncommented...
}
解决方案:
通过将 resource.loader 更改为 file 并将 class.resource.loader.class 更改为 org.apache.velocity.runtime 来解决。 resource.loader.FileResourceLoader
properties.setProperty("resource.loader", "file");
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
properties.setProperty("file.resource.loader.path", root + "/src/main/resources/"); // "root" points to the app folder
properties.setProperty("class.resource.loader.cache", "true"); // Enable cache
properties.setProperty("class.resource.loader.modificationCheckInterval", "2"); // Check for new files every 2 seconds
【问题讨论】:
-
感谢 Jaboc 的解决方案!现在我可以使用缓存的性能优化,无需重启服务器即可上传.vms
标签: java velocity spark-framework