Я бы посоветовал воспользоваться тем, что Derby может работать как встроенный сервер (т. Е. Работает в JVM сервера приложений), так и сетевой сервер (т. Е. Обслуживать клиентские запросы, адресованные по умолчанию порт 1527 с локального хоста). Таким образом, вы получаете выгоду от увеличения производительности встроенного режима, но все же разрешаете доступ, например, с. «ij» для администрирования данных во время работы сервера и из других экземпляров сервера через TCP / IP с подходящими настройками безопасности.
В этой конфигурации Derby запускается и останавливается вместе с сервером приложений. Нет необходимости в дополнительных командах или явном коде запуска сервера для запуска derby.
Конфигурация описана ниже для Glassfish 4 и derby / javaDB 10.10, но будет работать аналогично на других серверах и версиях. Вы действительно должны настроить все пути ниже, чтобы они соответствовали вашей собственной установке.
0,1. Сделайте классы derby доступными для загрузчика «общих» классов сервера, добавив derby.jar, derbyclient.jar, derbynet.jar, derbytools.jar. Скопируйте, например, jar-файл в JVM lib / ext вашего экземпляра сервера, например, в C:\java\J2EESDK7U1\glassfish\domains\domain1\lib\ext
0,2. Используя графический интерфейс администратора glassfish, добавьте следующие два свойства в «Конфигурации»> «Настройка сервера»> «Настройки JVM»> вкладка «Параметры JVM»:
-Dderby.drda.startNetworkServer=true
и
-Dderby.system.home=C:/java/J2EESDK7U1/glassfish/databases
. Первый сообщает Derby о начале прослушивания в сетевом режиме при загрузке встроенного движка, второй задает основной путь к вашим базам данных derby и необязательный файл derby.properties (например, с настройками безопасности в PROD)
0,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