Я бы посоветовал воспользоваться тем фактом, что Derby может выполнять и как встроенного сервер (т.е. работает в виртуальной машине Java приложение сервера) и сетевого сервер (т.е. обслуживания клиентских запросов на имя по умолчанию порта 1527 от локального хоста). Поэтому вы получаете преимущества от расширенных характеристик встроенного режима, но все же допускаете доступ, например, «ij» для администрирования данных во время работы сервера и из других экземпляров сервера через TCP/IP с подходящими настройками безопасности. В этой конфигурации Derby запускается и останавливается вместе с сервером приложений. Нет необходимости в дополнительных командах или явном начальном коде сервера для запуска дерби.
Конфигурация описана ниже для Glassfish 4 и derby/javaDB 10.10, но будет работать аналогично на других серверах и версиях. Вы должны настроить все пути ниже, чтобы они соответствовали вашей собственной установке.
.1. Сделайте классы дерби доступными для серверного «обычного» загрузчика классов, добавив derby.jar, derbyclient.jar, derbynet.jar, derbytools.jar. Скопируйте jar, например, в JVM lib/ext вашего экземпляра сервера, например. в C:\java\J2EESDK7U1\glassfish\domains\domain1\lib\ext
.2. Используя графический интерфейс администратора Glassfish, добавьте следующие два свойства в Конфигурации> server-config> Настройки JVM> вкладка JVM Options: -Dderby.drda.startNetworkServer=true
и -Dderby.system.home=C:/java/J2EESDK7U1/glassfish/databases
. Первое говорит Derby, чтобы начать прослушивание в сетевом режиме, когда загружен встроенный движок, второй поставляет основной путь к вашим базам данных дерби и дополнительный файл derby.properties (например, с вашими настройками безопасности в PROD).
.3. организовать загрузку сервером класса org.apache.derby.jdbc.EmbeddedDriver
при запуске.Путь для достижения этой цели является, например, для аннотирования в EJB с @Startup
, а затем определить @PostConstruct
аннотированный метод в EJB, так:
@PostConstruct
private void startup() {
try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
logger.info("Started DERBY in embedded+network mode");
} catch (ClassNotFoundException e) {
... your error handling
}
}
6 других советов запуска, см http://blog.eisele.net/2010/12/seven-ways-to-get-things-started-java.html
Это то, что я планировалось сделать, поскольку нет ничего другого. Спасибо за ответ. –
Не могли бы вы предоставить пример сценария? – NonlinearFruit