開発時と稼働時の接続情報は異なる#
Java EE 7 の実装であるJBoss ToolsとWildFlyで開発する時の注意としては次です。- 開発時に使うDB接続は「Database Connections」で設定する。
- 稼働時の接続方法は2通りある。以下のうち1を推奨。
- アプリケーションサーバー上(WildFlyのこと、以下APサーバー)で設定する。(WildFly上のデータソースとpersistence.xmlでの設定)
- アプリケーション個別で設定する(warファイルに含める)。(persistence.xmlとwebアプリケーション-ds.xmlでの設定)
共通する設定#
MySQLのJDBCドライバをダウンロードする#
APサーバー上に定義したデータソース経由でRDBに接続する場合 (推奨)#
- 5.1系の最新をダウンロードする。2016年4月時点では5.1.38。
https://dev.mysql.com/downloads/connector/j/ - ダウンロードしたファイルを展開する。
- mysql-connector-java-5.1.38.jarファイルをeclipseフォルダの横並びに配置する。(配下ではなく)
例えば、mysqljdbc\mysql-connector-java-5.1.38.jar - APサーバー(WildFly)にjarファイルをデプロイする。(手順は後述)
アプリケーション(warファイル内)で定義した設定でRDBに接続する場合#
この方法の場合にはJDBCのjarファイルがAPサーバー上に毎回デプロイされます。APサーバー(WildFly)上のデータソース経由で接続したい場合にこの設定は不要です。- プロジェクトのpom.xmlをエディタで開き、DependenciesタブでAddボタンを押す
- 次のように入力する。
- pom.xmlファイルを保存する
- 以下のフォルダ配下にjarファイルが出来ていればOK。
*あなたのユーザーフォルダ\.m2\repository\mysql\mysql-connector-java
- Project Explorerでプロジェクトを選択して右ボタンクリック。
- Maven → Update Project を実行する。
開発時のDB接続設定#
Database ConnectionsにMySQLサーバーへの接続情報を設定する#
- Window→Perspective → Open Perspective → Other を開く
- JPAを選択する
![]() |
- 開いた中のData Source Explorerをクリック
- Database Connectionsを右ボタンクリック
- Newをクリック
![]() |
- Connection Profile TypeからMySQLを選択する
- Nextボタンを押す。
![]() |
- Drivers選択リストの右にある「+」アイコンを押す。
- Name/Typeタブにて5.1(またはさらに新しいもの)をクリックする。
- 表示された画面のDriver nameに「MySQL JDBC Driver5.1.38」と記入する。バージョン番号は適宜換える。
- JAR Listタブを押す。
- Driver Filesに表示されている「mysql-connector-java-5.1.0-bin.jar」を削除する。
- Add JAR/ZIP ボタンを押す。
- 表示されたファイルオープンダイアログにてダウンロードしておいたmysql-connector-java-5.1.38.jarを選択する。
![]() |
- OKボタンを押す。
![]() |
- 上記画面のそれぞれで接続情報を入力する。
- Test Connectionボタンを押して「Ping Succeeded!」と表示されれば成功。エラーが表示された場合はDBが起動されているか、接続情報を誤っていないか確認する。
- Finishボタンを押す。
- 下記画面が表示されれば完了。
![]() |
Javax.transaction APIをMavenに記述する#
いや~、これはハマりました。どハマリです。この設定が必要だと判るのに1週間掛かりました!この設定をしないと、CDI管理でのpersist()が出来ません。実行時に"Transaction is required to perform ・・・" というエラーが出て、ずっと原因が判りませんでした。
CDI管理においては"@Transactional"アノテーションによるトランザクション指定が必要なことを理解してなかった事から来る大きな勘違いもありました。なまじSELECTは正しく動くので余計混乱して時間ロスが。
- CDI管理下のテーブル更新では@Transactionalアノテーションが必要。
- @Transactionalアノテーションをビルドするためには、Jboss Toolsに入っていないJavax.transaction APIの取得が必要。
- pom.xml の<dependencies>配下に以下を追加する。
<dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> <version>1.2</version> </dependency>
jboss-web.xmlにエンコーディングを記述する#
これもプチはまりでした。SELECTする時の検索条件に日本語を書くと初回サブミット時だけ文字化けしたり、更新時の値として書くと毎回文字化けしたりと色々現象が出ましたがこれで解決しました。
- WEB-INF 直下に以下の内容の jboss-web.xml ファイルを配置する。
<?xml version="1.0" encoding="UTF-8"?> <jboss-web> <default-encoding>UTF-8</default-encoding> </jboss-web>
また、このXMLファイルのネームスペースやスキーマロケーション(SchemaLocation)などの定義を書くとEclipse上でエラーが表示されます。エラーの内容を見ると、スキーマ定義ファイル(XSD)自体に誤りがあると怒っていますが、書かなくても動くので上記の通りでいいと思います。(整形式XML文書として使う)
参考 https://github.com/jboss/metadata/blob/master/web/src/main/resources/schema/jboss-web_8_0.xsd

稼働時のDB接続設定#
稼働時のDB接続設定は2通りあります。アプリケーションサーバーの設定によってDBに接続する (推奨)#
アプリケーションサーバー(WildFly 9.0.2.Final)上に定義されているデータソースを基にDBに接続する方法です。WildFly 10.0.0.Final でも同じです。WildFly 9.0.1.Final では画面構成が少し異なりますが基本的な手順は同じです。この方法の場合、接続先リソースを持つファイル(persistence.xml)をどの環境でも同じにしておいて、 アプリケーションサーバー側の設定によって検証DBサーバーや本番DBサーバーなどの接続先を決めることが出来ます。
JDBCドライバのデプロイ#
- EclipseのServers窓にてWildFlyを起動する。
- ブラウザにて http://localhost:9990/console/ にアクセスする。
- JBoss Toolsのインストールと設定にて設定したユーザー/パスワードでログインする。
- 以下の画面が表示される。
![]() |
- 上記画面左上のDeploymentsをクリックする。
![]() |
- Addボタンを押し、表示された画面で "Upload a new deployment" を選択し、"Next"ボタンを押す。
![]() |
- "ファイルを選択" ボタンを押す。
- ダウンロードしておいたjarファイルを選択する(この例ではmysql-connector-java-5.1.38.jar)。
- Nextボタンを押す。
![]() |
- Finishボタンを押す。
- 次の画面が表示されれば完了。
![]() |
データソースを定義する#
![]() |
- Configurationタブ → Subsystems → Datasources → Non-XA → Addボタンを押す。
![]() |
- MySQL Datasourceを選択して"Next"ボタンを押す。
![]() |
- "Name"に自分が付けたい名前を入力する。
- "JNDI Name"にデータソース名を入力する。「java:jboss/datasources/自分が付けたい名前」
★このデータソース名をpersistence.xmlに後で記述する。 - Nextボタンを押す。
![]() |
- Detected Driverをクリックする。
- 先ほどデプロイしたバージョンのJDBCドライバーのうち、mysql-connector-java-5.1.38.jar_com.mysql.jdbc.Driver_5_1 の方を選ぶ(Fabricでない方)。
- Nextボタンを押す。
![]() |
- "Connection URL"に jdbc:mysql://localhost:3306/DB名 を入力する。
- 該当DBに接続可能なMySQLのユーザー名とパスワードを"Username"と"Password"に入力する。
- Test Connectionボタンを押す。
- "Successfully created JDBC connection."と表示されたら成功。
- OKボタンを押す。
persistence.xmlにMySQLサーバーへの接続情報を設定する#
APサーバー上に定義したデータソース経由でRDBに接続する場合 (推奨)#
この方法の場合は persistence.xml のみ定義します。src/main/resources/META-INF/persistence.xmlをエディタで開き、Sourceタグに次のように設定します。
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="primary"> <!-- If you are running in a production environment, add a managed data source, this example data source is just for development and testing! --> <!-- The datasource is deployed as WEB-INF/jboss-javaee-webapp-ds.xml, you can find it in the source at src/main/webapp/WEB-INF/jboss-javaee-webapp-ds.xml --> <jta-data-source>java:jboss/datasources/jboss-javaee-webappDS</jta-data-source> <properties> <!-- Properties for Hibernate --> <property name="hibernate.hbm2ddl.auto" value="validate" /> <property name="hibernate.show_sql" value="true" /> <!-- added by ytp --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> </properties> </persistence-unit> </persistence>
Name | Value | 説明 |
---|---|---|
persistence-unit name | primary | 任意の接続名。ここで定義した名前を@PersistenceContextアノテーションのunitName属性に記述する |
jta-data-source | java:jboss/datasources/任意の名前 | WildFlyに定義したデータソース名。ここで定義したのと同じ文字列でWildFlyにも登録しておくこと。 |
hibernate.hbm2ddl.auto | none | 実行時にテーブルなどの作成を行うかどうか。規定値はcreate-drop。 |
hibernate.show_sql | true | HibernateのログにSQLを出力する。規定値はfalse。 |
hibernate.format_sql | false | Hibernateのログに出力するSQLを整形する。 |
hibernate.dialect | org.hibernate.dialect.MySQLDialect | SQLの方言を指定する。この場合はMySQL。 |
persistence.xmlのより詳しい内容はここが参考になります。 Hibernateを使ったシンプルなJPA環境構築

アプリケーション個別で設定する(warファイルに含める)場合#
この方法の場合は、上記の persistence.xml とアプリケーション用データソース定義ファイル(-ds.xml)に設定します。webapp/WEB-INF/アプリケーション名-ds.xmlをエディタで開き、下記のように設定します。
<datasources xmlns="http://www.jboss.org/ironjacamar/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"> <!-- The datasource is bound into JNDI at this location. We reference this in META-INF/persistence.xml --> <datasource jndi-name="java:jboss/datasources/jboss-javaee-webappDS" pool-name="jboss-javaee-webapp" enabled="true" use-java-context="true"> <!-- these are defined on the wildfly datasource --> <connection-url>jdbc:mysql://localhost:3306/test</connection-url> <driver>jboss-javaee-webapp.war_com.mysql.jdbc.Driver_5_1</driver> <driver-class>com.mysql.jdbc.Driver</driver-class> <security> <user-name>testadmin</user-name> <password>pass</password> </security> </datasource> </datasources>
Name | Value | 説明 |
---|---|---|
jndi-name | java:jboss/datasources/任意の名前 | persistence.xmlで定義したデータソース名。この名前で紐付けられます。 |
connection-url | jdbc:mysql://localhost:3306/test | ポート番号の後ろはSchema(DATABASE)名を書く。 |
driver | jboss-javaee-webapp.war_com.mysql.jdbc.Driver_5_1 | ドライバーバージョンが5.1の場合が左記。 |
driver-class | com.mysql.jdbc.Driver | ドライバークラス。jarファイルの中の META-INF/services/java.sql.Driverファイルの中に記述されている。 |
user-name | testuser | スキーマに接続するユーザー。 |
password | pass | ユーザーのパスワード。 |
この-ds.xmlファイルを使った設定は将来使えなくなる可能性があります。
このファイルの設定方法を確認しながらWildFlyを起動している最中に、-ds.xml will be deprecated というメッセージが表示されたことがありました。(設定の誤りによってあるエラーが発生した時だけ表示された)
添付ファイルの追加
ログイン済のユーザのみが添付ファイルをアップロード出来ます。
添付ファイル一覧
Kind | Attachment Name | Size | Version | Date Modified | Author | Change note |
---|---|---|---|---|---|---|
png |
connection-profile.png | 66.5 kB | 2 | 13-1-2016 15:38 | ytp | |
png |
database-connections-fin.png | 137.2 kB | 2 | 14-1-2016 00:07 | ytp | |
png |
database-connections.png | 124.6 kB | 1 | 13-1-2016 23:56 | ytp | |
png |
deployments1.png | 111.9 kB | 1 | 19-4-2016 17:04 | ytp | |
png |
deployments2.png | 133.8 kB | 1 | 19-4-2016 22:08 | ytp | |
png |
deployments3.png | 134.1 kB | 1 | 19-4-2016 22:08 | ytp | |
png |
deployments4.png | 105.0 kB | 1 | 19-4-2016 22:08 | ytp | |
png |
driver-definition.png | 101.4 kB | 3 | 13-1-2016 16:10 | ytp | |
png |
driver-jar-list.png | 42.8 kB | 1 | 13-1-2016 16:14 | ytp | |
png |
driver-properties.png | 64.6 kB | 2 | 13-1-2016 16:45 | ytp | |
png |
mysql-dependency.png | 38.7 kB | 1 | 11-1-2016 23:32 | ytp | |
png |
persistence-properties.png | 136.8 kB | 3 | 14-1-2016 00:36 | ytp | |
png |
wildfly-console.png | 74.4 kB | 1 | 19-4-2016 15:31 | ytp | |
png |
wildfly-ds1.png | 111.7 kB | 1 | 20-4-2016 01:31 | ytp | |
png |
wildfly-ds2.png | 153.3 kB | 1 | 20-4-2016 00:38 | ytp | |
png |
wildfly-ds3.png | 150.9 kB | 1 | 20-4-2016 00:13 | ytp | |
png |
wildfly-ds4.png | 160.7 kB | 1 | 20-4-2016 00:13 | ytp | |
png |
wildfly-ds5.png | 170.1 kB | 1 | 20-4-2016 00:14 | ytp |
«
This page (revision-421) was last changed on 26-8-2016 23:38 by ytp