開発時と稼働時の接続情報は異なる#
JBoss Toolsで開発する時の注意としては次です。- 開発時に使う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に接続する方法です。この方法の場合、接続先リソースを持つファイル(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サーバーへの接続情報を設定する#
src/main/resources/META-INF/persistence.xmlをエディタで開き、Propertiesタグを開きます。この中に次のように設定します。
![]() |
Name | Value | 説明 |
---|---|---|
hibernate.hbm2ddl.auto | none | 実行時にテーブルなどの作成を行うかどうか。規定値はcreate-drop。 |
hibernate.show_sql | true | HibernateのログにSQLを出力する。規定値はfalse。 |
javax.persistence.jdbc.driver | com.mysql.jdbc.Driver | JDBCドライバー。 |
javax.persistence.jdbc.url | jdbc:mysql://localhost:3306/test | ポート番号の後ろはSchema(DATABASE)名を書く。 |
javax.persistence.jdbc.user | testuser | 接続するユーザー。 |
javax.persistence.jdbc.password | userpass | ユーザーのパスワード。 |
hibernate.format_sql | false | Hibernateのログに出力するSQLを整形する。 |
hibernate.dialect | org.hibernate.dialect.MySQLDialect | SQLの方言を指定する。この場合はMySQL。 |
<properties> <property name="hibernate.hbm2ddl.auto" value="none" /> <property name="hibernate.show_sql" value="true" /> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/> <property name="javax.persistence.jdbc.user" value="testuser"/> <property name="javax.persistence.jdbc.password" value="userpass"/> <property name="hibernate.format_sql" value="false"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> </properties>persistence.xmlのより詳しい内容はここが参考になります。 Hibernateを使ったシンプルなJPA環境構築

添付ファイルの追加
ログイン済のユーザのみが添付ファイルをアップロード出来ます。
添付ファイル一覧
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 particular version was published on 30-4-2016 17:02 by ytp.