このワークスペースは、Java EE 7 サンプルと単体テストで構成されます。これらは、テクノロジ/JSR ごとに 1 つずつ、異なるディレクトリに分類されます。
一部のサンプル/テストにはドキュメントが含まれています。それ以外の場合はコードを読んでください。 Java EE 7 Essentials ブックでは、これらのサンプルのほとんどについて言及し、説明を提供しています。自由にドキュメントを追加し、プル リクエストを送信してください。
サンプルは、Arquillian エコシステムを使用して、Payara、GlassFish、Wildfly などでテストされます。
@radcortez がこのサンプル ビデオ https://www.youtube.com/watch?v=BB4b-Yz9cF0 で提供する、ローカル マシンでサンプルをクローン、ビルド、インポート、実行する方法の簡単な説明です。
特定の時点でアクティブにできるコンテナー プロファイルは 1 つだけです。アクティブにしないと、依存関係の競合が発生します。
6 つの異なるサーバーに対して、16 個の使用可能なコンテナー プロファイルがあります。
パヤラとグラスフィッシュ
payara-ci-managed
このプロファイルは、Payara サーバーをインストールし、サンプルごとにサーバーを起動します。 CI サーバーに役立ちます。使用される Payara のバージョンは、 payara.version
プロパティを通じて設定できます。これはデフォルトのプロファイルであり、明示的に指定する必要はありません。
payara-embedded
このプロファイルは、Payara 組み込みサーバーを使用し、TestClass と同じ JVM で実行されます。開発には便利ですが、サンプルごとにサーバーが起動するという欠点があります。
payara-remote
このプロファイルでは、ビルドの外部で Payara サーバーを起動する必要があります。各サンプルはこのインスタンスを再利用してテストを実行します。サンプルごとのサーバー起動コストを回避するための開発に役立ちます。
このプロファイルは、 glassfishRemote_gfHome
システム プロパティを介して Payara がインストールされる場所を設定するいくつかのテストをサポートしています。例えば
-DglassfishRemote_gfHome=/opt/payara171
これは、asadmin コマンドを送信して、アイデンティティ ストア内のユーザーなどのコンテナ リソースを作成するために使用されます。
glassfish-embedded
このプロファイルは GlassFish 組み込みサーバーを使用し、TestClass と同じ JVM で実行されます。開発には便利ですが、サンプルごとにサーバーが起動するという欠点があります。
glassfish-remote
このプロファイルでは、ビルドの外部で GlassFish サーバーを起動する必要があります。各サンプルはこのインスタンスを再利用してテストを実行します。サンプルごとのサーバー起動コストを回避するための開発に役立ちます。
このプロファイルは、 glassfishRemote_gfHome
システム プロパティを介して GlassFish がインストールされる場所を設定するいくつかのテストをサポートします。例えば
-DglassfishRemote_gfHome=/opt/glassfish41
これは、asadmin コマンドを送信して、アイデンティティ ストア内のユーザーなどのコンテナ リソースを作成するために使用されます。
ワイルドフライ
wildfly-ci-managed
このプロファイルは、Wildfly サーバーをインストールし、サンプルごとにサーバーを起動します。 CI サーバーに役立ちます。使用される WildFly のバージョンは、 wildfly.version
プロパティを通じて設定できます。
wildfly-embedded
このプロファイルは、wildfly-ci-managed とほぼ同じです。同じ Wildfly サーバーをインストールし、サンプルごとにそのサーバーを再度起動しますが、代わりに Arquillian 組み込みコネクタを使用して同じ JVM 内で実行します。 CI サーバーに役立ちます。使用される WildFly のバージョンは、 wildfly.version
プロパティを通じて設定できます。
wildfly-remote
このプロファイルでは、ビルドの外部で Wildfly サーバーを起動する必要があります。各サンプルはこのインスタンスを再利用してテストを実行します。サンプルごとのサーバー起動コストを回避するための開発に役立ちます。
wildfly-swarm
このプロファイルは WildFly Swarm を使用します。これにより、WildFly アプリケーション サーバーを十分に含む uberjar を構築できます。ここで、含まれる WildFly の部分は、アプリケーションの検査と実際に使用される Java EE API の検索に基づいて選択されます。使用される WildFly Swarm のバージョンは、 wildfly.swarm.version
プロパティを通じて設定できます。
トムEE
tomee-ci-managed
このプロファイルは TomEE サーバーをインストールし、サンプルごとにそのサーバーを起動します。 CI サーバーに役立ちます。このプロファイルは実行中のサーバーに接続できません。
使用する TomEE のバージョンは、利用可能な Maven リポジトリに存在する必要があることに注意してください。このプロファイルのデフォルトでは、arquillian アダプターと TomEE サーバーが同じバージョンであることを前提としています。たとえば、両方とも 7.0.0 です。
Maven Central で利用できない TomEE サーバーを使用するには、サンプルにそれを使用する 1 つの方法は、次のようにローカル .m2 にインストールすることです。
TomEE リポジトリのクローンを作成します。
git clone https://github.com/apache/tomee
cd tomee
必要に応じて目的のバージョンに切り替えて、.m2 でビルドしてインストールします。
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
mvn clean install -pl arquillian -amd -Dmaven.test.skip=true
インストールされているバージョン (TomEE プロジェクトの pom.xml を参照) が、サンプル プロジェクトのルート pom.xml のプロパティ セクションのtomee.version
と一致していることを確認してください。
tomee-embedded
このプロファイルは TomEE 組み込みサーバーを使用し、TestClass と同じ JVM で実行されます。
自由
liberty-managed
このプロファイルはサンプルごとに Liberty サーバーを起動し、オプションでビルドの外部で起動できる実行中のサーバーに接続します (ただし、このサーバーは同じユーザーを使用してテストが実行されるホスト上で実行する必要があるという制限付き) )。
実行中のサーバーに接続するには、 org.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer
システムプロパティを true に設定する必要があります。例えば
-Dorg.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer=true
このプロファイルでは、 libertyManagedArquillian_wlpHome
システム・プロパティーを介して、Liberty がインストールされる場所を設定する必要があります。例えば
-DlibertyManagedArquillian_wlpHome=/opt/wlp
このプロファイルでは、server.xml で localConnector 機能を構成することも必要です。また、すべてのテストを実行する場合は、javaee-7.0 機能を使用する必要があります。
< featureManager >
< feature >javaee-7.0</ feature >
< feature >localConnector-1.0</ feature >
</ featureManager >
Liberty の古いバージョン (16.0.0.0 より前) で JASPIC テストを実行しようとしても、Liberty の内部ユーザー・レジストリーにグループを作成するチートが必要です。
< basicRegistry id = " basic " >
< group name = " architect " />
</ basicRegistry >
このチートは、Liberty の最新バージョン (16.0.0.0/2016.7 以降) には必要ありません。
liberty-ci-managed
このプロファイルは、Liberty サーバーをダウンロードしてインストールし、サンプルごとにサーバーを起動します。 CI サーバーに役立ちます。これは実際の組み込みサーバーではなく、通常のサーバーであることに注意してください。自動的にダウンロードされるため、個別にインストールする必要がないため、現在は「埋め込み」と呼ばれています。
ウェブロジック
weblogic-remote
このプロファイルでは、ビルドの外部で WebLogic サーバーを起動する必要があります。各サンプルはこのインスタンスを再利用してテストを実行します。
このプロファイルでは、 weblogicRemoteArquillian_wlHome
システム プロパティを介して WebLogic がインストールされる場所を設定する必要があります。例えば
-DweblogicRemoteArquillian_wlHome=/opt/wls12210
デフォルトのユーザー名とパスワードはそれぞれ「admin」と「admin007」であると想定されます。これは、 weblogicRemoteArquillian_adminUserName
およびweblogicRemoteArquillian_adminPassword
システム プロパティを使用して変更できます。例えば
-DweblogicRemoteArquillian_adminUserName=myuser
-DweblogicRemoteArquillian_adminPassword=mypassword
トムキャット
tomcat-remote
このプロファイルでは、ビルドの外部でプレーン Tomcat (8.5 または 9) サーバーを起動する必要があります。各サンプルはこのインスタンスを再利用してテストを実行します。
Tomcat は、サーブレット、JSP、式言語 (EL)、WebSocket、および JASPIC を使用するサンプルをサポートしています。
このプロファイルでは、Tomcat で JMX を有効にする必要があります。これを行うには、以下を[tomcat home]/bin/catalina.sh
に追加します。
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote=true "
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=localhost "
このプロファイルでは、 tomcat-users.xml
で管理アプリケーションのユーザー名 ( tomcat
) とパスワード ( manager
) を設定することも必要です。完全な例については、このリポジトリのファイルtest-utils/src/main/resources/tomcat-users.xml
を参照してください。
上記を行うと Tomcat のインストールが完全に安全でなくなるため、これはテスト専用の Tomcat インスタンスに対してのみ実行する必要があることに注意してください。
tomcat-ci-managed
このプロファイルは Tomcat サーバーをインストールし、サンプルごとにサーバーを起動します。 CI サーバーに役立ちます。使用される Tomcat のバージョンは、 tomcat.version
プロパティを通じて設定できます。
サーバーをダウンロードしてインストールするコンテナー (*-ci-managed プロファイル) を使用すると、使用されるバージョンをオーバーライドできます。例:
-Dpayara.version=4.1.1.163
これにより、Payara テストの目的で、バージョンが現在のバージョン (例: 4.1.1.171.1) から 4.1.1.163 に変更されます。
-Dglassfish.version=4.1
これにより、GlassFish のテストのためにバージョンが現在のバージョン (例: 4.1.1) から 4.1 に変更されます。
-Dwildfly.version=8.1.0.Final
これにより、WildFly のバージョンが現在のバージョン (10.1.0.Final など) から 8.1.0.Final に変更されます。
コンソールで実行するには、次のようにします。
mvn test -fae
実行して、デフォルト プロファイルのテストを開始します。IDE から開発して実行する場合は、テストを実行する前に必ずプロファイルをアクティブ化してください。
Arquillian について詳しくは、Arquillian ガイドを参照してください。
テストのサブセットのみを実行するには、最上位ディレクトリで次の操作を実行します。
mvn clean install -pl "test-utils,util" -am
cd jaspic
mvn clean test -P liberty-ci-managed
皆様のご協力により、このサンプル セットを改善し、お互いから学び、テクノロジー、イノベーション、コードの品質に関心を持つ情熱的な人々で満たされるコミュニティを成長させることができます。すべての貢献は重要です!
プル リクエストを送信する前に覚えておくべきことがたくさんあるので、新しいものをすべてマスター ブランチに簡単に組み込むことができます。
標準テストは jUnit ベースです (たとえば、このコミット)。テストクラスの命名は、確実な命名標準**/*Test.java
、 **/*Test*.java
、または**/*TestCase.java
に準拠する必要があります。
明確さと一貫性を確保し、事前の複雑さを最小限に抑えるために、Java を使用し、追加のヘルパーとして HtmlUnit、Hamcrest、そしてもちろん Arquillian を使用した標準の jUnit テストを好みます。これらのテクノロジーの代替手段を使用しないでください。このプロジェクトに新しい依存関係を導入する必要がある場合は、既存の依存関係ではカバーされていないものを提供する必要があります。
git pull upstream master
を実行するだけで、ハッキングの準備が完了します。git checkout -b my_new_cool_feature
を使用できます。それでおしまい!コミュニティへようこそ!
CI ジョブは Travis によって実行されます。ここで提供されているサンプルの性質上、すべてのテストが合格するわけではないのはごく普通のことであることに注意してください。これは通常、サンプルが実行されるサーバーのバグを示します。本当にテストに問題があると思われる場合は、問題を送信するか、PR に修正を提供してください。
http://boot2docker.io から Docker クライアントをインストールします
実行するサンプルをビルドします。
mvn clean package -DskipTests
例えば:
mvn -f jaxrs/jaxrs-client/pom.xml clean package -DskipTests
Dockerfile
の 2 行目を変更して、生成された WAR ファイルの場所を指定します。
boot2dockerを実行してコマンドを入力します
docker build -it -p 80:8080 javaee7-sample
別のシェルで、次のように実行中のコンテナの IP アドレスを確認します。
boot2docker ip
http://IP_ADDRESS:80/jaxrs-client/webresources/persons としてサンプルにアクセスします。正確な URL はサンプルによって異なります。