Путь ресурсов sqlmap IBatis, работающий в windows, а не в unix - PullRequest
0 голосов
/ 07 октября 2019

Обновление Java и wildfly для существующей кодовой базы выполнено. В Windows с сервером wildfly приложение правильно развертывается. В Unix с сервером wildfly развертывание приложения завершается с ошибкой:

Error parsing XPath '/sqlMapConfig/sqlMap'.  
Cause: java.io.IOException: Could not find resource ..\..\WEB-INF\lib\configs\commonSql.xml

Попытка . Различные комбинации относительно address.Assumption состоят в том, что ibatis ищет в META-INF\classes конфиги.

Файл конфигурации имеет следующую запись:

sqlMap resource="..\\..\WEB-INF\lib\configs\commonSql.xml

Ожидается, что и Windows, и Unix будут вести себя одинаково с одним и тем же сервером.

1 Ответ

1 голос
/ 08 октября 2019

Использование относительных путей (и особенно ссылок на папку WEB-INF) в веб-приложении для доступа к ресурсам не переносимо. И это именно то, с чем вы столкнулись.

Правильный способ исправить это зависит от того, как ваше приложение упаковано и развернуто. Как правило, вам необходимо поместить ресурсы в папку WEB-INF/classes вашего приложения (или в файл * .jar в WEB-INF/lib). WEB-INF/classes вместе будет использовать все jar из WEB-INF/lib, когда iBatis будет искать файлы ресурсов.

Например, если вы поставите commonSql.xml в WEB-INF/classes/configs, вам нужно указать это в конфигурации iBatis:

sqlMap resource="configs/commonSql.xml"

В качестве альтернативы вы можете создать файл * .jar, содержащий папку верхнего уровня configs с файлом commonSql.xml. Затем поместите этот файл * .jar в папку WEB-INF/lib. Тогда такая же конфигурация, как указано выше, сможет загрузить этот файл.

...