gpt4 book ai didi

jsf - RichFaces 4.2.2Final 不遵守 Tomcat 7 设置的 javax.servlet.context.tempdir 的值

转载 作者:行者123 更新时间:2023-11-28 23:04:45 27 4
gpt4 key购买 nike

我提供了一个 <Parameter name="javax.servlet.context.tempdir" value="${catalina.base}/my_temp" override="false"/><Context>里面Tomcat 的节点 context.xml文件。

由于这条日志消息,我知道在服务器启动时会看到它:

INFO: Creating LRUMap cache instance using parameters: {javax.servlet.context.tempdir=D:\{omitted}\tmp0\my_temp, org.richfaces.resourceMapping.enabled=true, javax.faces.PROJECT_STAGE=Development, javax.faces.SKIP_COMMENTS=true}

但是,在 RichFaces 中跨步执行代码时 FileUploadFacesContextFactory.getTempFilesDirectory()方法,调用 servletContext.getAttribute("javax.servlet.context.tempdir") (其中 servletContextorg.apache.catalina.core.ApplicationContextFacade 的实例)给出值 D:\{omitted}\tmp0\work\Catalina\localhost\_ .

我的印象是(来自 Tomcat Docs on context parameters )设置 override="false"应防止任何应用程序为此参数提供替代值。

这是预期的行为吗?我的配置错误?

最佳答案

你误会了什么<Parameter>作用:它以与 <context-param><param-name>javax.servlet.context.tempdir</param-name>...</context-param> 相同的方式设置 ServletContext“init-param”会在你的 WEB-INF/web.xml 中做.

RichFaces 查看的是正式的 Context 属性,这是不同的。如果您希望您的 Web 应用程序在启动时将 init-param 复制到 context-attribute,您需要创建一个 ServletContextListener当你的 webapp 启动时执行类似于以下的代码:

servletContext.setAttribute("javax.servlet.context.tempdir",
servletContext.getInitParam("javax.servlet.context.tempdir"));

请注意,更改 tmpdir 的值可能不是一个好主意:它可能会干扰容器管理资源的能力。

关于jsf - RichFaces 4.2.2Final 不遵守 Tomcat 7 设置的 javax.servlet.context.tempdir 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com