At line 2 changed one line |
JBoss Toolsで開発する時の注意としては次です。 |
Java EE 7 の実装であるJBoss ToolsとWildFlyで開発する時の注意としては次です。 |
At line 4 changed 2 lines |
#稼働時に使うDB接続は「persistence.xml」と「jboss-javaee-webapp-ds.xml」で設定する。 |
共通した設定もそれ以前にあります。 |
#稼働時の接続方法は2通りある。以下のうち1を推奨。 |
##アプリケーションサーバー上(WildFlyのこと、以下APサーバー)で設定する。(WildFly上のデータソースとpersistence.xmlでの設定) |
##アプリケーション個別で設定する(warファイルに含める)。(persistence.xmlとwebアプリケーション-ds.xmlでの設定) |
共通した設定もこれ以前にあります。 |
At line 7 changed 7 lines |
!!MySQLのJDBCドライバをDependencies(依存関係)に設定する |
プロジェクトのpom.xmlをエディタで開き、DependenciesタブでAddボタンを押します。\\ |
次のように入力します。\\ |
Artifact Idは mysql-connector-java です。Versionにはその時点での最新を記述して下さい。\\ |
[{Image src='mysql-dependency.png'}]\\ |
この設定によって以下のフォルダ配下にjarファイルが出来ていればOKです。 |
*あなたのユーザーフォルダ\.m2\repository\mysql\mysql-connector-java |
!!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ファイルをデプロイする。(手順は後述) |
At line 18 added 13 lines |
!アプリケーション(warファイル内)で定義した設定でRDBに接続する場合 |
この方法の場合にはJDBCのjarファイルがAPサーバー上に毎回デプロイされます。APサーバー(WildFly)上のデータソース経由で接続したい場合にこの設定は不要です。\\ |
#プロジェクトのpom.xmlをエディタで開き、DependenciesタブでAddボタンを押す |
#次のように入力する。 |
[{Image src='mysql-dependency.png'}] |
Artifact Idは mysql-connector-java。Versionにはその時点での最新を記述する。 |
#pom.xmlファイルを保存する |
#以下のフォルダ配下にjarファイルが出来ていればOK。\\ |
*あなたのユーザーフォルダ\.m2\repository\mysql\mysql-connector-java |
もしもファイルが出来ていない場合はpom.xmlの設定を見直した上で以下を実行する。 |
#Project Explorerでプロジェクトを選択して右ボタンクリック。 |
#Maven → Update Project を実行する。 |
|
At line 17 changed one line |
#Window→Perspective→Open Perspective→Other を開く |
#Window→Perspective → Open Perspective → Other を開く |
At line 34 removed 2 lines |
|
[{Image src='driver-jar-list.png'}] |
At line 38 changed one line |
#表示されたファイルオープンダイアログにて「ユーザーフォルダー\.m2\repository\mysql\mysql-connector-java\バージョン\mysql-connector-java-バージョン.jar」を選択する。 |
#表示されたファイルオープンダイアログにてダウンロードしておいたmysql-connector-java-5.1.38.jarを選択する。 |
[{Image src='driver-jar-list.png'}] |
At line 40 changed one line |
|
\\ |
At line 43 changed one line |
#Test Connectionボタンを押して「Ping Succeeded!」と表示されれば成功。エラーが表示された場合はRDBが起動されているか、接続情報を誤っていないか確認する。 |
#Test Connectionボタンを押して「Ping Succeeded!」と表示されれば成功。エラーが表示された場合はDBが起動されているか、接続情報を誤っていないか確認する。 |
At line 63 added 38 lines |
!!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>配下に以下を追加する。 |
%%prettify |
{{{ |
<dependency> |
<groupId>javax.transaction</groupId> |
<artifactId>javax.transaction-api</artifactId> |
<version>1.2</version> |
</dependency> |
}}} |
/% |
だけです。 |
でも、Jboss Toolsにこれが入っていないのってなぜ??? |
|
!!jboss-web.xmlにエンコーディングを記述する |
これもプチはまりでした。\\ |
SELECTする時の検索条件に日本語を書くと初回サブミット時だけ文字化けしたり、更新時の値として書くと毎回文字化けしたりと色々現象が出ましたがこれで解決しました。 |
#WEB-INF 直下に以下の内容の jboss-web.xml ファイルを配置する。 |
%%prettify |
{{{ |
<?xml version="1.0" encoding="UTF-8"?> |
<jboss-web> |
<default-encoding>UTF-8</default-encoding> |
</jboss-web> |
}}} |
/% |
当然の事ですが、エンコーディングの値(上記ではUTF-8)は各環境に合わせて換えて下さい。\\ |
また、このXMLファイルのネームスペースやスキーマロケーション(SchemaLocation)などの定義を書くとEclipse上でエラーが表示されます。エラーの内容を見ると、スキーマ定義ファイル(XSD)自体に誤りがあると怒っていますが、書かなくても動くので上記の通りでいいと思います。(整形式XML文書として使う)\\ |
参考 [https://github.com/jboss/metadata/blob/master/web/src/main/resources/schema/jboss-web_8_0.xsd] |
|
|
At line 51 changed 2 lines |
!!アプリケーションサーバーの設定によってRDBに接続する時 (推奨) |
アプリケーションサーバー(WildFly)上に定義されているデータソースを基にRDBに接続する方法です。\\ |
!!アプリケーションサーバーの設定によってDBに接続する (推奨) |
アプリケーションサーバー(WildFly 9.0.2.Final)上に定義されているデータソースを基にDBに接続する方法です。WildFly 10.0.0.Final でも同じです。WildFly 9.0.1.Final では画面構成が少し異なりますが基本的な手順は同じです。\\ |
At line 54 changed one line |
アプリケーションサーバー側の設定によって検証サーバーや本番サーバーの接続が決まります。\\ |
アプリケーションサーバー側の設定によって検証DBサーバーや本番DBサーバーなどの接続先を決めることが出来ます。\\ |
At line 59 changed one line |
#[JBoss Toolsのインストールと設定]にて設定したユーザー/パスワードでログインする。 |
#[JBoss Toolsのインストールと設定|JBoss ToolsとWildFly9.0のインストールと設定]にて設定したユーザー/パスワードでログインする。 |
At line 61 changed 6 lines |
[{Image src='wildfly-console.png'}]\\ |
#上記画面左上のDeploymentをクリックする。 |
[{Image src='deployments1.png'}]\\ |
#Addボタンを押す。 |
#次の画面で "Upload a new deployment" を選択し、"Next"ボタンを押す。 |
[{Image src='deployments2.png'}]\\ |
[{Image src='wildfly-console.png'}] |
#上記画面左上のDeploymentsをクリックする。 |
\\ |
[{Image src='deployments1.png'}] |
#Addボタンを押し、表示された画面で "Upload a new deployment" を選択し、"Next"ボタンを押す。 |
\\ |
[{Image src='deployments2.png'}] |
At line 68 changed 4 lines |
#C:\Users\ユーザー名\.m2\repository\mysql\mysql-connector-java\バージョン番号\ の中のjarファイルを選択する。 |
#"Next"ボタンを押す。 |
[{Image src='deployments3.png'}]\\ |
#"Finish"ボタンを押す。 |
#ダウンロードしておいたjarファイルを選択する(この例ではmysql-connector-java-5.1.38.jar)。 |
#Nextボタンを押す。 |
\\ |
[{Image src='deployments3.png'}] |
#Finishボタンを押す。 |
At line 73 changed one line |
[{Image src='deployments4.png'}]\\ |
[{Image src='deployments4.png'}] |
At line 130 added 25 lines |
!データソースを定義する |
[{Image src='wildfly-ds1.png'}] |
#Configurationタブ → Subsystems → Datasources → Non-XA → Addボタンを押す。 |
\\ |
[{Image src='wildfly-ds2.png'}] |
#MySQL Datasourceを選択して"Next"ボタンを押す。 |
\\ |
[{Image src='wildfly-ds3.png'}] |
#"Name"に自分が付けたい名前を入力する。 |
#"JNDI Name"にデータソース名を入力する。「java:jboss/datasources/自分が付けたい名前」\\ |
★このデータソース名をpersistence.xmlに後で記述する。 |
#Nextボタンを押す。 |
\\ |
[{Image src='wildfly-ds4.png'}] |
#Detected Driverをクリックする。 |
#先ほどデプロイしたバージョンのJDBCドライバーのうち、mysql-connector-java-5.1.38.jar_com.mysql.jdbc.Driver_5_1 の方を選ぶ(Fabricでない方)。 |
#Nextボタンを押す。 |
\\ |
[{Image src='wildfly-ds5.png'}] |
#"Connection URL"に jdbc:mysql://localhost:3306/DB名 を入力する。 |
#該当DBに接続可能なMySQLのユーザー名とパスワードを"Username"と"Password"に入力する。 |
#Test Connectionボタンを押す。 |
#"Successfully created JDBC connection."と表示されたら成功。 |
#OKボタンを押す。 |
\\ |
At line 76 changed 4 lines |
src/main/resources/META-INF/persistence.xmlをエディタで開き、Propertiesタグを開きます。\\ |
この中に次のように設定します。\\ |
[{Image src='persistence-properties.png'}]\\ |
|
!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> |
}}} |
At line 182 added 2 lines |
|persistence-unit name|primary|任意の接続名。ここで定義した名前を@PersistenceContextアノテーションのunitName属性に記述する |
|jta-data-source|java:jboss/datasources/任意の名前|WildFlyに定義したデータソース名。ここで定義したのと同じ文字列でWildFlyにも登録しておくこと。 |
At line 83 removed 4 lines |
|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|ユーザーのパスワード。 |
At line 89 changed 13 lines |
同じ内容をXMLで書く場合は次です。\\ |
{{{ |
<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> |
}}} |
\\ |
At line 191 added 34 lines |
\\ |
!アプリケーション個別で設定する(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__ というメッセージが表示されたことがありました。(設定の誤りによってあるエラーが発生した時だけ表示された) |