我如何获得读取战争中的属性文件的耳朵



我正在使用Wildfly 11和Java 8.我正在尝试部署包含多个战争文件的EAR文件。我的战争文件之一包含在其Web.xml ...

<context-param>
    <param-name>Owasp.CsrfGuard.Config</param-name>
    <param-value>csrfguard.properties</param-value>
</context-param>

所讨论的文件在我的一个战争中,

myapp.war/WEB-INF/classes/csrfguard.properties

当我自己部署战争时,一切都很好。但是,当我部署包含战争的耳朵时,我会发现一个错误,抱怨无法找到属性文件...

Caused by: java.io.IOException: unable to locate resource - csrfguard.properties
    at org.owasp.csrfguard.CsrfGuardServletContextListener.getResourceStream(CsrfGuardServletContextListener.java:85)
    at org.owasp.csrfguard.CsrfGuardServletContextListener.contextInitialized(CsrfGuardServletContextListener.java:36)
    ... 10 more

我感觉到有一个集体加载程序问题,我没有弄清楚如何工作。如何告诉我的耳文件在哪里可以找到所涉及的属性文件?

我怀疑错误的类加载程序被用于搜索csrfguard.properties的类Path,这会导致getResourceAsStream失败。在 .ear 文件中,csrfguard库在哪里打包?

您可以尝试通过切换到相对于 .war file:

的路径来尝试使用context.getRealPath退回。
<context-param>
    <param-name>Owasp.CsrfGuard.Config</param-name>
    <param-value>WEB-INF/classes/csrfguard.properties</param-value>
</context-param>

我也有同样的问题。通过在战争文件的WEB-INF/lib目录中而不是EAR的LIB目录中添加csrfguard.jar来修复它。将csrfguard.properties文件添加到WEB-INF/classes目录中,并在web.xml

中使用以下上下文参数
<context-param>
    <param-name>Owasp.CsrfGuard.Config</param-name>
    <param-value>csrfguard.properties</param-value>
</context-param>

最新更新