Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで

  1. Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで
  2. Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
  3. Java EE 7 検証環境構築(3) JPAからMySQLに接続するユニットテストをArquillianで実行
  4. Java EE 7 検証環境構築(4) Java EE での DI(Dependency Injection) および CDI(Contexts and Dependency Injection)をながめる
  5. Java EE 7 検証環境構築(5) JBoss Toolsが生成したサンプルソースのCDIを確認する
  6. Java EE 7 検証環境構築(6) JPA エンティティの作成と挿入
  7. Java EE 7 検証環境構築(7) JPA 問い合わせ(1) 名前付きクエリを使ってみる。テストでトランザクションも意識する
  8. Java EE 7 検証環境構築(8) JPA 問い合わせ(2) 動的クエリとCriteria API を試す
  9. Java EE 7 検証環境構築(9) jBatch 概要をおさえる
  10. Java EE 7 検証環境構築(10) JBoss Tools で作成した EARプロジェクトをJava EE 6 から 7 に変更する
  11. Java EE 7 検証環境構築(11) jBatch用 プロジェクトの作成を行う
  12. Java EE 7 検証環境構築(12) jBatch 簡易サンプル作成と Arquillian でユニットテスト
  13. Java EE 7 検証環境構築(13) jBatch REST サービス経由で実行する
  14. Java EE 7 検証環境構築(14) WildFly の管理をGUIで行う
  15. Java EE 7 検証環境構築(15) WildFly を サービスとして設定する(Windows/Linux)
  16. 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/

jboss_tools_wildfly01

2.JBoss Tools のインストール

http://tools.jboss.org/downloads/

から、JBoss Tools ダウンロードへ

jboss_tools_download

Update Site のURLを取得

http://download.jboss.org/jbosstools/updates/stable/kepler/

jboss_tools_updatesite

上記 1. で展開したEclipseを起動して、Help – Install New Software で起動したウィンドウの、Add ボタンを押して、適当な名前と、上記Update SiteのURLを入力してOK

jboss_tools_install_eclipse

とりあえず、すべての項目にチェックしてインストール

jboss_tools_install_eclipse02

インストールされた。

jboss_tools_installed

3.WildFly のダウンロード

http://wildfly.org/downloads/

から、ダウンロードして、適当なディレクトリに展開。

wildfly_download

4.Eclipse と WildFly を連携させる

4.1 Servers に WildFly追加

Eclipse の メニュー Window – Show View – Other – Server – Servers ビューを開き、右クリックから、New – Server

add_server_to_eclipse

JBoss Community から WildFly を選択

add_server_to_eclipse02

WildFlyを展開したフォルダを指定。JREには、JDKを指定する必要があるため、JREになっている場合、「JRE」ボタンを押下して、JDKに設定する。

add_server_to_eclipse03

4.2 WildFlyの起動

一旦起動してみる。サーバーのコンテキストメニューからStart

start_wildfly_via_eclipse

http://127.0.0.1:8080/

で起動確認。

wildfly_is_running

http://127.0.0.1:9990/

で管理コンソールに接続できるのだが、ユーザー登録が必要。

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

http://127.0.0.1:9990/

へアクセスすると、ユーザーおよびパスワードを求められるので、上記で追加したユーザーでログイン。

login_wildfly_as_management_user

管理コンソールにログイン出来た。

5.Java EE EAR プロジェクトの作成

プロジェクトエクスプローラーのコンテキストメニューから、New – Other – JBoss Central – Java EE EAR Project を作成する。

create_java_ee_ear_project

ウィザードの最初で、「Create a blank project」にチェックを入れると、ブランクのプロジェクトが生成されるが、チェックを入れない(デフォルト)だと、簡単なサンプルを含むプロジェクトが作成されるので、まずはそれを動かしてみる。

ear_blank_project

5.1 作成されたとたんにエラー

test-ds.xml などが以下の様なエラー

Referenced file contains errors (http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd).

jboss_ear_project_initial_error

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 を選択

add_server_to_project

プロジェクトを追加してFinish

add_server_to_project02

再度コンテキストメニューから、Publish して、サーバー起動。

6.2 サンプルプロジェクトの実行

起動した。メンバーの追加などが出来る。/rest/members など、RESTで呼び出すと、JSONの結果が帰ることが確認出来る。

sample_ear_project_is_running

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

junit_error

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

select_maven_profiles

再度 JUnit 実行!

junit_success_management

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 に切り替える。

maven_profile_remote

そして、WildFly を起動したのち、JUnit を実行

junit_remote_green

Greeeeeen だよ~

つかれたー。手順をまとめちゃうと、これだけだけど、トライ&エラーでここまでくるのに結構時間かかった。。。

これで、ようやく、EJBやら、JPAやら、本題に入れるよ。。。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です