Как запретить Liberty удалять расширенную папку после перезагрузки

мой server.xml имеет

‹ applicationManager autoExpand="true" / ›
...
‹ application context-root="BaseX" id="BaseX" name="BaseX" type="war" location="C:\Program Files \BaseX.war" / ›

когда я запускаю приложение

запуск сервера myapp

вся расширенная папка удаляется и создается заново. WebSphere\Liberty\usr\servers\myapp\apps\expanded\BaseX.war

поскольку BaseX.war - моя база данных, я теряю все данные с ней после простого перезапуска (остановка и запуск)


person Stefania Axo    schedule 13.09.2017    source источник
comment
Вы меняете файл войны между перезагрузками?   -  person Alasdair    schedule 13.09.2017
comment
нет ..тот же BaseX.war   -  person Stefania Axo    schedule 14.09.2017


Ответы (1)


Лучший способ добиться этого прямо сейчас — развернуть приложение как расширенный файл WAR, а не как архив. Вместо архива WAR c:\Program Files\BaseX.war у вас будет каталог c:\Program Files\BaseX.war, содержащий расширенный файл BaseX.war. В этом случае приложение будет запускаться непосредственно из этого каталога и не будет развернуто в apps/expanded.

Вы также можете отключить расширение приложений, установив для параметра autoExpand значение false в элементе applicationManager, но это, вероятно, не очень хорошее решение для вас, поскольку вы пишете непосредственно в приложение. Если бы вы следовали этому пути, вам, вероятно, пришлось бы изменить приложение для записи данных в другое место.

person Brent Daniel    schedule 13.09.2017
comment
Вы предлагаете расширить BaseX.war в другой каталог/папку? есть ли что-то для этого в server.xml? - person Stefania Axo; 14.09.2017
comment
В файле server.xml ничего не должно меняться — местоположением приложения может быть либо архивный файл, либо расширенный каталог. Вы бы не расширяли BaseX.war в другой каталог, а скорее в каталог с именем BaseX.war (так что у вас будет c:\program files\BaseX.war\WEB-INF\web.xml и т. д., а не c:\ программные файлы\BaseX.war\BaseX.war\WEB-INF\web.xml ) - person Brent Daniel; 14.09.2017
comment
Я попробовал следующее, и это сработало ‹br/› 1. разархивируйте BaseX.war в папку C:\Program Files\BaseX 2. установите server.xml, чтобы он не расширялся и указывал на эту новую папку ‹applicationManager autoExpand=false /› ‹ application context-root=BaseX id=BaseX name=BaseX type=war location=C:\Program Files\BaseX /› запуск и остановка сервера не удаляют все данные - person Stefania Axo; 14.09.2017
comment
мне нужно назвать это BaseX.war? это удаление расширенной папки кажется мне ошибкой... есть ли способ остановить это? почему это происходит при простом перезапуске? - person Stefania Axo; 14.09.2017
comment
Каталог может быть любым, если у вас есть 'type=war' - в противном случае ему потребуется расширение '.war' в каталоге, чтобы понять, что это веб-приложение. - person Brent Daniel; 15.09.2017
comment
В настоящее время нет способа предотвратить обновление расширенного каталога при запуске сервера. Возможно, это может измениться в будущем, но лучше всего по-прежнему избегать записи данных непосредственно в двоичные файлы приложения (в противном случае любое обновление двоичных файлов приведет к удалению существующих данных). - person Brent Daniel; 15.09.2017