Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
- Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
- Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
- Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
- Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
- Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
- Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
- Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
- Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
- Java EE 7 検証環境構築(9) jBatch 概要をおさえる
- Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
- Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
- Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
- Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
- Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
- Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
- Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)
GlassFish + Eclipse で Java EE 7 環境構築に疲れたので、WildFly + Eclipse で同じ頂を目指すことにする。
1.Eclipse Standard のダウンロードと展開
Eclipse Standard をダウンロードして適当なフォルダに展開。
https://www.eclipse.org/downloads/
2.JBoss Tools のインストール
http://tools.jboss.org/downloads/
から、JBoss Tools ダウンロードへ
Update Site のURLを取得
http://download.jboss.org/jbosstools/updates/stable/kepler/
上記 1. で展開したEclipseを起動して、Help – Install New Software で起動したウィンドウの、Add ボタンを押して、適当な名前と、上記Update SiteのURLを入力してOK
とりあえず、すべての項目にチェックしてインストール
インストールされた。
3.WildFly のダウンロード
から、ダウンロードして、適当なディレクトリに展開。
4.Eclipse と WildFly を連携させる
4.1 Servers に WildFly追加
Eclipse の メニュー Window – Show View – Other – Server – Servers ビューを開き、右クリックから、New – Server
JBoss Community から WildFly を選択
WildFlyを展開したフォルダを指定。JREには、JDKを指定する必要があるため、JREになっている場合、「JRE」ボタンを押下して、JDKに設定する。
4.2 WildFlyの起動
一旦起動してみる。サーバーのコンテキストメニューからStart
で起動確認。
で管理コンソールに接続できるのだが、ユーザー登録が必要。
4.3 WildFly ユーザー登録
WildFly インストールディレクトリ\bin\add-user.bat を実行して、管理ユーザーを登録する。
最初に、Management User の(a) を選択し、後はユーザー名、パスワードなどを入力する。
C:\Programs\wildfly-8.0.0.Final\bin> .\add-user.bat What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a): a Enter the details of the new user to add. Using realm 'ManagementRealm' as discovered from the existing property files. Username : admin The username 'admin' is easy to guess Are you sure you want to add user 'admin' yes/no? yes Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file. - The password should not be one of the following restricted values {root, admin, administrator} - The password should contain at least 8 characters, 1 alphanumeric character(s), 1 digit(s), 1 non-alphanumeric symbol (s) - The password should be different from the username Password : JBAS015267: Password must have at least 1 non-alphanumeric symbol. Are you sure you want to use the password entered yes/no? yes Re-enter Password : What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]: About to add user 'admin' for realm 'ManagementRealm' Is this correct yes/no? yes Added user 'admin' to file 'C:\Programs\wildfly-8.0.0.Final\standalone\configuration\mgmt-users.properties' Added user 'admin' to file 'C:\Programs\wildfly-8.0.0.Final\domain\configuration\mgmt-users.properties' Added user 'admin' with groups to file 'C:\Programs\wildfly-8.0.0.Final\standalone\configuration\mgmt-groups.properties ' Added user 'admin' with groups to file 'C:\Programs\wildfly-8.0.0.Final\domain\configuration\mgmt-groups.properties' Is this new user going to be used for one AS process to connect to another AS process? e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls. yes/no? yes To represent the user add the following to the server-identities definition
へアクセスすると、ユーザーおよびパスワードを求められるので、上記で追加したユーザーでログイン。
管理コンソールにログイン出来た。
5.Java EE EAR プロジェクトの作成
プロジェクトエクスプローラーのコンテキストメニューから、New – Other – JBoss Central – Java EE EAR Project を作成する。
ウィザードの最初で、「Create a blank project」にチェックを入れると、ブランクのプロジェクトが生成されるが、チェックを入れない(デフォルト)だと、簡単なサンプルを含むプロジェクトが作成されるので、まずはそれを動かしてみる。
5.1 作成されたとたんにエラー
test-ds.xml などが以下の様なエラー
Referenced file contains errors (http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd).
IronJacamar という、Java EE Connector Architecture 実装の設定XML様のXSDが見つからないため。
http://www.ironjacamar.org/documentation.html
ここに、スキーマのURLがあるので、2箇所以下の様に修正するとエラーが消える。
修正前
xsi:schemaLocation=”http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd“
修正後
xsi:schemaLocation=”http://www.ironjacamar.org/doc/schema http://www.ironjacamar.org/doc/schema/datasources_1_0.xsd”
6.サンプルプロジェクトを実行してみる
6.1 サーバーにプロジェクトを追加
WildFlyサーバーのコンテキストメニューから、Add and Remove を選択
プロジェクトを追加してFinish
再度コンテキストメニューから、Publish して、サーバー起動。
6.2 サンプルプロジェクトの実行
起動した。メンバーの追加などが出来る。/rest/members など、RESTで呼び出すと、JSONの結果が帰ることが確認出来る。
7.JUnit の実行
7.1 JUnit を実行してみる
EJBプロジェクトの、src/test/java/ 以下に、上記で実行したメンバー登録用 EJB のテストケース(MemberRegistrationTest) が存在するので、コンテキストメニューから、Run As – JUnit Test を実行してみると、以下の様なエラー
org.jboss.arquillian.container.spi.client.container.DeploymentException: Cannot deploy: test.war
7.2 Arquillian のいくつかの設定
Arquillian がそもそもどんなものかというのは、このあたりを読むとイメージがつかめる。
ただ単にJUnit を走らすだけではだめなようだ。
まず、Arquillian が、テストを実行するには、managed と remote が存在する。
managed は、Arquillian が、コンテナを管理(起動)し、デプロイ、テストまでを行う。
また、remote は、起動済みのコンテナにデプロイし、テストを行う。
7.3 Arquillian managed のテスト実行
このテストを行うのために、pom.xml に maven のプロファイルを設定する。
プロジェクトが作成された段階で、arq-jbossas-managed という ID で、JBoss AS 用の設定はあるのだが、WildFly には対応していないよう(実行で例外)なので、WildFly 用の 設定記述を、
http://mvnrepository.com/artifact/org.wildfly/wildfly-arquillian-container-managed/8.0.0.Final
で確認して、行う。具体的には、以下の profile を EJBプロジェクト直下のpom.xmlに追記する。
<profile> <id>arq-wildfly-managed</id> <dependencies> <dependency> <groupId>org.wildfly</groupId> <artifactId>wildfly-arquillian-container-managed</artifactId> <version>8.0.0.Final</version> <scope>test</scope> </dependency> </dependencies> </profile>
そして、EJBプロジェクト の src/test/resource/META-INF/arquillian.xml を開き、
jbossHome に WildFly のインストールパスを設定する。(JBOSS_HOME を環境変数に設定してもよい)
<container qualifier="jboss" default="true"> <!-- By default, arquillian will use the JBOSS_HOME environment variable. Alternatively, the configuration below can be uncommented. --> <configuration> <property name="jbossHome">C:\Programs\wildfly-8.0.0.Final</property> </configuration> </container>
最後に、Mavanのプロファイルを、arq-wildfly-managed に切り替える。
EJBプロジェクトのコンテキストメニューから、Maven – Select Maven Profiles を選択し、今追加したプロファイルを選択しActivateしOK
再度 JUnit 実行!
OK!Greenだよ!
7.4 Arquillian remote テストの実行
http://mvnrepository.com/artifact/org.wildfly/wildfly-arquillian-container-remote
managed 同様に、以下の profile を EJBプロジェクト直下のpom.xmlに追記する。
<profile> <id>arq-wildfly-remote</id> <dependencies> <dependency> <groupId>org.wildfly</groupId> <artifactId>wildfly-arquillian-container-remote</artifactId> <version>8.0.0.Final</version> <scope>test</scope> </dependency> </dependencies> </profile>
Mavanのプロファイルを今追加した、arq-wildfly-remote に切り替える。
そして、WildFly を起動したのち、JUnit を実行
Greeeeeen だよ~
つかれたー。手順をまとめちゃうと、これだけだけど、トライ&エラーでここまでくるのに結構時間かかった。。。
これで、ようやく、EJBやら、JPAやら、本題に入れるよ。。。