0

Tomcat のファイル<Parameter name="javax.servlet.context.tempdir" value="${catalina.base}/my_temp" override="false"/>のノード内を提供しています。<Context>context.xml

次のログ メッセージが原因で、サーバーの起動時に表示されていることがわかっています。

情報: パラメーターを使用して LRUMap キャッシュ インスタンスを作成しています: {javax.servlet.context.tempdir=D:\{省略}\tmp0\my_temp、org.richfaces.resourceMapping.enabled=true、javax.faces.PROJECT_STAGE=Development、javax.faces .SKIP_COMMENTS=真}

ただし、RichFaces メソッドのコードをステップ オーバーする場合、(は のインスタンス) をFileUploadFacesContextFactory.getTempFilesDirectory()呼び出すと、値 が返されます。servletContext.getAttribute("javax.servlet.context.tempdir")servletContextorg.apache.catalina.core.ApplicationContextFacadeD:\{omitted}\tmp0\work\Catalina\localhost\_

( Tomcat Docs on context parametersから) この設定override="false"では、アプリケーションがこのパラメーターに代替値を提供しないようにする必要があるという印象を受けました。

これは予想される動作ですか?私の側の構成エラーですか?

4

1 に答える 1

1

あなたの誤解<Parameter>: ServletContext の "init-param"<context-param><param-name>javax.servlet.context.tempdir</param-name>...</context-param>WEB-INF/web.xml.

RichFaces は、異なる正式な Context 属性を見ています。Web アプリの起動時に init-param を context-attribute にコピーする場合は、Web アプリの起動時にServletContextListener次のようなコードを実行するを作成する必要があります。

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

の値を変更するtmpdirことは良い考えではないかもしれないことに注意してください: リソースを管理するコンテナの機能に干渉する可能性があります。

于 2012-07-26T18:14:00.860 に答える