GeoServer 2.17.1 WAR, работающий на Tomcat 9, не находит параметр контекста GEOSERVER_DATA_DIR

У меня установлен GeoServer 2.17.1 как сервлет WAR в Tomcat 9. Если файлы данных расположены в

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

все работает правильно. Однако, если файлы данных расположены в

C:\Пользователи\пользователь геосервера\Документы\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:\Users\geoserveruser\Documents\GeoServerData</param-value>
</context-param> 

каталог данных не найден. Фактически новый каталог создается в

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

при перезапуске Tomcat. Документация GeoServer

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:\Users\geoserveruser\Documents\GeoServerData , but this path does not exist

29 Jun 16:35:17 INFO [geoserver.platform] - Falling back to embedded data directory: C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\geoserver\data

Это объясняет, почему создается новый каталог данных.

C:\Пользователи\пользователь геосервера\Документы\GeoServerData

определенно существует, и я проверил, что текущий (и все пользователи) имеют права на чтение и запись для каталога.

Мысли?


person ChrisP    schedule 29.06.2020    source источник
comment
пожалуйста, не отправляйте один и тот же вопрос здесь и на GIS.se - в этом случае gis.se куда лучше для этого   -  person Ian Turton    schedule 30.06.2020


Ответы (1)


Это связано с тем, что \ не очень хороший символ для использования в качестве разделителя пути в мире Java, поскольку они используются в качестве escape-символа. Поэтому, если вы должны использовать \, необходимо использовать два из них, чтобы избежать их побега, чтобы ваш путь стал C:\\Users\\geoserveruser\\Documents\\GeoServerData, но лучше и проще двигаться в соответствии с остальным вычислительным миром и использовать / в качестве разделителя пути, дающего C:/Users/geoserveruser/Documents/GeoServerData.

Честно говоря, если вы собираетесь установить Tomcat, это, вероятно, будет производственная машина, и в этом случае вам, вероятно, следует переосмыслить всю идею Windows и использовать правильную операционную систему, которая не должна использовать 50% + вместо этого сканирование вирусов ЦП при каждом запросе.

person Ian Turton    schedule 30.06.2020