Yo aconsejaría a tomar ventaja del hecho de que Derby puede realizar tanto como servidor incorporado (es decir, que se ejecuta en la JVM del servidor de aplicaciones) y servidor de red (es decir, atender las solicitudes del cliente dirigida al puerto por defecto 1527 del host local). Por lo tanto, se beneficia de las mayores prestaciones del modo integrado, y aún así permite el acceso desde, p. Ej. "ij" para administrar datos mientras el servidor se está ejecutando, y de otras instancias del servidor a través de TCP/IP con la configuración de seguridad adecuada. En esa configuración, Derby se inicia y se detiene junto con el servidor de aplicaciones. No hay necesidad de comandos adicionales o un código de inicio de servidor explícito para lanzar Derby.
La configuración se describe a continuación para Glassfish 4 y derby/javaDB 10.10, pero funcionará de manera similar en otros servidores y versiones. De hecho, debe ajustar todas las rutas a continuación para que coincidan con su propia instalación.
.1. Haga que las clases derby estén disponibles para el cargador de clases "común" del servidor agregando derby.jar, derbyclient.jar, derbynet.jar, derbytools.jar. Copie el jar, por ejemplo, en JVM lib/ext de su instancia de servidor, p. en C:\java\J2EESDK7U1\glassfish\domains\domain1\lib\ext
.2. Con la GUI de administración de glassfish, agregue las dos propiedades siguientes a Configuraciones> configuración de servidor> JVM> pestaña Opciones de JVM: -Dderby.drda.startNetworkServer=true
y -Dderby.system.home=C:/java/J2EESDK7U1/glassfish/databases
. El primero le dice a Derby que empiece a escuchar en modo de red cuando se carga el motor incorporado, el segundo proporciona la ruta esencial a sus bases de datos derby y el archivo opcional derby.properties (por ejemplo, con su configuración de seguridad en PROD)
.3. organizar para que el servidor cargue la clase org.apache.derby.jdbc.EmbeddedDriver
al inicio.Una forma de lograr esto es, por ejemplo, para anotar un EJB con @Startup
, y luego definir un método anotado @PostConstruct
en el EJB, por igual:
@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
}
}
para otros 6 consejos de inicio, ver http://blog.eisele.net/2010/12/seven-ways-to-get-things-started-java.html
Esto es lo que estaba planeando hacer ya que no hay nada más posible. Gracias por la respuesta. –
¿Podría proporcionar un script de ejemplo? – NonlinearFruit