Java EE 6示例– Galleria
因此,我很高興偶然發(fā)現(xiàn)Vineet Reynolds做的一個更復(fù)雜的例子。 它被稱為“ Java EE 6 Galleria ”,您可以從bitbucket下載源代碼。 Vineet是為Arquillian項目做出貢獻的軟件工程師。 更具體地說,他貢獻了一些錯誤修復(fù)程序,并處理了Arquillian Core的一些功能請求,以及Arquillian的GlassFish,WebLogic和Tomcat集成。 這是我第一次遇到他的名字的地方。 跟著Arquillian的家伙和他走近一點,直接把我?guī)У搅诉@個例子。 非常感謝Vineet在我初次嘗試使其開始運行時所提供的幫助。 如果您喜歡在Twitter @VineetReynolds上關(guān)注他。
這里是有關(guān)它的背景的簡要說明,也是關(guān)于在不同設(shè)置下運行它的一系列說明,并向您介紹了一些其他細節(jié)。 這是基本介紹。
關(guān)于回廊
該項目的高級描述如下:Java EE 6-Galleria是一個演示應(yīng)用程序,演示了使用域驅(qū)動設(shè)計的Java EE項目中JSF 2.0和JPA 2.0的使用。 它被編寫為Java EE 6中域驅(qū)動設(shè)計的樣板。應(yīng)用程序的域模型不是貧乏的,它由JPA實體組成。 然后,在用作應(yīng)用程序?qū)拥臅扙JB中使用這些實體。 使用Mojarra和PrimeFaces在表示層中使用JSF facelets。 該項目旨在通過使用JUnit 4中編寫的單元測試和集成測試來實現(xiàn)全面覆蓋。EJB和域模型的單元測試和集成測試依賴于EJB 3.1容器API。 表示層的集成測試依賴于Arquillian項目及其Drone擴展(用于執(zhí)行Selenium測試)。
使用Java EE 6的域驅(qū)動設(shè)計
在Java EE 6中,將DDD作為一種體系結(jié)構(gòu)方法是可行的,這主要是由于EJB 3.x中所做的更改以及JPA的引入。 EJB 3.x和JPA規(guī)范中所做的改進使得可以在Java EE 6中使用DDD對域和應(yīng)用程序?qū)舆M行建模。 這里的基本思想是設(shè)計一個應(yīng)用程序,以確保將持久性服務(wù)注入到應(yīng)用程序?qū)又?#xff0c;并用于在應(yīng)用程序?qū)咏⒌氖聞?wù)上下文內(nèi)訪問/持久化實體。
域?qū)?/strong>
該應(yīng)用程序現(xiàn)在包含四個域?qū)嶓w-用戶,組,相冊和照片,它們與邏輯數(shù)據(jù)模型中的JPA實體相同。
儲存庫層
在邏輯數(shù)據(jù)模型的頂部,您可以找到四個存儲庫-UserRepository,GroupRepository,AlbumRepository和PhotoRepository。 每個用于四個域?qū)嶓w之一。 即使DDD要求您僅具有聚合根目錄的存儲庫,而不是所有域?qū)嶓w的存儲庫,其設(shè)計方式仍允許應(yīng)用程序?qū)釉L問“相冊”和“照片”域?qū)嶓w,而不必通過UserRepository導(dǎo)航“相冊”和“照片”。 存儲庫是具有無接口視圖的無狀態(tài)會話Bean,并使用Adam Bien發(fā)布的通用CRUD服務(wù)模式構(gòu)建。
應(yīng)用層
應(yīng)用程序?qū)庸_表示層要使用的服務(wù)。 它還負責(zé)事務(wù)管理,同時還充當(dāng)下一層的故障屏障。 應(yīng)用程序?qū)优c域存儲庫和域?qū)ο筮M行協(xié)調(diào),以實現(xiàn)公開服務(wù)的預(yù)期目標。 在某種程度上,該層等效于傳統(tǒng)應(yīng)用程序中的服務(wù)層。 應(yīng)用程序?qū)油ㄟ^UserService,GroupService,AlbumService和PhotoService接口公開其服務(wù),并且還負責(zé)在協(xié)調(diào)域?qū)又械膶ο笾g的動作之前,從上述層驗證提供的域?qū)ο蟆?這是通過域?qū)ο笊系腏SR-303約束完成的。
看起來如何
這就是如果在最新的GlassFish 3.1.2上運行該示例時的樣子。 想自己設(shè)置嗎? 等待下一篇文章,或者自己嘗試一下;)
下面,我們將直接使用最新的GlassFish 3.1.2,Hibernate和Derby來設(shè)置示例。
制備
讓自己有一些配置的心情。 Grep最新的NetBeans 7.1 (Java EE版本已經(jīng)包含所需的GlassFish 3.1.2 )并進行安裝。 我還假設(shè)您在某個地方有一個不錯的Java SDK 7 (也可以完成6個工作)。 根據(jù)開發(fā)策略,您還需要Mercurial Client和Maven。 至少Maven也包含在NetBeans中,所以…我的意思是…為什么使您的生活變得比現(xiàn)在更艱難? ;)
環(huán)境環(huán)境
關(guān)于環(huán)境的更多一些話。 此示例是為支持不同的環(huán)境而設(shè)置的。 從簡單的“開發(fā)”環(huán)境開始,您還需要配置“測試”以及最后但并非最不重要的“生產(chǎn)”環(huán)境。 所有不同的環(huán)境都由Maven配置文件處理,因此您可能必須在接下來的幾分鐘內(nèi)進行一些配置。
創(chuàng)建數(shù)據(jù)庫實例
首先要做的就是確定將所有東西放在哪里。 這些示例使用了開箱即用的derby,因此您應(yīng)該安裝Java DB(JDK的一部分)或使用預(yù)先配置了NetBeans的GlassFish derby實例。 讓我們在這里變得更加困難,并假設(shè)我們使用JDK隨附的Java DB安裝。 繼續(xù),打開CMD提示符并導(dǎo)航到%JAVA_HOME%文件夾,然后進一步向下db文件夾/ bin。 執(zhí)行“ startNetWorkServer”腳本,并注意要啟動的derby實例。 現(xiàn)在打開另一個CMD提示符,同時導(dǎo)航到db / bin文件夾并執(zhí)行“ ij”腳本。 這應(yīng)該帶有提示“ ij>”。 現(xiàn)在輸入以下連接字符串:
connect 'jdbc:derby://localhost:1527/GALLERIATEST;create=true';此命令將您連接到derby實例,并創(chuàng)建GALLERIATEST數(shù)據(jù)庫(如果尚不存在)。 Galleria示例使用了一個名為dbdeploy的方便的小工具作為數(shù)據(jù)庫更改管理工具。 它使您可以對物理數(shù)據(jù)庫模型進行增量更新,并在變更日志表中對其進行跟蹤。 (有關(guān)更多信息,請參閱本系列后面的內(nèi)容)。 您必須創(chuàng)建更改日志表:
CREATE TABLE changelog (change_number DECIMAL(22,0) NOT NULL,complete_dt TIMESTAMP NOT NULL,applied_by VARCHAR(100) NOT NULL,description VARCHAR(500) NOT NULL );ALTER TABLE changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number);您只需在connect語句中更改數(shù)據(jù)庫名稱,即可針對所需的任何其他實例(生產(chǎn)等)重做這些步驟。 并且不要忘記在每個實例中創(chuàng)建更改日志表。
如果您不喜歡這種方法。 啟動NetBeans,切換到“服務(wù)”選項卡,選擇“新建連接”,并添加一個新的Java DB網(wǎng)絡(luò)連接,其主機為:localhost,端口為:1527,數(shù)據(jù)庫為:GALLERIATEST; create = true。 將用戶名和密碼都設(shè)置為“ APP”,然后單擊“測試連接”。 選擇APP作為新數(shù)據(jù)庫的架構(gòu)。 您完成了!
創(chuàng)建GlassFish域
我們正在從最新的GlassFish運行此程序。 現(xiàn)在要做的第一件事是創(chuàng)建一個新域。 導(dǎo)航到您的GlassFish安裝目錄并轉(zhuǎn)到glassfish3 / bin并執(zhí)行以下命令:
asadmin create-domain --portbase 10000 --nopassword test-domain這會為您創(chuàng)建一個新的測試域。 現(xiàn)在,導(dǎo)航到該域文件夾(“ glassfish3 / glassfish / domains / test-domain”)并打開config / domain.xml文件。
現(xiàn)在,我們將創(chuàng)建的derby數(shù)據(jù)庫作為連接池添加到您新創(chuàng)建的GlassFish域。 導(dǎo)航到<resources>元素,并在最后一個</ jdbc-connection-pool>元素下面添加以下連接池和jdbc-resource:
<jdbc-connection-pool driver-classname="" datasource-classname="org.apache.derby.jdbc.ClientDataSource40" res-type="javax.sql.DataSource" description="" name="GalleriaPool" ping="true"><property name="User" value="APP"></property><property name="DatabaseName" value="GALLERIATEST"></property><property name="RetrieveMessageText" value="true"></property><property name="Password" value="APP"></property><property name="ServerName" value="localhost"></property><property name="Ssl" value="off"></property><property name="SecurityMechanism" value="4"></property><property name="TraceFileAppend" value="false"></property><property name="TraceLevel" value="-1"></property><property name="PortNumber" value="1527"></property><property name="LoginTimeout" value="0"></property></jdbc-connection-pool><jdbc-resource pool-name="GalleriaPool" description="" jndi-name="jdbc/galleriaDS"></jdbc-resource>現(xiàn)在,找到:<config name =“ server-config”>元素,并在其中尋找最后一個<resource-ref條目。 在此添加以下行:
<resource-ref ref="jdbc/galleriaDS"></resource-ref>在我們準備啟動實例之前,要做的最后一件事。 我們需要為Galleria示例添加JDBC領(lǐng)域。 再次,找到<config name =“ server-config”>并在其中查找</ auth-realm>。 在此下面,放置以下內(nèi)容:
<auth-realm classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm" name="GalleriaRealm"><property name="jaas-context" value="jdbcRealm"></property><property name="encoding" value="Hex"></property><property name="password-column" value="PASSWORD"></property><property name="datasource-jndi" value="jdbc/galleriaDS"></property><property name="group-table" value="USERS_GROUPS"></property><property name="charset" value="UTF-8"></property><property name="user-table" value="USERS"></property><property name="group-name-column" value="GROUPID"></property><property name="digest-algorithm" value="SHA-512"></property><property name="user-name-column" value="USERID"></property></auth-realm>確保不要將新領(lǐng)域置于default-config下。 這是行不通的。 精細。 讓我們獲取資源:)
獲取源代碼并在NetBeans中打開它
Vineet在bitbucket.org上托管了Galleria示例。 因此,您必須去那里并訪問java-ee-6-galleria項目。 您可以通過三種方式將源帶到本地HDD。 通過hg命令行:
hg clone https://bitbucket.org/VineetReynolds/java-ee-6-galleria或通過網(wǎng)站下載(右上方的“獲取資源”)或直接通過NetBeans。 對于第一個和第三個選項,您的操作系統(tǒng)需要一個Mercurial客戶端。 我正在Windows下使用TortoiseHg 。 在執(zhí)行以下操作之前,您應(yīng)該已經(jīng)安裝了NetBeans并對其進行了配置 。 讓我們在這里嘗試最后一種選擇。 選擇“團隊>克隆其他”。 輸入存儲庫URL,并保留用戶/密碼為空。 單擊兩次“下一步”(我們不需要更改默認路徑;),然后選擇一個父目錄以將其放入其中。單擊“完成”,然后讓Mercurial客戶端執(zhí)行工作。 完成后,要求您打開找到的項目。 該外觀應(yīng)類似于右側(cè)的圖片。 如果遇到連接問題,請確保相應(yīng)地更新代理設(shè)置。
如果嘗試構(gòu)建項目,則會遇到麻煩。 它仍然缺少一些我們接下來要做的配置。
添加開發(fā)配置文件
接下來是在Galleria-ejb項目的Maven pom.xml中添加一些內(nèi)容。 打開它并向下滾動到<profiles>部分。 您會找到兩個(聲納和生產(chǎn))。 我們將通過在開發(fā)配置文件中添加以下幾行來添加開發(fā)配置文件(確保將GlassFish路徑調(diào)整為您的環(huán)境):
<profile> <id>development</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <galleria.derby.testInstance.jdbcUrl>jdbc:derby://localhost:1527/GALLERIATEST</galleria.derby.testInstance.jdbcUrl> <galleria.derby.testInstance.user>APP</galleria.derby.testInstance.user> <galleria.derby.testInstance.password>APP</galleria.derby.testInstance.password> <galleria.glassfish.testDomain.user>admin</galleria.glassfish.testDomain.user> <galleria.glassfish.testDomain.passwordFile>D:/glassfish-3.1.2-b22/glassfish3/glassfish/domains/test-domain/config/local-password</galleria.glassfish.testDomain.passwordFile> <galleria.glassfish.testDomain.glassfishDirectory>D:/glassfish-3.1.2-b22/glassfish3/glassfish/</galleria.glassfish.testDomain.glassfishDirectory> <galleria.glassfish.testDomain.domainName>test-domain</galleria.glassfish.testDomain.domainName> <galleria.glassfish.testDomain.adminPort>10048</galleria.glassfish.testDomain.adminPort> <galleria.glassfish.testDomain.httpPort>10080</galleria.glassfish.testDomain.httpPort> <galleria.glassfish.testDomain.httpsPort>10081</galleria.glassfish.testDomain.httpsPort> </properties> </profile>好。 如您所見,這里定義了一些東西。 并且默認情況下激活配置文件。 而已。 目前。
測試ejb-Galleria項目
讓我們嘗試在ejb-Galleria項目中運行測試用例。 右鍵單擊它,然后發(fā)出“ clean and build”。跟隨控制臺輸出以查看實際發(fā)生的情況。 我們將在下一篇文章中對此做進一步調(diào)查。 今天,我們只是為了確保您以正確的方式設(shè)置所有設(shè)置。 它應(yīng)該以以下內(nèi)容結(jié)束:
Tests run: 49, Failures: 0, Errors: 0, Skipped: 0 BUILD SUCCESS那是“綠色標準” :-)恭喜!
構(gòu)建和部署項目
現(xiàn)在轉(zhuǎn)到NetBeans“工具>選項>其他> Maven”,然后選中以下框:“跳過測試以查找與測試沒有直接關(guān)系的任何構(gòu)建執(zhí)行”。 返回主窗口,右鍵單擊Galleria項目,然后進行清潔并在此處構(gòu)建。
Reactor Summary:Galleria ................................. SUCCESS [0.431s] galleria-ejb ............................. SUCCESS [5.302s] galleria-jsf ............................. SUCCESS [4.486s] Galleria EAR ............................. SUCCESS [1.308s] ------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------ Total time: 11.842s精細。 現(xiàn)在讓我們啟動GlassFish域。 切換到GlassFish安裝并找到glassfish3 / bin文件夾。 在此處打開命令行提示符并運行:
asadmin start-domain test-domain您可以看到域正在啟動。 現(xiàn)在打開瀏覽器并導(dǎo)航到http:// localhost:10048 / 。 幾秒鐘后,這將向您顯示GlassFish服務(wù)器的管理控制臺。 現(xiàn)在您需要安裝Hibernate。 選擇“更新工具”(左下方),然后切換到“可用加載項”選項卡。 選擇“休眠”,然后單擊“安裝”(右上角)。 安裝服務(wù)器后,請停止服務(wù)器,然后使用上述命令重新啟動服務(wù)器。 再次打開管理控制臺,然后單擊“應(yīng)用程序”。 單擊頂部的小“部署”按鈕,然后瀏覽至“ java-ee-6-galleria / galleria-ear / target / galleria-ear-0.0.1-SNAPSHOT.ear”。 單擊“確定”(右上角)。 幾秒鐘后您就完成了。 現(xiàn)在切換到http:// localhost:10080 / Galleria / ,您將看到歡迎屏幕。 恭喜你 您在GlassFish上設(shè)置了Galleria示例! 注冊,登錄并使用該應(yīng)用程序!
該系列的下一部分將帶您深入了解應(yīng)用程序的細節(jié)。 我將介紹測試和總體概念。 我們還將在以后的文章中同時更改JPA提供程序和數(shù)據(jù)庫。
是否想知道在最新的WebLogic 12c上進行安裝和運行需要什么? 繼續(xù)閱讀!
參考: Java EE 6示例– Galleria –第1部分和Java EE 6示例–在GlassFish 3.1.2上運行Galleria – JCG合作伙伴提供的 第2部分 ? Markus Eisele在Enterprise Software Development with Java博客上。
翻譯自: https://www.javacodegeeks.com/2012/03/java-ee-6-example-galleria.html
總結(jié)
以上是生活随笔為你收集整理的Java EE 6示例– Galleria的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进口化妆品备案费用多少(进口化妆品备案费
- 下一篇: DDOS教学(ddos命令学习)