JBossからAmazon RDS MySQLを接続してみる

最初に

先日、Jbossの環境をインストールして、Hello World プログラムを実行できるように紹介しました。

本日、その上でRDSを作成し、接続確認できるように紹介します。

RDS MySQL作成

Amazon RDS MySQL データベースを作成するステップを省略します。

下記AWSのドキュメントをご参照ください。
https://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/customizing-rds-connect-create.html

テスト用環境作成

1.MySQLインストール

RDS作成完了してから、テスト用環境作成します。
先ず、RHEL8.7でMySQL8.0をインストールします。

$ sudo dnf install mysql

2.RDS接続

以下のコマンドを実行して、MySQLクライアントから、RDS に接続

$ mysql -u admin -p -h jboss-rds.cowupzjjocwm.ap-northeast-1.rds.amazonaws.com

3.テスト用テーブルを作成

以下のコマンドを実行して、テスト用テーブルを作成し、テストデータを入れます。

mysql> use testdb;
mysql> CREATE TABLE test_table (id INT, name CHAR(10));
mysql> INSERT INTO test_table (id,name) VALUES (1, 'test01');
mysql> INSERT INTO test_table (id,name) VALUES (2, 'test02');

JDBCドライバインストール

1.JDBC Driverダウンロード

/tmpにJDBC Driverをダウンロードする
AWS JDBC Driverをダウンロードする for MySQL – v1.1.9
https://github.com/awslabs/aws-mysql-jdbc/releases

2.JDBCドライバ配置

JDBCドライバの aws-mysql-jdbc-1.1.7.jar ファイルを以下に配置する。

$ sudo cp -p /work/aws-mysql-jdbc-1.1.7.jar /opt/EAP-7.2.0/
$ sudo cp -p /work/aws-mysql-jdbc-1.1.7.jar /usr/share/java/

3.Jboss管理CLI起動

以下のコマンドを実行して、管理 CLI を起動する。なお、以後の作業は管理 CLI から実行する。

$ sudo /opt/EAP-7.2.0/bin/jboss-cli.sh --connect

4.プロンプト表示確認

管理CLIのプロンプトが表示されることを確認

[standalone@localhost:9990 /] /core-service=server-environment:read-attribute(name=initial-running-mode)
{
    "outcome" => "success",
    "result" => "NORMAL"
}

5.JDBCドライバー追加

以下のコマンドを管理CLIから実行して、JDBC ドライバーをコアモジュールとして追加する。

[standalone@localhost:9990 /] module add --name=com.mysql --resources=/usr/share/java/aws-mysql-jdbc-1.1.7.jar --dependencies=javax.api,javax.transaction.api

6.JDBCドライバー登録

以下のコマンドを管理CLIから実行して、JDBC ドライバーを登録する。

[standalone@localhost:9990 /] /subsystem=datasources/jdbc-driver=software.aws.rds.jdbc.mysql.Driver:add(driver-name=software.aws.rds.jdbc.mysql.Driver,driver-module-name=com.mysql)
{"outcome" => "success"}

7.データソース作成

以下のコマンドを管理CLIから実行して、データソースを作成する。

[standalone@localhost:9990 /] data-source add --name=MySqlDS --jndi-name=java:jboss/MySqlDS --enabled=true --driver-name=software.aws.rds.jdbc.mysql.Driver --connection-url=jdbc:mysql:aws://jboss-rds.cowupzjjocwm.ap-northeast-1.rds.amazonaws.com:3306/testdb --user-name=admin --password=1qaz2wsx!

8.JBossリロード

以下のコマンドを管理CLIから実行して、JBossをリロードする。

[standalone@localhost:9990 /] reload

9.RDS接続確認

以下のコマンドを管理CLIから実行して、RDSの接続確認を行う。

[standalone@localhost:9990 /] /subsystem=datasources/data-source=MySqlDS:test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}

DBアクセス確認用WARファイル作成

1.jsp ファイル作成

DBアクセス確認用 jsp ファイルを作成する

sudo vi /tmp/web-app/src/main/webapp/rds_access.jsp

ソース

<%@page contentType="text/html; charset=UTF-8"%>
<%@page import="javax.naming.*" %>
<%@page import="javax.sql.*" %>
<%@page import="java.sql.*" %>
<html>
<body>
test table contents<br>
<%
Context context = new InitialContext();
DataSource dataSource =(DataSource)context.lookup("java:jboss/MySqlDS");
try(Connection connection = dataSource.getConnection();
    PreparedStatement preparedStatement = connection.prepareStatement("select NAME from test_table");
    ResultSet resultSet = preparedStatement.executeQuery()){
        while(resultSet.next()){
            out.print(resultSet.getString("NAME"));
            out.print("<br>");
        }
    }
%>
</body>
</html>

2.WARファイル作成

以下のコマンドを実行して、WARファイルを作成する。

$ cd /tmp/web-app
$ mvn clean install

3.WARファイルデプロイ

※WARファイルをstandalone/deployments にコピーし、デプロイを行う。

$sudo cp -p /tmp/web-app/target/web-app.war /opt/EAP-7.2.0/standalone/deployments/

4.動作確認

以下のコマンドを実行して、テスト用テーブルからデータを取得するJSPの動作確認を行う。

curl http://localhost:8080/web-app/rds_access.jsp

以下が表示されれば正常終了

<html>
<body>
test table contents<br>
test01<br>test02<br>
</body>
</html>

ブラウザでアクセスしてみます。
問題なくアクセスできました。

file

最後に

以上です。
どなたかの参考になれば幸いです〜。

参考

AWS環境でRHEL8.7にJBoss EAP7.2をインストールしてみる(テキストベース)

Last modified: 2023-10-03

Author