spring-boot - مشكلة - نقل التطبيقات الى الذاكرة الخارجية هواوي




كيفية الوصول إلى قاعدة بيانات الذاكرة h2 لتطبيق إقلاع الربيع من تطبيق إقلاع آخر (2)

في مشروعي ، قمت بإنشاء تطبيق تمهيد 3 ربيع. يحتوي تطبيق التمهيد الأول في الربيع على قاعدة بيانات H2 مضمنة. الآن أريد الوصول إلى قاعدة البيانات هذه من تطبيق الإقلاع الربيعي الثاني والثالث مباشرة دون كتابة أي خدمات للحصول على هذه البيانات. فهل يمكن لأحد أن يقول لي كيف يمكنني تحقيق ذلك؟


يمكنك إعداد خادم H2 كـ Spring Bean.

أولاً قم بتحرير pom.xml - احذف <scope>runtime</scope> من التبعية لـ h2:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

ثم أضف خادم H2 للخادم إلى SpringBootApplication أو فئة 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");
    }
}

الأخير - تحرير application.properties - قم بتعيين اسم قاعدة البيانات:

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

ثم يمكنك الاتصال بخادم H2 هذا من الخارج (على سبيل المثال ، إلى تطبيقك باستخدام H2 DB) باستخدام هذا الاتصال:

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

كمكافأة باستخدام عنوان url هذا ، يمكنك الاتصال بقاعدة بيانات التطبيق الخاص بك مباشرة من IDE الخاص بك .

تحديث

هناك فرصة للحصول على خطأ عند محاولة الاتصال بـ H2 لتطبيق Spring Boot الخاص بالإصدار 1.5.x. في هذه الحالة ، قم فقط بتغيير إصدار H2 إلى إصدار سابق ، على سبيل المثال:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.193</version>
</dependency>

تحديث 2

إذا كنت بحاجة إلى تشغيل العديد من التطبيقات باستخدام H2 في نفس الوقت على نفس المضيف ، يجب عليك تعيين منافذ H2 المختلفة عليها في Server.createTcpServer mothod ، على سبيل المثال: 9092 ، 9093 ، إلخ.

// 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");
}

ثم يمكنك الاتصال بـ H2 DB من هذه التطبيقات باستخدام عناوين url التالية:

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

يمكنك تشغيل H2 في وضع الخادم.

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

كيفية استخدام h2 كخادم

سؤال مماثل 1

سؤال مماثل 2







h2