Ruang kerja ini terdiri dari Sampel Java EE 7 dan pengujian unit. Mereka dikategorikan dalam direktori berbeda, satu untuk setiap Teknologi/JSR.
Beberapa sampel/pengujian memiliki dokumentasi, jika tidak, baca kodenya. Buku Java EE 7 Essentials mengacu pada sebagian besar sampel ini dan memberikan penjelasan. Jangan ragu untuk menambahkan dokumen dan mengirim permintaan penarikan.
Sampel diuji pada Payara, GlassFish, Wildfly, dan lainnya menggunakan ekosistem Arquillian.
Instruksi singkat tentang cara mengkloning, membuat, mengimpor, dan menjalankan sampel di mesin lokal Anda @radcortez disediakan dalam video contoh ini https://www.youtube.com/watch?v=BB4b-Yz9cF0
Hanya satu profil kontainer yang dapat aktif pada waktu tertentu, jika tidak maka akan terjadi konflik ketergantungan.
Ada 16 profil kontainer yang tersedia, untuk 6 server berbeda:
Payara dan GlassFish
payara-ci-managed
Profil ini akan menginstal server Payara dan memulai server per sampel. Berguna untuk server CI. Versi Payara yang digunakan dapat diatur melalui properti payara.version
. Ini adalah profil default dan tidak harus ditentukan secara eksplisit.
payara-embedded
Profil ini menggunakan server tertanam Payara dan berjalan di JVM yang sama dengan TestClass. Berguna untuk pengembangan, tetapi memiliki kelemahan pada startup server per sampel.
payara-remote
Profil ini mengharuskan Anda untuk memulai server Payara di luar build. Setiap sampel kemudian akan menggunakan kembali instance ini untuk menjalankan pengujian. Berguna untuk pengembangan guna menghindari biaya permulaan server per sampel.
Profil ini mendukung beberapa pengujian untuk mengatur lokasi pemasangan Payara melalui properti sistem glassfishRemote_gfHome
. Misalnya
-DglassfishRemote_gfHome=/opt/payara171
Ini digunakan untuk mengirimkan perintah asadmin untuk membuat sumber daya kontainer, seperti pengguna di penyimpanan identitas.
glassfish-embedded
Profil ini menggunakan server tertanam GlassFish dan berjalan di JVM yang sama dengan TestClass. Berguna untuk pengembangan, tetapi memiliki kelemahan pada startup server per sampel.
glassfish-remote
Profil ini mengharuskan Anda memulai server GlassFish di luar build. Setiap sampel kemudian akan menggunakan kembali instance ini untuk menjalankan pengujian. Berguna untuk pengembangan guna menghindari biaya permulaan server per sampel.
Profil ini mendukung beberapa pengujian untuk mengatur lokasi pemasangan GlassFish melalui properti sistem glassfishRemote_gfHome
. Misalnya
-DglassfishRemote_gfHome=/opt/glassfish41
Ini digunakan untuk mengirimkan perintah asadmin untuk membuat sumber daya kontainer, seperti pengguna di penyimpanan identitas.
Lalat Liar
wildfly-ci-managed
Profil ini akan menginstal server Wildfly dan memulai server per sampel. Berguna untuk server CI. Versi WildFly yang digunakan dapat diatur melalui properti wildfly.version
.
wildfly-embedded
Profil ini hampir identik dengan yang dikelola wildfly-ci. Ini akan menginstal server Wildfly yang sama dan memulai server itu per sampel lagi, tetapi menggunakan konektor tertanam Arquillian untuk menjalankannya di JVM yang sama. Berguna untuk server CI. Versi WildFly yang digunakan dapat diatur melalui properti wildfly.version
.
wildfly-remote
Profil ini mengharuskan Anda memulai server Wildfly di luar build. Setiap sampel kemudian akan menggunakan kembali instance ini untuk menjalankan pengujian. Berguna untuk pengembangan guna menghindari biaya permulaan server per sampel.
wildfly-swarm
Profil ini menggunakan WildFly Swarm, yang memungkinkan pembuatan uberjar yang berisi server aplikasi WildFly secukupnya. Di sini, bagian WildFly yang disertakan dipilih berdasarkan pemeriksaan aplikasi dan mencari Java EE API yang benar-benar digunakan. Versi WildFly Swarm yang digunakan dapat diatur melalui properti wildfly.swarm.version
.
TomEE
tomee-ci-managed
Profil ini akan menginstal server TomEE dan memulai server tersebut per sampel. Berguna untuk server CI. Profil ini tidak dapat terhubung ke server yang sedang berjalan.
Perhatikan bahwa versi TomEE yang akan digunakan harus ada di repositori maven yang tersedia. Default dalam profil ini mengasumsikan bahwa adaptor arquillian dan server TomEE memiliki versi yang sama. Misalnya keduanya 7.0.0.
Untuk menggunakan server TomEE yang tidak tersedia di maven central, salah satu cara menggunakannya untuk sampel adalah dengan menginstalnya di .m2 lokal sebagai berikut:
Repo klon TomEE:
git clone https://github.com/apache/tomee
cd tomee
Beralih ke versi yang diinginkan jika diperlukan, lalu buat dan instal di .m2:
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
mvn clean install -pl arquillian -amd -Dmaven.test.skip=true
Pastikan versi yang diinstal (lihat pom.xml di proyek TomEE) cocok dengan tomee.version
di bagian properti di root pom.xml proyek sampel.
tomee-embedded
Profil ini menggunakan server tertanam TomEE dan berjalan di JVM yang sama dengan TestClass.
Kebebasan
liberty-managed
Profil ini akan memulai server Liberty per sampel, dan secara opsional terhubung ke server yang sedang berjalan yang dapat Anda mulai di luar build (dengan batasan bahwa server ini harus berjalan di host tempat pengujian dijalankan menggunakan pengguna yang sama ).
Untuk menyambung ke server yang sedang berjalan, properti sistem org.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer
harus disetel ke true. Misalnya
-Dorg.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer=true
Profil ini mengharuskan Anda mengatur lokasi di mana Liberty dipasang melalui properti sistem libertyManagedArquillian_wlpHome
. Misalnya
-DlibertyManagedArquillian_wlpHome=/opt/wlp
Profil ini juga memerlukan fitur localConnector untuk dikonfigurasi di server.xml, dan jika semua pengujian ingin dijalankan, fitur javaee-7.0 Misalnya
< featureManager >
< feature >javaee-7.0</ feature >
< feature >localConnector-1.0</ feature >
</ featureManager >
Untuk versi Liberty yang lebih lama (sebelum 16.0.0.0) agar tes JASPIC dapat dicoba dijalankan, diperlukan cheat yang membuat grup di registri pengguna internal Liberty:
< basicRegistry id = " basic " >
< group name = " architect " />
</ basicRegistry >
Cheat ini tidak diperlukan untuk Liberty versi terbaru (16.0.0.0/2016.7 dan yang lebih baru)
liberty-ci-managed
Profil ini akan mengunduh dan menginstal server Liberty dan memulai server per sampel. Berguna untuk server CI. Catatan, ini bukan server tertanam yang sebenarnya, tetapi server biasa. Sekarang disebut "tertanam" karena tidak diperlukan instalasi terpisah karena diunduh secara otomatis.
Logika web
weblogic-remote
Profil ini mengharuskan Anda memulai server WebLogic di luar build. Setiap sampel kemudian akan menggunakan kembali instance ini untuk menjalankan pengujian.
Profil ini mengharuskan Anda menyetel lokasi pemasangan WebLogic melalui properti sistem weblogicRemoteArquillian_wlHome
. Misalnya
-DweblogicRemoteArquillian_wlHome=/opt/wls12210
Nama pengguna/kata sandi default masing-masing diasumsikan sebagai "admin" dan "admin007". Ini dapat diubah menggunakan properti sistem weblogicRemoteArquillian_adminUserName
dan weblogicRemoteArquillian_adminPassword
. Misalnya
-DweblogicRemoteArquillian_adminUserName=myuser
-DweblogicRemoteArquillian_adminPassword=mypassword
Kucing jantan
tomcat-remote
Profil ini mengharuskan Anda untuk memulai server Tomcat (8.5 atau 9) biasa di luar build. Setiap sampel kemudian akan menggunakan kembali instance ini untuk menjalankan pengujian.
Tomcat mendukung sampel yang menggunakan Servlet, JSP, Expression Language (EL), WebSocket dan JASPIC.
Profil ini mengharuskan Anda mengaktifkan JMX di Tomcat. Ini dapat dilakukan dengan menambahkan yang berikut ke [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 "
Profil ini juga mengharuskan Anda menyetel nama pengguna ( tomcat
) dan kata sandi ( manager
) untuk aplikasi manajemen di tomcat-users.xml
. Lihat file test-utils/src/main/resources/tomcat-users.xml
di repositori ini untuk contoh lengkap.
Sadarilah bahwa ini hanya boleh dilakukan untuk instance Tomcat yang digunakan secara eksklusif untuk pengujian, karena hal di atas akan membuat instalasi Tomcat benar-benar tidak aman!
tomcat-ci-managed
Profil ini akan menginstal server Tomcat dan memulai server per sampel. Berguna untuk server CI. Versi Tomcat yang digunakan dapat diatur melalui properti tomcat.version
.
Kontainer yang mengunduh dan menginstal server (profil yang dikelola *-ci) memungkinkan Anda mengganti versi yang digunakan, misalnya:
-Dpayara.version=4.1.1.163
Ini akan mengubah versi dari versi saat ini (misalnya 4.1.1.171.1) menjadi 4.1.1.163 untuk tujuan pengujian Payara.
-Dglassfish.version=4.1
Ini akan mengubah versi dari versi saat ini (misalnya 4.1.1) menjadi 4.1 untuk tujuan pengujian GlassFish.
-Dwildfly.version=8.1.0.Final
Ini akan mengubah versi dari versi saat ini (misalnya 10.1.0.Final) menjadi 8.1.0.Final untuk WildFly.
Untuk menjalankannya di konsol lakukan :
mvn test -fae
di direktori tingkat atas untuk memulai pengujian untuk profil default.Saat mengembangkan dan menjalankannya dari IDE, ingatlah untuk mengaktifkan profil sebelum menjalankan pengujian.
Untuk mempelajari lebih lanjut tentang Arquillian silakan merujuk ke Panduan Arquillian
Untuk menjalankan hanya sebagian pengujian, lakukan di direktori tingkat atas :
mvn clean install -pl "test-utils,util" -am
cd jaspic
mvn clean test -P liberty-ci-managed
Dengan bantuan Anda, kami dapat meningkatkan kumpulan sampel ini, belajar satu sama lain, dan menumbuhkan komunitas yang penuh dengan orang-orang yang penuh semangat dan peduli terhadap teknologi, inovasi, dan kualitas kode. Setiap kontribusi penting!
Ada beberapa hal yang harus Anda ingat sebelum mengirim permintaan tarik, sehingga kita dapat dengan mudah memasukkan semua hal baru ke dalam cabang master.
Tes standar berbasis junit - misalnya penerapan ini. Penamaan kelas pengujian harus mematuhi standar penamaan yang pasti **/*Test.java
, **/*Test*.java
atau **/*TestCase.java
.
Demi kejelasan dan konsistensi, dan untuk meminimalkan kompleksitas di muka, kami lebih memilih pengujian jUnit standar menggunakan Java, dengan pembantu tambahan HtmlUnit, Hamcrest, dan tentu saja Arquillian. Tolong jangan gunakan alternatif untuk teknologi ini. Jika ada ketergantungan baru yang harus dimasukkan ke dalam proyek ini, ia harus menyediakan sesuatu yang tidak tercakup dalam ketergantungan yang ada ini.
git pull upstream master
dan Anda siap untuk meretas.git checkout -b my_new_cool_feature
Itu saja! Selamat datang di komunitas!
Pekerjaan CI dijalankan oleh Travis. Perhatikan bahwa berdasarkan sifat sampel yang diberikan di sini, wajar saja jika tidak semua tes lulus. Ini biasanya menunjukkan adanya bug di server tempat sampel dieksekusi. Jika menurut Anda memang tesnya yang salah, silakan kirimkan masalahnya atau berikan perbaikan kepada PR.
Instal klien Docker dari http://boot2docker.io
Buat sampel yang ingin Anda jalankan
mvn clean package -DskipTests
Misalnya:
mvn -f jaxrs/jaxrs-client/pom.xml clean package -DskipTests
Ubah baris kedua di Dockerfile
untuk menentukan lokasi file WAR yang dihasilkan
Jalankan boot2docker dan berikan perintah
docker build -it -p 80:8080 javaee7-sample
Di shell yang berbeda, cari tahu alamat IP dari container yang sedang berjalan sebagai:
boot2docker ip
Akses sampel sebagai http://IP_ADDRESS:80/jaxrs-client/webresources/persons. URL persisnya akan berbeda berdasarkan sampel.