在Tomcat 9上运行的GeoServer 2.17.1 WAR找不到GEOSERVER_DATA_DIR上下文参数



我在Tomcat 9中将GeoServer 2.17.1作为WAR servlet安装。如果数据文件位于

C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\geoserver\data

一切正常。但是,如果数据文件位于

C:\Users\geoserveruser\Documents\GeoServerData

并将以下上下文参数添加到

C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\geoserver\WEB-INF\web.xml

<context-param>
<param-name>GEOSERVER_DATA_DIR</param-name>
<param-value>C:UsersgeoserveruserDocumentsGeoServerData</param-value>
</context-param> 

找不到数据目录。实际上,

在C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\geoserver\data

当雄猫重新启动时。地理服务器文档

https://docs.geoserver.org/stable/en/user/datadirectory/setting.html#web-archive

表示这是配置 GeoServer 数据目录的正确方法,并且上下文参数在 web 中提供.xml只需要取消注释和编辑即可。

为什么这不像文档中指出的那样工作?

更新: 在 Tomcat 日志文件中找到这些

29 Jun 16:35:17 WARN [geoserver.platform] - Found Servlet context parameter GEOSERVER_DATA_DIR set to C:UsersgeoserveruserDocumentsGeoServerData , but this path does not exist
29 Jun 16:35:17 INFO [geoserver.platform] - Falling back to embedded data directory: C:Program FilesApache Software FoundationTomcat 9.0webappsgeoserverdata

这就解释了为什么要创建新的数据目录。

C:\Users\geoserveruser\Documents\GeoServerData

肯定存在,我验证了当前(和所有用户(对该目录具有读写权限。

思潮?

这是因为在 Java 世界中用作路径分隔符并不是一个非常好的字符,因为它们被用作转义字符。因此,如果您必须使用则必须使用其中两个来逃避它们的逃避,这样您的路径就会变得C:\Users\geoserveruser\Documents\GeoServerData但更好和更容易的是与计算世界的其余部分保持一致并使用/作为路径分隔符,从而提供C:/Users/geoserveruser/Documents/GeoServerData

老实说,如果您要麻烦安装Tomcat,这可能是一台生产机器,在这种情况下,您可能应该重新考虑整个Windows的想法并使用适当的操作系统,该系统不需要在每个请求上使用50%+的CPU病毒扫描。

最新更新