LoginSignup
2
0

Open Libertyで管理するDataSourceをSpring BootからJNDI参照する

Last updated at Posted at 2023-11-04

Open Libertyで作成・管理されているDataSourceをSpring BootからJNDIで参照してデータベース操作に利用する方法を解説します。

本記事で使用するコンポーネント

コンポーネント名 バージョン
JDK OpenJDK 17.0.8 (IBM Semeru Runtime Open Edition)
Open Liberty 23.0.0.10
Spring Boot 3.1.5
$ java -version
openjdk version "17.0.8" 2023-07-18
IBM Semeru Runtime Open Edition 17.0.8.0 (build 17.0.8+7)
Eclipse OpenJ9 VM 17.0.8.0 (build openj9-0.40.0, JRE 17 Mac OS X amd64-64-Bit Compressed References 20230718_503 (JIT enabled, AOT enabled)
OpenJ9   - d12d10c9e
OMR      - e80bff83b
JCL      - 77b0f754805 based on jdk-17.0.8+7)

Open Libertyの設定

server.xml に以下のフィーチャーを宣言します。

  • jdbc-4.3 ... DataSourceの作成・管理に必要なフィーチャー
  • jndi-1.0 ... Open Libertyで管理されたインスタンスをJNDIで参照するためのフィーチャー

また、DataSourceはSpring BootからDataSourceを参照する際に指定するJNDI名を含めて <dataSource jndiName="{JNDI名}" ... /> と定義します。

<?xml version="1.0" encoding="UTF-8"?>
<server description="Spring Boot WebApp on Open Liberty">
    <!-- Features -->
    <featureManager>
        <feature>servlet-6.0</feature>
        <feature>jdbc-4.3</feature>
        <feature>jndi-1.0</feature>
    </featureManager>

    <!-- ...中略... -->

    <!-- JDBC Driver -->
    <library id="jdbcLib">
        <fileset dir="jdbc" includes="*.jar"/>
    </library>

    <!-- DataSource -->
    <dataSource jndiName="jdbc/defaultDS" type="javax.sql.DataSource">
        <jdbcDriver libraryRef="jdbcLib"/>
        <properties.postgresql serverName="localhost" portNumber="5432"
                    databaseName="sampledb"
                    user="sampleuser" password="*****"/>
    </dataSource>
</server>

Spring Bootの設定

Open Libertyの server.xml で定義したJNDI名をSpring Bootの spring.datasource.jndi-name プロパティに指定します。

spring.datasource.jndi-name=jdbc/defaultDS

Open Libertyでは server.xml で定義した jndiName のとおり指定してください。
プレフィックス付きのJNDI名 (java:...) や、名前空間を含めたJNDI名 (java:comp/env/...) を指定するとエラーが発生する場合があります。

参考リンク


以上。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0