Tomcat安全管理器ON时,Velocity初始化失败

时间:2018-03-25 14:18:25

标签: java velocity tomcat8

我正在使用Velocity 1.7和Tomcat 8.我有这段代码:

java.util.Properties props = new java.util.Properties();
props.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS,NullLogChute.class.getName());
try {
    Velocity.init(props);
} catch (Exception e) {
    e.printStackTrace();
}

当我在没有安全管理器的情况下启动tomcat时它工作正常,但是当我使用安全管理器启动Tomcat时,我发现了这个异常:

  

显示java.lang.NullPointerException    在java.io.Reader。(Reader.java:78)    在java.io.InputStreamReader。(InputStreamReader.java:97)       在org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:542)       在org.apache.commons.collections.ExtendedProperties.load(ExtendedProperties.java:518)       在org.apache.velocity.runtime.RuntimeInstance.setDefaultProperties(RuntimeInstance.java:416)       在org.apache.velocity.runtime.RuntimeInstance.initializeProperties(RuntimeInstance.java:628)       在org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:261)       在org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:646)       在org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:226)       在org.apache.velocity.app.Velocity.init(Velocity.java:97)

如何在catalina.policy中添加权限以使速度有效?

非常感谢!

1 个答案:

答案 0 :(得分:0)

Velocity正在尝试从以下类路径文件中加载其默认属性文件:org/apache/velocity/runtime/defaults/velocity.properties

因此,您必须授予您的webapp(或更具体的Velocity jar)读取java.io.FilePermission权限:

your-velocity-engine.jar!org/apache/velocity/runtime/defaults/velocity.properties

您还需要获得相同的许可:

your-velocity-engine.jar!org/apache/velocity/runtime/defaults/directive.properties