Este espacio de trabajo consta de ejemplos de Java EE 7 y pruebas unitarias. Están categorizados en diferentes directorios, uno para cada Tecnología/JSR.
Algunas muestras/pruebas tienen documentación; de lo contrario, lea el código. El libro Java EE 7 Essentials hace referencia a la mayoría de estos ejemplos y proporciona una explicación. No dudes en agregar documentos y enviar una solicitud de extracción.
Las muestras se prueban en Payara, GlassFish, Wildfly y más utilizando el ecosistema Arquillian.
Una breve instrucción sobre cómo clonar, construir, importar y ejecutar las muestras en su máquina local @radcortez proporciona en este video de muestra https://www.youtube.com/watch?v=BB4b-Yz9cF0
Solo puede haber un perfil de contenedor activo en un momento dado; de lo contrario, habrá conflictos de dependencia.
Hay 16 perfiles de contenedores disponibles, para 6 servidores diferentes:
Payara y pez de cristal
payara-ci-managed
Este perfil instalará un servidor Payara e iniciará el servidor por muestra. Útil para servidores CI. La versión de Payara que se utiliza se puede configurar mediante la propiedad payara.version
. Este es el perfil predeterminado y no es necesario especificarlo explícitamente.
payara-embedded
Este perfil utiliza el servidor integrado Payara y se ejecuta en la misma JVM que TestClass. Útil para el desarrollo, pero tiene la desventaja de que el servidor se inicia por muestra.
payara-remote
Este perfil requiere que inicies un servidor Payara fuera de la compilación. Luego, cada muestra reutilizará esta instancia para ejecutar las pruebas. Útil para el desarrollo para evitar el costo de inicio del servidor por muestra.
Este perfil admite algunas pruebas para establecer la ubicación donde se instala Payara a través de la propiedad del sistema glassfishRemote_gfHome
. P.ej
-DglassfishRemote_gfHome=/opt/payara171
Esto se utiliza para enviar comandos de administrador para crear recursos de contenedor, como usuarios en un almacén de identidades.
glassfish-embedded
Este perfil utiliza el servidor integrado GlassFish y se ejecuta en la misma JVM que TestClass. Útil para el desarrollo, pero tiene la desventaja de que el servidor se inicia por muestra.
glassfish-remote
Este perfil requiere que inicie un servidor GlassFish fuera de la compilación. Luego, cada muestra reutilizará esta instancia para ejecutar las pruebas. Útil para el desarrollo para evitar el costo de inicio del servidor por muestra.
Este perfil admite algunas pruebas para establecer la ubicación donde se instala GlassFish a través de la propiedad del sistema glassfishRemote_gfHome
. P.ej
-DglassfishRemote_gfHome=/opt/glassfish41
Esto se utiliza para enviar comandos de administrador para crear recursos de contenedor, como usuarios en un almacén de identidades.
mosca salvaje
wildfly-ci-managed
Este perfil instalará un servidor Wildfly e iniciará el servidor por muestra. Útil para servidores CI. La versión de WildFly que se utiliza se puede configurar mediante la propiedad wildfly.version
.
wildfly-embedded
Este perfil es casi idéntico al gestionado por wildfly-ci. Instalará el mismo servidor Wildfly y lo iniciará nuevamente por muestra, pero en su lugar utiliza el conector integrado Arquillian para ejecutarlo en la misma JVM. Útil para servidores CI. La versión de WildFly que se utiliza se puede configurar mediante la propiedad wildfly.version
.
wildfly-remote
Este perfil requiere que inicie un servidor Wildfly fuera de la compilación. Luego, cada muestra reutilizará esta instancia para ejecutar las pruebas. Útil para el desarrollo para evitar el costo de inicio del servidor por muestra.
wildfly-swarm
Este perfil utiliza WildFly Swarm, que permite crear uberjars que contienen la cantidad suficiente del servidor de aplicaciones WildFly. Aquí, las partes de WildFly que se incluyen se seleccionan basándose en la inspección de la aplicación y la búsqueda de las API de Java EE que realmente se utilizan. La versión de WildFly Swarm que se utiliza se puede configurar mediante la propiedad wildfly.swarm.version
.
TomEE
tomee-ci-managed
Este perfil instalará un servidor TomEE e iniciará ese servidor por muestra. Útil para servidores CI. Este perfil no puede conectarse a un servidor en ejecución.
Tenga en cuenta que la versión de TomEE que se utilizará debe estar presente en un repositorio de Maven disponible. Los valores predeterminados en este perfil suponen que el adaptador arquillian y el servidor TomEE tienen la misma versión. Por ejemplo, ambos 7.0.0.
Para usar un servidor TomEE que no está disponible en maven central, una forma de usarlo para los ejemplos es instalarlo en un .m2 local de la siguiente manera:
Clonar repositorio de TomEE:
git clone https://github.com/apache/tomee
cd tomee
Cambie a la versión deseada si es necesario, luego compílela e instálela en .m2:
mvn clean install -pl tomee/apache-tomee -am -Dmaven.test.skip=true
mvn clean install -pl arquillian -amd -Dmaven.test.skip=true
Asegúrese de que la versión instalada (consulte pom.xml en el proyecto TomEE) coincida con tomee.version
en la sección de propiedades en la raíz pom.xml del proyecto de muestra.
tomee-embedded
Este perfil utiliza el servidor integrado TomEE y se ejecuta en la misma JVM que TestClass.
Libertad
liberty-managed
Este perfil iniciará el servidor Liberty por muestra y, opcionalmente, se conectará a un servidor en ejecución que puede iniciar fuera de la compilación (con la restricción de que este servidor debe ejecutarse en el host donde se ejecutan las pruebas usando el mismo usuario). ).
Para conectarse a un servidor en ejecución, la propiedad del sistema org.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer
debe establecerse en verdadero. P.ej
-Dorg.jboss.arquillian.container.was.wlp_managed_8_5.allowConnectingToRunningServer=true
Este perfil requiere que establezca la ubicación donde se instala Liberty a través de la propiedad del sistema libertyManagedArquillian_wlpHome
. P.ej
-DlibertyManagedArquillian_wlpHome=/opt/wlp
Este perfil también requiere que la función localConnector esté configurada en server.xml y, si se van a ejecutar todas las pruebas, la función javaee-7.0, por ejemplo.
< featureManager >
< feature >javaee-7.0</ feature >
< feature >localConnector-1.0</ feature >
</ featureManager >
Para versiones anteriores de Liberty (anteriores a 16.0.0.0), para que se intenten ejecutar las pruebas JASPIC, se necesita un truco que cree un grupo en el registro de usuarios interno de Liberty:
< basicRegistry id = " basic " >
< group name = " architect " />
</ basicRegistry >
Este truco no es necesario para las últimas versiones de Liberty (16.0.0.0/2016.7 y posteriores)
liberty-ci-managed
Este perfil descargará e instalará un servidor Liberty e iniciará el servidor por muestra. Útil para servidores CI. Tenga en cuenta que este no es un servidor integrado real, sino un servidor normal. Ahora se llama "integrado" porque no se necesita ninguna instalación por separado ya que se descarga automáticamente.
Weblógica
weblogic-remote
Este perfil requiere que inicie un servidor WebLogic fuera de la compilación. Luego, cada muestra reutilizará esta instancia para ejecutar las pruebas.
Este perfil requiere que establezca la ubicación donde está instalado WebLogic a través de la propiedad del sistema weblogicRemoteArquillian_wlHome
. P.ej
-DweblogicRemoteArquillian_wlHome=/opt/wls12210
Se supone que el nombre de usuario y la contraseña predeterminados son "admin" y "admin007", respectivamente. Esto se puede cambiar usando las propiedades del sistema weblogicRemoteArquillian_adminUserName
y weblogicRemoteArquillian_adminPassword
. P.ej
-DweblogicRemoteArquillian_adminUserName=myuser
-DweblogicRemoteArquillian_adminPassword=mypassword
Gato
tomcat-remote
Este perfil requiere que inicie un servidor Tomcat simple (8.5 o 9) fuera de la compilación. Luego, cada muestra reutilizará esta instancia para ejecutar las pruebas.
Tomcat admite ejemplos que utilizan Servlet, JSP, Expression Language (EL), WebSocket y JASPIC.
Este perfil requiere que habilite JMX en Tomcat. Esto se puede hacer agregando lo siguiente a [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 "
Este perfil también requiere que establezca un nombre de usuario ( tomcat
) y una contraseña ( manager
) para la aplicación de administración en tomcat-users.xml
. Consulte el archivo test-utils/src/main/resources/tomcat-users.xml
en este repositorio para ver un ejemplo completo.
Tenga en cuenta que esto sólo debe hacerse para una instancia de Tomcat que se use exclusivamente para pruebas, ya que lo anterior hará que la instalación de Tomcat sea totalmente insegura.
tomcat-ci-managed
Este perfil instalará un servidor Tomcat e iniciará el servidor por muestra. Útil para servidores CI. La versión de Tomcat que se utiliza se puede configurar mediante la propiedad tomcat.version
.
Los contenedores que descargan e instalan un servidor (los perfiles administrados por *-ci) le permiten anular la versión utilizada, por ejemplo:
-Dpayara.version=4.1.1.163
Esto cambiará la versión actual (por ejemplo, 4.1.1.171.1) a 4.1.1.163 para fines de prueba de Payara.
-Dglassfish.version=4.1
Esto cambiará la versión actual (por ejemplo, 4.1.1) a 4.1 para fines de prueba de GlassFish.
-Dwildfly.version=8.1.0.Final
Esto cambiará la versión actual (por ejemplo, 10.1.0.Final) a 8.1.0.Final para WildFly.
Para ejecutarlos en la consola haga :
mvn test -fae
en el directorio de nivel superior para iniciar las pruebas para el perfil predeterminado.Al desarrollarlos y ejecutarlos desde IDE, recuerde activar el perfil antes de ejecutar la prueba.
Para obtener más información sobre Arquillian, consulte las Guías de Arquillian.
Para ejecutar solo un subconjunto de las pruebas, hágalo en el directorio de nivel superior :
mvn clean install -pl "test-utils,util" -am
cd jaspic
mvn clean test -P liberty-ci-managed
Con su ayuda podemos mejorar este conjunto de muestras, aprender unos de otros y hacer crecer la comunidad llena de personas apasionadas que se preocupan por la tecnología, la innovación y la calidad del código. ¡Cada contribución importa!
Solo hay un montón de cosas que debes tener en cuenta antes de enviar una solicitud de extracción, para que podamos incorporar fácilmente todas las cosas nuevas a la rama master.
Las pruebas estándar se basan en jUnit, por ejemplo, esta confirmación. La denominación de las clases de prueba debe cumplir con los estándares de nomenclatura infalibles **/*Test.java
, **/*Test*.java
o **/*TestCase.java
.
En aras de la claridad y la coherencia, y para minimizar la complejidad inicial, preferimos las pruebas jUnit estándar que utilizan Java, con ayudas adicionales como HtmlUnit, Hamcrest y, por supuesto, Arquillian. No utilice alternativas para estas tecnologías. Si es necesario introducir alguna dependencia nueva en este proyecto, debe proporcionar algo que no esté cubierto por estas dependencias existentes.
git pull upstream master
y estarás listo para hackear.git checkout -b my_new_cool_feature
¡Eso es todo! ¡Bienvenidos a la comunidad!
Travis ejecuta los trabajos de CI. Tenga en cuenta que, por la propia naturaleza de las muestras proporcionadas aquí, es perfectamente normal que no todas las pruebas pasen. Normalmente, esto indicaría un error en el servidor en el que se ejecutan las muestras. Si cree que realmente es la prueba la que está defectuosa, envíe un problema o proporcione una solución a un PR.
Instale el cliente Docker desde http://boot2docker.io
Cree la muestra que desea ejecutar como
mvn clean package -DskipTests
Por ejemplo:
mvn -f jaxrs/jaxrs-client/pom.xml clean package -DskipTests
Cambie la segunda línea en Dockerfile
para especificar la ubicación del archivo WAR generado
Ejecute boot2docker y dé el comando
docker build -it -p 80:8080 javaee7-sample
En un shell diferente, averigüe la dirección IP del contenedor en ejecución como:
boot2docker ip
Acceda al ejemplo como http://IP_ADDRESS:80/jaxrs-client/webresources/persons. La URL exacta variará según la muestra.