そこに仁義はあるのか(仮)

略してそこ仁!

Spring BootのアプリとOracle CloudのAutonomous Databaseを接続する - アプリケーション環境編

Oracle Code Tokyoでハンズオンのお手伝いをしてきました!
ハンズオンは、Rails / laravel / Django / Spring Bootの4つのフレームワークを利用して、Oracle CloudのAutonomous Transaction Processingサービス(Oracle 18c)へ接続するサンプルアプリと、その手順を作っています。
私はSpring Boot(JPAを利用)のサンプルアプリとハンズオン手順、また、それに合わせてアプリの検証環境構築用のTerraformも作りました。

ハンズオンの手順やアプリはこちらのGitHubリポジトリに置いています。
ハンズオン手順と内容がかぶるところも多いのですが、この機会に、環境の作り方やデータベース接続方法などを整理したいと思います。

github.com

今回は、アプリケーション環境の設定手順を書いていこうと思います。
構成や環境構築編の内容についてはこちらです。
Spring BootのアプリとOracle CloudのAutonomous Databaseを接続する - 環境構築編 - そこに仁義はあるのか(仮)

f:id:syobochim:20190520002319p:plain

👌 アプリで使っているもの

記載レベルがバラバラですが、特筆すると以下のものを使っています。

  • JDK 11
  • Maven
  • Spring Boot
  • JPA

👌 実行環境の設定

ハンズオンでは4種類のアプリを稼働させるためにこちらのスクリプトを実行した環境を仮想マシンのカスタムイメージとして用意していました。
code19-coding-hol/code19setup.sh at master · oracle-japan/code19-coding-hol · GitHub

そこから、jarファイル実行のための設定を抜粋したものはこちらです。
Oracle Linux 7系を利用する場合には、最初のファイアウォールのポートを開ける設定が必要になります。
また、環境構築編で取得したWalletファイルを解凍したディレクトリパスを「TNS_ADMIN」に設定します。

# ファイアウォールの設定を変更する
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

# JDK11をインストールする
sudo yum -y install java-11-openjdk-devel
sudo alternatives --set java /usr/lib/jvm/java-11-openjdk-11.0.3.7-0.0.1.el7_6.x86_64/bin/java

# Autonomous DBの接続用Walletファイルの解凍ディレクトリパスをTNS_ADMINへ指定する
echo 'export TNS_ADMIN="/usr/local/etc/"' >> ~/.bash_profile
source ~/.bash_profile

👌 ビルド環境の設定

次にビルド環境の設定です。(実行環境の設定に追加して、こちらを設定してください。)

Oracle提供のJDBCをOralce公式のMavenリポジトリから取得するために必要な設定を記載します。
OracleのMavenリポジトリを利用するための設定はこちらに正式なドキュメントがあります。
Configuring the Oracle Maven Repository

# Mavenのインストールと設定
sudo yum -y install maven
echo 'export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"' >> ~/.bash_profile
source ~/.bash_profile

# Maven経由でOracleのライセンス認証をし、jdbcなどをダウンロードするために必要な設定
sudo wget http://central.maven.org/maven2/org/apache/maven/wagon/wagon-http/2.8/wagon-http-2.8-shaded.jar -P /usr/share/maven/lib/ext/

また、ライセンス認証のために以下作業が必要になります。

  1. ライセンス確認
  2. Mavenのsettings.xmlに認証情報を記載

1. ライセンス確認

以下の URL にアクセスしてログインし、Oracle Maven Repositoryのライセンスを確認します。
プロファイルをお持ちでない方は、ログイン画面の [プロファイルの作成] からプロファイルを作成してください。
ライセンスを読み、同意する場合は [Accept License Agreement] を選択します。

https://www.oracle.com/webapps/maven/register/license.html

2. Mavenのsettings.xmlに認証情報を記載

「~/.m2/settings.xml」ファイルに認証情報を記載します。
TODOのコメントをしている箇所に、「1. ライセンス確認」で使ったプロファイルのユーザーID、パスワードを記載してください。
パスワードは暗号化されることを推奨します。
Maven – Password Encryption

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <profiles>
    <profile>
      <id>maven.oracle.com</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>maven.oracle.com</id>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <url>https://maven.oracle.com</url>
          <layout>default</layout>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>maven.oracle.com</id>
          <url>https://maven.oracle.com</url>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <servers>
    <server>
      <id>maven.oracle.com</id>
      <!-- TODO : Oracle Account UserName and Pass -->
      <username></username>
      <password></password>
      <configuration>
        <basicAuthScope>
          <host>ANY</host>
          <port>ANY</port>
          <realm>OAM 11g</realm>
        </basicAuthScope>
        <httpConfiguration>
          <all>
            <params>
              <property>
                <name>http.protocol.allow-circular-redirects</name>
                <value>%b,true</value>
              </property>
            </params>
          </all>
        </httpConfiguration>
      </configuration>
    </server>
  </servers>
</settings>

👌 テーブルの作成

サンプルアプリのために、以下のSQLを実行してAutonomous DBへテーブルとシーケンスを作成します。
EntityクラスのIDを採番させるために、シーケンスも作成しておきます。

ツールは問いませんが、個人的にはOracle MLを利用するとブラウザからSQLを実行できるのでオススメです。
[Oracle MLの利用方法はこちら](https://github.com/oracle-japan/code19-coding-hol/blob/master/common/Lab3-ExtensionLesson.md#oracle-ml%E3%82%92%E4%BD%BF%E3%81%86])

  CREATE TABLE "MICROPOSTS" 
   ("ID" NUMBER(38,0) NOT NULL ENABLE, 
    "CONTENT" CLOB);
CREATE SEQUENCE micropost_seq
  MINVALUE 1
  MAXVALUE 9999999999
  START WITH 1
  INCREMENT BY 1;


ここまでで、アプリを動かすための環境準備は完了です!
思ったよりも長くなってしまったので、アプリケーションの中身(pom.xmlの設定やapplication.propertiesの設定は、次回のブログで書こうと思います!

syobochim.hatenablog.com