Cómo acceder en la base de datos de la memoria h2 a una aplicación de arranque de resorte desde otra aplicación de arranque de resorte

En mi proyecto, he creado 3 aplicaciones de arranque de spring. La primera aplicación de arranque de spring tiene una base de datos incrustada h2. Ahora quiero acceder a esta base de datos desde mi segunda y tercera aplicación de inicio de spring directamente sin escribir ningún servicio para obtener esta información. Entonces, ¿alguien puede decirme cómo puedo lograr esto?

Puede configurar H2 Server como Spring Bean.

Primero edite pom.xml – elimine el runtime de la dependencia h2:

  com.h2database h2  

A continuación, agregue el bean H2 server a la clase SpringBootApplication o Configuration :

 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * Start internal H2 server so we can query the DB from IDE * * @return H2 Server instance * @throws SQLException */ @Bean(initMethod = "start", destroyMethod = "stop") public Server h2Server() throws SQLException { return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092"); } } 

Last – edit application.properties – establece el nombre de la base de datos:

 spring.datasource.url=jdbc:h2:mem:dbname spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.hibernate.ddl-auto=create 

A continuación, puede conectarse a este servidor H2 desde el exterior (por ejemplo, a su aplicación con H2 DB) mediante esta conexión:

 jdbc:h2:tcp://localhost:9092/mem:dbname 

Como bonificación al usar esta url, puede conectarse a la base de datos de su aplicación directamente desde su IDE .

ACTUALIZAR

Existe la posibilidad de que se produzca un error al intentar conectar con la aplicación H2 for Spring Boot de la versión 1.5.x. En este caso, simplemente cambie una versión de H2 a la anterior, por ejemplo:

  com.h2database h2 1.4.193  

ACTUALIZACIÓN 2

Si necesita ejecutar varias aplicaciones con H2 simultáneamente en el mismo host, debe establecer los diferentes puertos H2 en ellas en Server.createTcpServer mothod, por ejemplo: 9092, 9093, etc.

 // First App @Bean(initMethod = "start", destroyMethod = "stop") public Server h2Server() throws SQLException { return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092"); } // Second App @Bean(initMethod = "start", destroyMethod = "stop") public Server h2Server() throws SQLException { return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9093"); } 

Luego puede conectarse al H2 DB de estas aplicaciones con las siguientes URL:

 App1 H2: jdbc:h2:tcp://localhost:9092/mem:dbname App2 H2: jdbc:h2:tcp://localhost:9093/mem:dbname 

Puede ejecutar H2 en el modo de servidor.

 import org.h2.tools.Server; ... // start the TCP Server server = Server.createTcpServer("-tcpAllowOthers").start(); ... // stop the TCP Server server.stop(); Usage: java org.h2.tools.Server When running without options, -tcp, -web, -browser and -pg are started. Options are case sensitive. Supported options are: [-help] or [-?] Print the list of options [-web] Start the web server with the H2 Console [-webAllowOthers] Allow other computers to connect - see below [-webDaemon] Use a daemon thread [-webPort ] The port (default: 8082) [-webSSL] Use encrypted (HTTPS) connections [-browser] Start a browser connecting to the web server [-tcp] Start the TCP server [-tcpAllowOthers] Allow other computers to connect - see below [-tcpDaemon] Use a daemon thread [-tcpPort ] The port (default: 9092) [-tcpSSL] Use encrypted (SSL) connections [-tcpPassword ] The password for shutting down a TCP server [-tcpShutdown ""] Stop the TCP server; example: tcp://localhost [-tcpShutdownForce] Do not wait until all connections are closed [-pg] Start the PG server [-pgAllowOthers] Allow other computers to connect - see below [-pgDaemon] Use a daemon thread [-pgPort ] The port (default: 5435) [-properties ""] Server properties (default: ~, disable: null) [-baseDir ] The base directory for H2 databases (all servers) [-ifExists] Only existing databases may be opened (all servers) [-trace] Print additional trace information (all servers) The options -xAllowOthers are potentially risky. For details, see Advanced Topics / Protection against Remote Access. See also http://h2database.com/javadoc/org/h2/tools/Server.html 

Cómo usar h2 como servidor

Pregunta similar 1

Pregunta similar 2

    Intereting Posts