AWSのEC2(RHEL 7.2)でWildFly 10.0.0のPostgreSQL 9.4用データソースを作成
目次
概要
AWSのEC2インスタンス上にJavaEEアプリケーションサーバとしてWildFly 10.0.0が、データベースサーバとしてPostgreSQL 9.4.8が 稼働している状態で、WildFlyからPostgreSQLのデータベースに接続するためのデータソースを作成します。 手順の中で指定しているIPアドレスは環境によって異なります。 また、EC2インスタンスへ接続する際には、ローカルホスト、ローカルIP、グローバルIPと複数のIPアドレスが存在します。 接続先としてどのIPアドレスを指定するかは各ミドルウェアの設定によりますので、適宜読み換えてください。
構成
想定環境
今回の検証用サーバ環境としてAWS(Amazon Web Services)のEC2を利用しました。 サーバのスペックは以下のとおりです。
項目 | 内容 |
---|---|
インスタンスタイプ | t2.micro |
vCPU | 1 |
メモリ | 1GB |
ディスク | SSD 10GiB |
リージョン | オレゴン |
価格 | 無料 |
サーバ構成
OSバージョン
Red Hat Enterprise Linux 7.2 x86_64
ソフトウェア・パッケージ一覧
- jdk-8u92-linux-x64.rpm
- wildfly-10.0.0.Final.tar.gz
- postgresql94-9.4.8-1PGDG.rhel7.x86_64.rpm
- postgresql94-libs-9.4.8-1PGDG.rhel7.x86_64.rpm
- postgresql94-server-9.4.8-1PGDG.rhel7.x86_64.rpm
- postgresql-9.4.1208.jar
環境構築
PostgreSQLのユーザとデータベースの作成
PostgreSQLのデータベースユーザの作成
データベースの所有者として利用するデータベースユーザを作成します。 ユーザ名は pguser01 とします。
$ su - postgres Password: ←postgresユーザのパスワードを入力 Last login: Fri Jul 8 07:43:15 EDT 2016 on pts/2 Last failed login: Fri Jul 8 21:52:10 EDT 2016 on pts/2 There was 1 failed login attempt since the last successful login. -bash-4.2$ psql -c "\du" ←PostgreSQLユーザの一覧を表示 List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication | {} -bash-4.2$ createuser -P pguser01 ←PostgreSQLユーザの作成 Enter password for new role: ←設定するパスワードを入力 Enter it again: ←設定するパスワードを再入力 -bash-4.2$ psql -c "\du" List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- pguser01 | | {} ←ユーザが作成されたことを確認 postgres | Superuser, Create role, Create DB, Replication | {} -bash-4.2$
PostgreSQLのデータベースを作成
データソースとして登録するPostgreSQLのデータベースを作成します。 データベース名は wftestdb とし、データベースの所有者は先に作成した pguser01 とします。
-bash-4.2$ psql -l ←PostgreSQLのデータベースの一覧を表示 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------+-------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres (3 rows) -bash-4.2$ createdb -O pguser01 wftestdb ←PostgreSQLのデータベースの作成 -bash-4.2$ psql -l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------+-------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres wftestdb | pguser01 | UTF8 | C | C | ←データベースが作成されたことを確認 (4 rows) -bash-4.2$
PostgreSQL用JDBCドライバのインストール
JDBCドライバのダウンロード
PostgreSQL用のJDBCドライバ(JARファイル)をwgetコマンドでダウンロードします。 ダウンロード元はPostgreSQLの公式サイトです。 2016年7月10日時点での最新はバージョン9.4用でした。
$ sudo su - # cd /media/installer/ # wget https://jdbc.postgresql.org/download/postgresql-9.4.1208.jar ←ファイルのダウンロード --2016-07-08 10:16:56-- https://jdbc.postgresql.org/download/postgresql-9.4.1208.jar Resolving jdbc.postgresql.org (jdbc.postgresql.org)... 174.143.35.228, 2001:4800:1501:1::228 Connecting to jdbc.postgresql.org (jdbc.postgresql.org)|174.143.35.228|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 648601 (633K) [application/java-archive] Saving to: ‘postgresql-9.4.1208.jar’ 100%[==================================================================================================>] 648,601 1.12MB/s in 0.6s 2016-07-08 10:16:57 (1.12 MB/s) - ‘postgresql-9.4.1208.jar’ saved [648601/648601] # ls -l postgresql-* -rw-r--r--. 1 root root 648601 Feb 19 15:31 postgresql-9.4.1208.jar ←ダウンロードしたファイル
管理CLIの起動
ここ以降の作業は全てWildFlyの管理CLIから実行します。 管理CLIを起動し、まずはWildFlyインスタンスへ接続します。 WildFlyがリスニングしているIPと管理用のポートを指定して接続します。 接続時にはWildFlyの管理ユーザとパスワードを入力します。
# cd /opt/wildfly-10.0.0.Final/bin/ # ./jboss-cli.sh ←管理CLIの起動 [disconnected /] connect 54.149.159.115:9990 ←WildFlyインスタンスへ接続 Authenticating against security realm: ManagementRealm Username: wfadmin [disconnected /] Password: ←wfadminユーザのパスワードを入力 [disconnected /] [standalone@54.149.159.115:9990 /]
JDBCドライバ(JARファイル)のデプロイ
ダウンロードしたPostgreSQL用のJDBCドライバを、管理CLIからデプロイします。
[standalone@54.149.159.115:9990 /] deploy /media/installer/postgresql-9.4.1208.jar ←JDBCドライバのデプロイ
登録されたJDBCドライバの確認
デプロイによりJDBCドライバが登録されたことを確認します。
[standalone@54.149.159.115:9990 /] jdbc-driver-info NAME SOURCE h2 com.h2database.h2/main postgresql-9.4.1208.jar postgresql-9.4.1208.jar ←デプロイにより登録された [standalone@54.149.159.115:9990 /] jdbc-driver-info postgresql-9.4.1208.jar ←登録したJDBCドライバの詳細を表示 driver-name postgresql-9.4.1208.jar deployment-name postgresql-9.4.1208.jar driver-module-name n/a module-slot n/a driver-datasource-class-name n/a driver-xa-datasource-class-name n/a driver-class-name org.postgresql.Driver driver-major-version 9 driver-minor-version 4 jdbc-compliant false
非XAデータソースの定義
非XAデータソースの作成
引き続き管理CLIで設定作業を行います。 非XAデータソースを作成します。 作成時に指定する情報は以下の通りです。
設定項目 | 説明 | 値 |
---|---|---|
name | データソース名 | PostgresDS |
connection-url | 接続先DBのURL | jdbc:postgresql://localhost:5432/wftestdb <値の説明> postgresql・・・データソースはPostgreSQL localhost・・・WildFlyと同一サーバ上でPostgreSQLが稼働 5432・・・PostgreSQLのリスニングポート wftestdb・・・データベース名 |
driver-name | 使用するJDBCドライバ | postgresql-9.4.1208.jar |
jndi-name | JNDI名 | java:jboss/resources/jdbc/PostgresDS |
[standalone@54.149.159.115:9990 /] cd subsystem=datasources [standalone@54.149.159.115:9990 subsystem=datasources] :read-resource ←データソース作成前の確認 { "outcome" => "success", "result" => { "data-source" => {"ExampleDS" => undefined}, "jdbc-driver" => {"h2" => undefined}, "xa-data-source" => undefined } } [standalone@54.149.159.115:9990 subsystem=datasources] data-source add --name=PostgresDS --connection-url="jdbc:postgresql://localhost:5432/wftestdb" --driver-name=postgresql-9.4.1208.jar --jndi-name=java:jboss/resources/jdbc/PostgresDS [standalone@54.149.159.115:9990 subsystem=datasources] :read-resource ←データソース作成後の確認 { "outcome" => "success", "result" => { "data-source" => { "ExampleDS" => undefined, "PostgresDS" => undefined ←非XAデータソースが追加された }, "jdbc-driver" => {"h2" => undefined}, "xa-data-source" => undefined } }
作成した非XAデータソースの詳細を確認
作成したデータソースの詳細情報を表示します。 データソース作成時に指定しなかった値はデフォルト値が設定されています。
[standalone@54.149.159.115:9990 subsystem=datasources] data-source read-resource --name=PostgresDS --recursive=true allocation-retry=n/a allocation-retry-wait-millis=n/a allow-multiple-users=false background-validation=n/a background-validation-millis=n/a blocking-timeout-wait-millis=n/a capacity-decrementer-class=n/a capacity-decrementer-properties=n/a capacity-incrementer-class=n/a capacity-incrementer-properties=n/a check-valid-connection-sql=n/a connectable=false connection-listener-class=n/a connection-listener-property=n/a connection-url=jdbc:postgresql://localhost:5432/wftestdb datasource-class=n/a driver-class=n/a driver-name=postgresql-9.4.1208.jar enabled=true enlistment-trace=true exception-sorter-class-name=n/a exception-sorter-properties=n/a flush-strategy=n/a idle-timeout-minutes=n/a initial-pool-size=n/a jndi-name=java:jboss/resources/jdbc/PostgresDS jta=true max-pool-size=n/a mcp=org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool min-pool-size=n/a new-connection-sql=n/a password=n/a pool-fair=n/a pool-prefill=n/a pool-use-strict-min=n/a prepared-statements-cache-size=n/a query-timeout=n/a reauth-plugin-class-name=n/a reauth-plugin-properties=n/a security-domain=n/a set-tx-query-timeout=false share-prepared-statements=false spy=false stale-connection-checker-class-name=n/a stale-connection-checker-properties=n/a statistics-enabled=false track-statements=NOWARN tracking=false transaction-isolation=n/a url-delimiter=n/a url-selector-strategy-class-name=n/a use-ccm=true use-fast-fail=false use-java-context=true use-try-lock=n/a user-name=n/a valid-connection-checker-class-name=n/a valid-connection-checker-properties=n/a validate-on-match=n/a connection-properties=n/a statistics=n/a
非XAデータソースの設定
作成したデータソースに対して、データベースに接続するためのユーザ名とパスワードを追加で設定します。
[standalone@54.149.159.115:9990 subsystem=datasources] data-source --name=PostgresDS --user-name=pguser01 --password=Password --jta=true operation-requires-reload: true operation-requires-reload: true operation-requires-reload: true process-state: reload-required
非XAデータソースの有効化
データソースは作成した時点では無効化されているので、有効化します。
[standalone@54.149.159.115:9990 subsystem=datasources] data-source enable --name=PostgresDS
operation-requires-reload: true
process-state: reload-required ←リロードが要求される
非XAデータソースの設定のリロード
変更をインスタンスに反映するために、データソースをリロードします。
[standalone@54.149.159.115:9990 subsystem=datasources] reload 06:44:32,469 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0010: Unbound data source [java:jboss/resources/jdbc/PostgresDS] 06:44:32,488 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0019: Host default-host stopping 06:44:32,517 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0010: Unbound data source [java:jboss/datasources/ExampleDS] 06:44:32,518 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0019: Stopped Driver service with driver-name = postgresql-9.4.1208.jar 06:44:32,552 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0019: Stopped Driver service with driver-name = h2 06:44:32,562 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0008: Undertow HTTP listener default suspending 06:44:32,563 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0007: Undertow HTTP listener default stopped, was bound to 172.31.28.128:8080 06:44:32,563 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0028: Stopped deployment postgresql-9.4.1208.jar (runtime-name: postgresql-9.4.1208.jar) in 97ms 06:44:32,564 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0004: Undertow 1.3.15.Final stopping 06:44:32,571 INFO [org.jboss.as.mail.extension] (MSC service thread 1-1) WFLYMAIL0002: Unbound mail session [java:jboss/mail/Default] 06:44:32,597 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0050: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) stopped in 131ms 06:44:32,597 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) starting 06:44:33,035 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http) 06:44:33,132 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 37) WFLYCLINF0001: Activating Infinispan subsystem. 06:44:33,206 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 45) WFLYNAM0001: Activating Naming Subsystem 06:44:33,210 INFO [org.jboss.as.security] (ServerService Thread Pool -- 52) WFLYSEC0002: Activating Security Subsystem 06:44:33,211 WARN [org.jboss.as.txn] (ServerService Thread Pool -- 53) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique. 06:44:33,212 INFO [org.jboss.as.webservices] (ServerService Thread Pool -- 55) WFLYWS0002: Activating WebServices Extension 06:44:33,241 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0003: Undertow 1.3.15.Final starting 06:44:33,254 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0003: Undertow 1.3.15.Final starting 06:44:33,254 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final 06:44:33,255 INFO [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final) 06:44:33,272 INFO [org.jboss.as.naming] (MSC service thread 1-2) WFLYNAM0003: Starting Naming Service 06:44:33,295 INFO [org.jboss.as.mail.extension] (MSC service thread 1-2) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default] 06:44:33,296 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 32) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3) 06:44:33,328 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = h2 06:44:33,329 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 54) WFLYUT0014: Creating file handler for path '/opt/wildfly-10.0.0.Final/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]'] 06:44:33,298 INFO [org.wildfly.extension.io] (ServerService Thread Pool -- 36) WFLYIO001: Worker 'default' has auto-configured to 2 core threads with 16 task threads based on your 1 available processors 06:44:33,412 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 16 (per class), which is derived from thread worker pool sizing. 06:44:33,412 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 4 (per class), which is derived from the number of CPUs on this host. 06:44:33,416 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0012: Started server default-server. 06:44:33,416 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS] 06:44:33,419 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0018: Host default-host starting 06:44:33,436 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 172.31.28.128:8080 06:44:33,464 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "postgresql-9.4.1208.jar" (runtime-name: "postgresql-9.4.1208.jar") 06:44:33,477 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/wildfly-10.0.0.Final/standalone/deployments 06:44:33,482 INFO [org.jboss.ws.common.management] (MSC service thread 1-1) JBWS022052: Starting JBossWS 5.1.3.Final (Apache CXF 3.1.4) 06:44:33,763 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.4) 06:44:33,764 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = postgresql-9.4.1208.jar 06:44:33,766 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/resources/jdbc/PostgresDS] 06:44:33,794 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0010: Deployed "postgresql-9.4.1208.jar" (runtime-name : "postgresql-9.4.1208.jar") 06:44:33,870 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://172.31.28.128:9990/management 06:44:33,871 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://172.31.28.128:9990 06:44:33,871 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 10.0.0.Final (WildFly Core 2.0.10.Final) started in 1273ms - Started 319 of 611 services (380 services are lazy, passive or on-demand)
動作確認
非XAデータソースの接続テスト
引き続き管理CLIで作業します。 作成したデータソースを使用して、PostgreSQLのデータベース(データベース名:wftestdb)へ接続テストを行います。 最期に管理CLIを終了させます。
[standalone@54.149.159.115:9990 subsystem=datasources] /subsystem=datasources/data-source=PostgresDS:test-connection-in-pool { "outcome" => "success", ←接続テストに成功した "result" => [true] } [standalone@54.149.158.114:9990 subsystem=datasources] quit ←管理CLIの終了