標準の OpenCms WebDAV 構成では、CmsVfsResourceNotFoundException
WebDAV 経由でリソースにアクセスするときにエラーが発生する可能性があります。
これは非常に厄介です。なぜなら、任意のフォルダーの内容を一覧表示するたびに__properties
、OpenCms はそのフォルダー内のファイルごとに 36 のスタックトレース ログラインをダンプするからです! デバッグ中に WebDAV ディレクトリを頻繁にスキャンする場合 (注 1 を参照)、これらのログによって作業が困難になります。(もちろん、ログ レベルを より高いレベルに変更することもできますINFO
が、私には受け入れられません。)
この問題は簡単に再現できます。ブラウザで opencms-exported webdav パスをポイントし、任意のディレクトリをクリックします__properties
。
私は 2 つの回避策を見つけましたが、どれも満足していません。おそらく、より良い解決策がありますか?
ノート
1 NetBeans でいくつかの OpenCms モジュールをデバッグしています。それらのソースを OpenCms の WebDAV 経由でエクスポートし、Linux に としてマウントしますdavfs
。それらを NetBeans プロジェクトに追加すると、このマウントされたファイル階層が自動的にスキャンされ、その結果、OpenCms が「凶暴」になり、貧弱なコンソールに無駄なトレースがあふれ始めます。NetBeans が定期的にこれらのディレクトリを再スキャンするため、さらに悪化します。
2考えられるすべてのファイルとディレクトリのプロパティを UTF-8 に設定content-encoding
しても役に立ちません (スタックトレースはそれがないと主張しています)。
関連する環境と設定:
INFO OpenCms version : 8.0.3
INFO System file.encoding : UTF-8
INFO i18n configuration : the JVM default locale is "en"
INFO Initializing WebDAV servlet
INFO Initialized param "listings" with value "true"
INFO Initialized param "readonly" with value "false"
INFO Using repository with name "standard"
web.xml
関連する設定:
<servlet>
<description>
Creates an access to OpenCms through WebDAV.
</description>
<servlet-name>OpenCmsWebDavServlet</servlet-name>
<servlet-class>org.opencms.webdav.CmsWebdavServlet</servlet-class>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>repository</param-name>
<param-value>standard</param-value>
</init-param>
</servlet>
私のopencms-importexport.xml
関連する設定:
<repositories>
<repository name="standard" class="org.opencms.repository.CmsRepository">
<params>
<param name="wrapper">org.opencms.file.wrapper.CmsResourceExtensionWrapperJsp</param>
<param name="wrapper">org.opencms.file.wrapper.CmsResourceExtensionWrapperXmlContent</param>
<param name="wrapper">org.opencms.file.wrapper.CmsResourceExtensionWrapperXmlPage</param>
<param name="wrapper">org.opencms.file.wrapper.CmsResourceWrapperSystemFolder</param>
<param name="wrapper">org.opencms.file.wrapper.CmsResourceWrapperPropertyFile</param>
</params>
<filter type="include">
<regex>/</regex>
<regex>/__properties/.*</regex>
<regex>/sites/.*</regex>
<regex>/system/</regex>
<regex>/system/__properties/.*</regex>
<regex>/system/galleries/.*</regex>
<regex>/system/modules/.*</regex>
<regex>/system/workplace/.*</regex>
</filter>
</repository>
私のopencms-system.xml
関連する設定:
<opencms>
<system>
<internationalization>
<localehandler class="org.opencms.i18n.CmsDefaultLocaleHandler"/>
<localesconfigured>
<locale>en</locale>
<locale>de</locale>
</localesconfigured>
<localesdefault>
<locale>en</locale>
<locale>de</locale>
</localesdefault>
<timezone>GMT+01:00</timezone>
</internationalization>
スタックトレース:
01 Aug 2012 18:09:05,607 INFO [.opencms.i18n.CmsLocaleManager: 311] Could not read encoding property for resource "/sites/default/.content/config/__properties/c_0001.html.properties".
org.opencms.file.CmsVfsResourceNotFoundException: Error reading the property value for property "content-encoding" of resource "/.content/config/__properties/c_0001.html.properties".
at org.opencms.file.CmsVfsResourceNotFoundException.createException(CmsVfsResourceNotFoundException.java:71)
at org.opencms.db.CmsDbContext.throwException(CmsDbContext.java:334)
at org.opencms.db.CmsDbContext.report(CmsDbContext.java:286)
at org.opencms.db.CmsSecurityManager.readPropertyObject(CmsSecurityManager.java:4405)
at org.opencms.file.CmsObject.readPropertyObject(CmsObject.java:2681)
at org.opencms.i18n.CmsLocaleManager.getResourceEncoding(CmsLocaleManager.java:305)
at org.opencms.file.wrapper.CmsObjectWrapper.needUtf8Marker(CmsObjectWrapper.java:871)
at org.opencms.file.wrapper.CmsObjectWrapper.getResourcesInFolder(CmsObjectWrapper.java:382)
at org.opencms.repository.CmsRepositorySession.list(CmsRepositorySession.java:268)
at org.opencms.webdav.CmsWebdavServlet.renderHtml(CmsWebdavServlet.java:2480)
at org.opencms.webdav.CmsWebdavServlet.serveResource(CmsWebdavServlet.java:2727)
at org.opencms.webdav.CmsWebdavServlet.doGet(CmsWebdavServlet.java:1208)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at org.opencms.webdav.CmsWebdavServlet.service(CmsWebdavServlet.java:2893)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.opencms.file.CmsVfsResourceNotFoundException: Unable to read resource "/.content/config/__properties".
at org.opencms.db.generic.CmsVfsDriver.readResource(CmsVfsDriver.java:2162)
at org.opencms.db.CmsDriverManager.readResource(CmsDriverManager.java:7293)
at org.opencms.db.CmsDriverManager.readPropertyObjects(CmsDriverManager.java:7110)
at org.opencms.db.CmsDriverManager.readPropertyObject(CmsDriverManager.java:7043)
at org.opencms.db.CmsSecurityManager.readPropertyObject(CmsSecurityManager.java:4403)
... 23 more