web-dev-qa-db-ja.com

別のSpring Bootアプリケーションから1つのSpring Bootアプリケーションのメモリh2データベースにアクセスする方法

私のプロジェクトでは、3つのSpringBootアプリケーションを作成しました。最初のSpringBootアプリケーションには、h2組み込みデータベースがあります。ここで、このデータを取得するためのサービスを作成せずに、2番目と3番目のSpringBootアプリケーションからこのデータベースに直接アクセスしたいと思います。だから誰かが私にこれを達成する方法を教えてもらえますか?

8
raj

H2サーバーをSpring Beanとしてセットアップできます。

最初にpom.xmlを編集します-h2依存関係から<scope>runtime</scope>を削除します:

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

次に、H2サーバーBeanを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から直接

[〜#〜]更新[〜#〜]

1.5.xバージョンのH2for Spring Bootアプリに接続しようとすると、エラーが発生する可能性があります。この場合は、H2のバージョンを以前のバージョンに変更するだけです。次に例を示します。

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

更新2

同じホスト上でH2を使用して複数のアプリを同時に実行する必要がある場合は、Server.createTcpServer mothodで異なるH2ポートを設定する必要があります(例: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");
}

次に、次のURLを使用してこれらのアプリのH2DBに接続できます。

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

サーバーモードで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

0