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