此工作區由 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 將根據範例而有所不同。