该工作区由 Java EE 7 示例和单元测试组成。它们被分类在不同的目录中,每个目录对应一种技术/JSR。
一些示例/测试有文档,否则请阅读代码。 《Java EE 7 Essentials》一书引用了大部分示例并提供了解释。请随意添加文档并发送拉取请求。
使用 Arquillian 生态系统在 Payara、GlassFish、Wildfly 等上测试样本。
@radcortez 在此示例视频中提供了如何在本地计算机上克隆、构建、导入和运行示例的简要说明 https://www.youtube.com/watch?v=BB4b-Yz9cF0
给定时间只能有一个容器配置文件处于活动状态,否则会出现依赖项冲突。
有 16 个可用的容器配置文件,适用于 6 个不同的服务器:
Payara 和 GlassFish
payara-ci-managed
此配置文件将安装 Payara 服务器并启动每个示例的服务器。对于 CI 服务器很有用。可以通过payara.version
属性设置所使用的 Payara 版本。这是默认配置文件,不必明确指定。
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.version
属性设置使用的 WildFly 版本。
wildfly-embedded
此配置文件几乎与 wildfly-ci-management 相同。它将安装相同的 Wildfly 服务器并再次启动每个样本的该服务器,但使用 Arquillian 嵌入式连接器在相同的 JVM 中运行它。对于 CI 服务器很有用。可以通过wildfly.version
属性设置使用的 WildFly 版本。
wildfly-remote
此配置文件要求您在构建之外启动 Wildfly 服务器。然后,每个示例将重用该实例来运行测试。对于开发来说很有用,可以避免每个样本的服务器启动成本。
wildfly-swarm
此配置文件使用 WildFly Swarm,它允许构建仅包含足够的 WildFly 应用程序服务器的 uberjar。此处,包含的 WildFly 部分是根据检查应用程序并查找实际使用的 Java EE API 来选择的。使用的 WildFly Swarm 版本可以通过wildfly.swarm.version
属性进行设置。
汤姆伊
tomee-ci-managed
此配置文件将安装 TomEE 服务器并根据示例启动该服务器。对于 CI 服务器很有用。此配置文件无法连接到正在运行的服务器。
请注意,要使用的 TomEE 版本必须存在于可用的 Maven 存储库中。此配置文件中的默认值假定 arquillian 适配器和 TomEE 服务器具有相同的版本。例如都是 7.0.0。
要使用 Maven Central 中不可用的 TomEE 服务器,将其用于示例的一种方法是将其安装在本地 .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 支持使用 Servlet、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.version
属性设置所使用的 Tomcat 版本。
下载并安装服务器的容器(*-ci 管理的配置文件)允许您覆盖所使用的版本,例如:
-Dpayara.version=4.1.1.163
出于 Payara 测试目的,这会将版本从当前版本(例如 4.1.1.171.1)更改为 4.1.1.163。
-Dglassfish.version=4.1
这会将版本从当前版本(例如 4.1.1)更改为 4.1,以便进行 GlassFish 测试。
-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 的 - 例如这个提交。测试类命名必须符合 Surefire 命名标准**/*Test.java
、 **/*Test*.java
或**/*TestCase.java
。
为了清晰和一致,并最大限度地减少前期复杂性,我们更喜欢使用 Java 的标准 jUnit 测试,以及附加的帮助程序 HtmlUnit、Hamcrest,当然还有 Arquillian。请不要使用这些技术的替代品。如果必须在该项目中引入任何新的依赖项,它应该提供这些现有依赖项未涵盖的内容。
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
中的第二行以指定生成的 WAR 文件的位置
运行 boot2docker 并给出命令
docker build -it -p 80:8080 javaee7-sample
在不同的 shell 中,找出正在运行的容器的 IP 地址,如下所示:
boot2docker ip
通过 http://IP_ADDRESS:80/jaxrs-client/webresources/persons 访问示例。确切的 URL 将根据示例而有所不同。