Возрождение для дальнейшего использования.
Как сказал @fredt, насколько мне известно, нет никакого официального магического параметра для достижения смешанного режима.
Тем не менее, вы всегда можете запустить сервер программно , используя объект Сервер , чтобы другие процессы могли подключиться к вашей базе данных.
Я обнаружил уловку, чтобы выполнить что-то очень похожее на смешанный режим Для этого вам нужно установить для свойства remote_open
значение true
и подключиться, используя этот URL-адрес.
Идея в том, чтобы сделать что-то вроде этого:
- Попробуйте подключиться к серверу, используя URL-адрес, указанный выше.
- Если вы не можете подключиться, это означает, что сервер не был запущен, поэтому продолжайте и запустите сервер программно.
- Когда вы снова подключитесь, произойдет одно из трех.
- Если файл базы данных не существует, он будет создан по указанному пути к файлу, и сервер начнет обслуживать его с псевдонима URL.
- Если файл базы данных существует и не обслуживается, сервер откроет файл по указанному пути и начнет обслуживать его.
- Если файл базы данных существует и он обслуживается, сервер просто вернет соединение.
Я не уверен, безопасно ли использовать такой тип паттерна, когда вы планируете порождать много недолговечных процессов (в частности, я не углублялся в код HSQLDB, чтобы проверить, как он обрабатывает базу данных / создание / открытие для несколько одновременных запросов, когда установлено remote_open
). Тем не менее, я некоторое время использовал этот шаблон для совместного использования баз данных разработки между веб-приложениями и никогда не сталкивался ни с одной проблемой повреждения базы данных.
Основным ограничением здесь является то, что когда приложение, действующее как сервер, закрывается, открытые соединения перестают работать и выдают исключения ... Что не является проблемой для моей среды разработки, здесь это обычно означает только один или два поврежденных запрашивает, пока другой сервер не будет запущен и пул соединений обнаружит и возобновит свои соединения.