【WildFly】アプリケーションサーバ環境構築

#WildFlyを使ったアプリケーションサーバ環境構築
オープンソースアプリケーションサーバである「WildFly」を使用して、Webアプリケーションサーバの環境構築をしたときのメモです。
WildFlyをインストールし、簡単なWebアプリケーションでデータベースから取得したデータを表示することを最終的な目標としました。データベースにはMySQLを使用しました。
**【参考】https://qiita.com/tama1/items/829be5aacd81637ae73a**
##動作環境
**OS**：Widows 10 Professional 1809
**JDK**：12.0.1
**MySQL**：8.0
**JDBCドライバ**：mysql-connector-java-8.0.16.jar
**WildFly**：17.0.1.Final (Java EE Full & Web Distribution)
##WildFlyのインストール
①**【URL】https://wildfly.org/downloads/**
　最新版である`wildfly-17.0.1.Final.zip`をダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466711/93d3916c-6677-b940-694f-3618084cbe6e.png)
②ダウンロードしたファイルを展開する。今回はCドライブ直下に展開した。
③`wildfly-17.0.1.Final\bin\standalone.bat`を実行することで起動する。
④ブラウザを立ち上げ、**"http://localhost:8080/"** へアクセスする。
　WildFlyトップページが表示されていればインストール成功。
##WildFly管理ユーザの追加
①`wildfly-17.0.1.Final\bin\add-user.bat`を実行する。
②(a)では**Management User：a**を選択する。
　続けてユーザー名/パスワードを入力する。
　今回は**"wildfly/admin"**とした。グループは空白でEnter、他のAS(WildFly)への接続は**No**とした。
③WildFlyトップページから**Administration Console**へアクセスする。
　設定したユーザー名/パスワードを入力することで管理画面が使用できる。
##JDBCドライバのデプロイ
Javaからデータベースを利用するためにMySQLのJDBCドライバのデプロイを行う。
デプロイの方法は以下の3通りある。
**Ⅰ. deploymentフォルダに置く**
**Ⅱ. 管理画面からデプロイする**
**Ⅲ. モジュールとして登録する**
①今回はⅠの方法でJDBCドライバをデプロイする。
　ダウンロードしたJDBCドライバ⇩　※MySQL 8.0のインストールに付属されている
　`mysql-connector-java-8.0.16.jar`
　を`standalone\deployment\`へコピーする。
②`*.deployed`ファイルが作成されればデプロイ成功。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466711/b74438c3-485d-6461-e979-63eb78e413db.png)
##データソースの設定
Javaからデータベースを利用するためのデータソースの設定を行う。
設定方法は以下の3通りある。
**Ⅰ. Administration Consoleを使う**
**Ⅱ. standalone.xmlを編集する**
**Ⅲ. 管理CLI(jboss-cli)を使用する**
①今回はⅠの方法でデータソースを設定する。Administration Consoleを開き、
　`Configuration`➡`Subsystem`➡`Datasource&Drivers`➡`+`➡`Add Datasource`
　➡`MySQL`にチェック
　➡`Name`, `JNDI Name`はデフォルトでOK (`MySqlDS`, `java:/MySqlDS`)
　➡`Driver Name`のプルダウンメニューから前項でデプロイしたJDBCドライバを選択する。
　　その他はデフォルトでOK。
　➡`Connection URL`に`jdbc:mysql://localhost:3306/testdb?serverTimezone=JST`を入力する。
　　`testdb`の部分は作成した任意のデータベース名を入力する。
　　データベースへアクセスするユーザー名/パスワードを入力する。
　➡`Test Connection`で成功したらOK。
③`standalone\configuration\standalone.xml`の中身を確認する。MySqlDSが追加されている。

```xml:standalone.xml(抜粋)
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
  <datasources>
    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
      <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
      <driver>h2</driver>
      <security>
        <user-name>sa</user-name>
        <password>sa</password>
      </security>
    </datasource>
    <datasource jndi-name="java:/MySqlDS" pool-name="MySqlDS">
      <connection-url>jdbc:mysql://localhost:3306/testdb?serverTimezone=JST</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <driver>mysql-connector-java-8.0.16.jar</driver>
      <security>
        <user-name>test</user-name>
        <password>test</password>
      </security>
      <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
      </validation>
    </datasource>
    <drivers>
      <driver name="h2" module="com.h2database.h2">
        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>
```
##アプリケーションのデプロイ
デプロイ方法はJDBCのデプロイ方法と変わらない。