Dieser Arbeitsbereich besteht aus Java EE 7-Beispielen und Komponententests. Sie sind in verschiedenen Verzeichnissen kategorisiert, eines für jede Technologie/JSR.
Für einige Beispiele/Tests gibt es eine Dokumentation, andernfalls lesen Sie den Code. Das Buch „Java EE 7 Essentials“ bezieht sich auf die meisten dieser Beispiele und bietet eine Erklärung. Fühlen Sie sich frei, Dokumente hinzuzufügen und eine Pull-Anfrage zu senden.
Die Proben werden auf Payara, GlassFish, Wildfly und anderen mithilfe des Arquillian-Ökosystems getestet.
Eine kurze Anleitung zum Klonen, Erstellen, Importieren und Ausführen der Beispiele auf Ihrem lokalen Computer bietet @radcortez in diesem Beispielvideo https://www.youtube.com/watch?v=BB4b-Yz9cF0
Es kann jeweils nur ein Containerprofil aktiv sein, andernfalls kommt es zu Abhängigkeitskonflikten.
Es stehen 16 Containerprofile für 6 verschiedene Server zur Verfügung:
Payara und GlassFish
payara-ci-managed
Dieses Profil installiert einen Payara-Server und startet den Server pro Beispiel. Nützlich für CI-Server. Die verwendete Payara-Version kann über die Eigenschaft payara.version
festgelegt werden. Dies ist das Standardprofil und muss nicht explizit angegeben werden.
payara-embedded
Dieses Profil verwendet den eingebetteten Payara-Server und wird in derselben JVM wie die TestClass ausgeführt. Nützlich für die Entwicklung, hat jedoch den Nachteil, dass der Server pro Beispiel gestartet wird.
payara-remote
Für dieses Profil müssen Sie außerhalb des Builds einen Payara-Server starten. Jedes Beispiel verwendet diese Instanz dann erneut, um die Tests auszuführen. Nützlich für die Entwicklung, um die Server-Startkosten pro Probe zu vermeiden.
Dieses Profil unterstützt bei einigen Tests das Festlegen des Speicherorts, an dem Payara über die Systemeigenschaft glassfishRemote_gfHome
installiert wird. Z.B
-DglassfishRemote_gfHome=/opt/payara171
Dies wird zum Senden von asadmin-Befehlen zum Erstellen von Containerressourcen verwendet, z. B. Benutzern in einem Identitätsspeicher.
glassfish-embedded
Dieses Profil verwendet den eingebetteten GlassFish-Server und wird in derselben JVM wie die TestClass ausgeführt. Nützlich für die Entwicklung, hat jedoch den Nachteil, dass der Server pro Beispiel gestartet wird.
glassfish-remote
Für dieses Profil müssen Sie außerhalb des Builds einen GlassFish-Server starten. Jedes Beispiel verwendet diese Instanz dann erneut, um die Tests auszuführen. Nützlich für die Entwicklung, um die Server-Startkosten pro Probe zu vermeiden.
Dieses Profil unterstützt bei einigen Tests das Festlegen des Speicherorts, an dem GlassFish über die Systemeigenschaft glassfishRemote_gfHome
installiert wird. Z.B
-DglassfishRemote_gfHome=/opt/glassfish41
Dies wird zum Senden von asadmin-Befehlen zum Erstellen von Containerressourcen verwendet, z. B. Benutzern in einem Identitätsspeicher.
WildFly
wildfly-ci-managed
Dieses Profil installiert einen Wildfly-Server und startet den Server pro Beispiel. Nützlich für CI-Server. Die verwendete WildFly-Version kann über die Eigenschaft wildfly.version
festgelegt werden.
wildfly-embedded
Dieses Profil ist fast identisch mit wildfly-ci-managed. Es installiert denselben Wildfly-Server und startet diesen Server pro Beispiel erneut, verwendet jedoch stattdessen den eingebetteten Arquillian-Connector, um ihn in derselben JVM auszuführen. Nützlich für CI-Server. Die verwendete WildFly-Version kann über die Eigenschaft wildfly.version
festgelegt werden.
wildfly-remote
Für dieses Profil müssen Sie einen Wildfly-Server außerhalb des Builds starten. Jedes Beispiel verwendet diese Instanz dann erneut, um die Tests auszuführen. Nützlich für die Entwicklung, um die Server-Startkosten pro Probe zu vermeiden.
wildfly-swarm
Dieses Profil verwendet WildFly Swarm, was die Erstellung von Uberjars ermöglicht, die gerade genug vom WildFly-Anwendungsserver enthalten. Hier werden die enthaltenen Teile von WildFly auf der Grundlage einer Inspektion der Anwendung und der Suche nach den tatsächlich verwendeten Java EE-APIs ausgewählt. Die verwendete WildFly Swarm-Version kann über die Eigenschaft wildfly.swarm.version
festgelegt werden.
TomEE
tomee-ci-managed
Dieses Profil installiert einen TomEE-Server und startet diesen Server pro Beispiel. Nützlich für CI-Server. Dieses Profil kann keine Verbindung zu einem laufenden Server herstellen.
Beachten Sie, dass die zu verwendende Version von TomEE in einem verfügbaren Maven-Repository vorhanden sein muss. Die Standardeinstellungen in diesem Profil gehen davon aus, dass der Arquillian-Adapter und der TomEE-Server dieselbe Version haben. ZB beide 7.0.0.
Um einen TomEE-Server zu verwenden, der nicht in Maven Central verfügbar ist, besteht eine Möglichkeit, ihn für die Beispiele zu verwenden, darin, ihn wie folgt in einer lokalen .m2-Datei zu installieren:
Klonen Sie das TomEE-Repo:
git clone https://github.com/apache/tomee
cd tomee
Wechseln Sie bei Bedarf zur gewünschten Version, erstellen und installieren Sie dann in .m2:
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
mvn clean install -pl arquillian -amd -Dmaven.test.skip=true
Stellen Sie sicher, dass die installierte Version (siehe pom.xml im TomEE-Projekt) mit tomee.version
im Abschnitt „Eigenschaften“ im Stammverzeichnis pom.xml des Beispielprojekts übereinstimmt.
tomee-embedded
Dieses Profil verwendet den eingebetteten TomEE-Server und wird in derselben JVM wie die TestClass ausgeführt.
Freiheit
liberty-managed
Dieses Profil startet den Liberty-Server pro Beispiel und stellt optional eine Verbindung zu einem laufenden Server her, den Sie außerhalb des Builds starten können (mit der Einschränkung, dass dieser Server auf dem Host ausgeführt werden muss, auf dem die Tests unter demselben Benutzer ausgeführt werden). ).
Um eine Verbindung zu einem laufenden Server herzustellen, muss die Systemeigenschaft org.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer
auf true gesetzt werden. Z.B
-Dorg.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer=true
Für dieses Profil müssen Sie den Speicherort festlegen, an dem Liberty über die Systemeigenschaft libertyManagedArquillian_wlpHome
installiert wird. Z.B
-DlibertyManagedArquillian_wlpHome=/opt/wlp
Für dieses Profil muss außerdem die Funktion „localConnector“ in server.xml konfiguriert werden. Wenn alle Tests ausgeführt werden sollen, muss z. B. die Funktion „javaee-7.0“ verwendet werden
< featureManager >
< feature >javaee-7.0</ feature >
< feature >localConnector-1.0</ feature >
</ featureManager >
Damit bei älteren Versionen von Liberty (vor 16.0.0.0) überhaupt versucht werden kann, die JASPIC-Tests auszuführen, ist ein Cheat erforderlich, der eine Gruppe in der internen Benutzerregistrierung von Liberty erstellt:
< basicRegistry id = " basic " >
< group name = " architect " />
</ basicRegistry >
Dieser Cheat wird für die neuesten Versionen von Liberty (16.0.0.0/2016.7 und höher) nicht benötigt.
liberty-ci-managed
Dieses Profil lädt einen Liberty-Server herunter, installiert ihn und startet den Server pro Beispiel. Nützlich für CI-Server. Beachten Sie, dass es sich hierbei nicht um einen echten eingebetteten Server handelt, sondern um einen regulären Server. Es heißt jetzt „eingebettet“, da keine separate Installation erforderlich ist, da es automatisch heruntergeladen wird.
Weblogic
weblogic-remote
Für dieses Profil müssen Sie einen WebLogic-Server außerhalb des Builds starten. Jedes Beispiel verwendet diese Instanz dann erneut, um die Tests auszuführen.
Für dieses Profil müssen Sie den Speicherort festlegen, an dem WebLogic über die Systemeigenschaft weblogicRemoteArquillian_wlHome
installiert wird. Z.B
-DweblogicRemoteArquillian_wlHome=/opt/wls12210
Als Standardbenutzername und -passwort wird „admin“ bzw. „admin007“ angenommen. Dies kann mithilfe der Systemeigenschaften weblogicRemoteArquillian_adminUserName
und weblogicRemoteArquillian_adminPassword
geändert werden. Z.B
-DweblogicRemoteArquillian_adminUserName=myuser
-DweblogicRemoteArquillian_adminPassword=mypassword
Kater
tomcat-remote
Für dieses Profil müssen Sie außerhalb des Builds einen einfachen Tomcat-Server (8.5 oder 9) starten. Jedes Beispiel verwendet diese Instanz dann erneut, um die Tests auszuführen.
Tomcat unterstützt Beispiele, die Servlet, JSP, Expression Language (EL), WebSocket und JASPIC nutzen.
Für dieses Profil müssen Sie JMX in Tomcat aktivieren. Dies kann erreicht werden, indem Folgendes zu [tomcat home]/bin/catalina.sh
hinzugefügt wird:
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 "
Für dieses Profil müssen Sie außerdem einen Benutzernamen ( tomcat
) und ein Kennwort ( manager
) für die Verwaltungsanwendung in tomcat-users.xml
festlegen. Ein vollständiges Beispiel finden Sie in der Datei test-utils/src/main/resources/tomcat-users.xml
in diesem Repository.
Beachten Sie, dass dies nur für eine Tomcat-Instanz erfolgen sollte, die ausschließlich zum Testen verwendet wird, da die Tomcat-Installation dadurch völlig unsicher wird!
tomcat-ci-managed
Dieses Profil installiert einen Tomcat-Server und startet den Server pro Beispiel. Nützlich für CI-Server. Die verwendete Tomcat-Version kann über die Eigenschaft tomcat.version
festgelegt werden.
Mit den Containern, die einen Server herunterladen und installieren (die *-ci-verwalteten Profile), können Sie die verwendete Version überschreiben, z. B.:
-Dpayara.version=4.1.1.163
Dadurch wird die Version von der aktuellen Version (z. B. 4.1.1.171.1) zu Payara-Testzwecken auf 4.1.1.163 geändert.
-Dglassfish.version=4.1
Dadurch wird die Version von der aktuellen (z. B. 4.1.1) zu GlassFish-Testzwecken auf 4.1 geändert.
-Dwildfly.version=8.1.0.Final
Dadurch wird die Version von der aktuellen (z. B. 10.1.0.Final) auf 8.1.0.Final für WildFly geändert.
Um sie in der Konsole auszuführen, gehen Sie wie folgt vor :
mvn test -fae
im obersten Verzeichnis ein, um die Tests für das Standardprofil zu starten.Denken Sie beim Entwickeln und Ausführen über die IDE daran, das Profil zu aktivieren, bevor Sie den Test ausführen.
Weitere Informationen zu Arquillian finden Sie in den Arquillian-Guides
Um nur eine Teilmenge der Tests auszuführen, gehen Sie im obersten Verzeichnis wie folgt vor :
mvn clean install -pl "test-utils,util" -am
cd jaspic
mvn clean test -P liberty-ci-managed
Mit Ihrer Hilfe können wir diesen Beispielsatz verbessern, voneinander lernen und die Community voller leidenschaftlicher Menschen vergrößern, denen Technologie, Innovation und Codequalität am Herzen liegen. Jeder Beitrag zählt!
Es gibt nur eine Reihe von Dingen, die Sie beachten sollten, bevor Sie eine Pull-Anfrage senden, damit wir alle neuen Dinge problemlos in den Master-Zweig integrieren können.
Standardtests basieren auf jUnit – zum Beispiel dieser Commit. Die Benennung von Testklassen muss den todsicheren Benennungsstandards **/*Test.java
, **/*Test*.java
oder **/*TestCase.java
entsprechen.
Aus Gründen der Klarheit und Konsistenz und um die anfängliche Komplexität zu minimieren, bevorzugen wir Standard-jUnit-Tests mit Java, mit zusätzlichen Hilfsprogrammen wie HtmlUnit, Hamcrest und natürlich Arquillian. Bitte nutzen Sie keine Alternativen für diese Technologien. Wenn in dieses Projekt eine neue Abhängigkeit eingeführt werden muss, sollte diese etwas bereitstellen, das von diesen vorhandenen Abhängigkeiten nicht abgedeckt wird.
git pull upstream master
aus und schon können Sie mit dem Hacken beginnen.git checkout -b my_new_cool_feature
verwendenDas ist es! Willkommen in der Community!
CI-Jobs werden von Travis ausgeführt. Beachten Sie, dass es aufgrund der Beschaffenheit der hier bereitgestellten Proben völlig normal ist, dass nicht alle Tests bestanden werden. Dies würde normalerweise auf einen Fehler im Server hinweisen, auf dem die Beispiele ausgeführt werden. Wenn Sie der Meinung sind, dass tatsächlich der Test fehlerhaft ist, reichen Sie bitte ein Problem ein oder senden Sie einen PR mit einer Lösung.
Installieren Sie den Docker-Client von http://boot2docker.io
Erstellen Sie das Beispiel, als das Sie ausführen möchten
mvn clean package -DskipTests
Zum Beispiel:
mvn -f jaxrs/jaxrs-client/pom.xml clean package -DskipTests
Ändern Sie die zweite Zeile in Dockerfile
um den Speicherort der generierten WAR-Datei anzugeben
Führen Sie boot2docker aus und geben Sie den Befehl ein
docker build -it -p 80:8080 javaee7-sample
Ermitteln Sie in einer anderen Shell die IP-Adresse des laufenden Containers wie folgt:
boot2docker ip
Greifen Sie auf das Beispiel als http://IP_ADDRESS:80/jaxrs-client/webresources/persons zu. Die genaue URL kann je nach Beispiel unterschiedlich sein.