针对新手的Java EE7和Maven项目–第8部分
- 第1部分 ,
- 第2部分 ,
- 第3部分 ,
- 第4部分 ,
- 第5部分 ,
- 第6部分 ,
- 第7部分
- 第8部分
自上一篇文章以來,這一系列教程已經有很長時間了。 是時候恢復并在我們的簡單項目中添加新功能了。 正如我在之前的帖子中提到的那樣,本系列文章主要針對Maven和JavaEE7新手,我歡迎對以下內容有任何疑問或意見(和修正)。 我保證我會努力跟上更新。
這個帖子的Git標簽?
該帖子的標簽是post8 ,可以在我的bitbucket存儲庫中找到。
與以前的帖子相比有什么變化?
- 讀者的代碼注釋和修正已被集成。非常感謝您的來訪。
- 我已經將Wildfly應用服務器的版本從8.1更新到8.2,因此所有示例和代碼都在新服務器下運行。
- 我還將Arquillian BOM的版本更新為最新版本,即現在的1.1.7。
- 我還在樣本父項目下添加了一個屬性,該屬性指示各種maven模塊將自動下載和使用Wildfly服務器的路徑,這樣您就不必自己下載它。 一旦您嘗試執行先前文章中的單元測試之一,服務器將自動下載并提取到預定義的路徑(sample-services模塊) <!--path to download wildfly--><wildfly-server-home>${project.basedir}/servers/</wildfly-server-home>
在我們的耳朵上添加啟用了JSF的war Maven模塊
最終,我們的項目結構已經出現了戰爭(請參見示例網站)
Maven模塊。 因此,沒有引入任何額外的模塊,而是對父級和模塊本身的現有pom.xml文件進行了更改。
步驟1在web.xml上更改
我們的應用程序服務器已經捆綁了必需的庫和設置,以支持使用JSF 2.2規范的應用程序。 Wildfly捆綁了Mojarra 2.2.8 。 我們要做的只是更新一些配置描述符(最終只有一個)。 最重要的是web.xml,現在看起來像這樣。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><context-param><param-name>javax.faces.PROJECT_STAGE</param-name><param-value>Development</param-value></context-param><servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>/faces/*</url-pattern></servlet-mapping><session-config><session-timeout>15</session-timeout></session-config><welcome-file-list><welcome-file>faces/index.xhtml</welcome-file></welcome-file-list> </web-app>第2步:打包戰爭和瘦身的戰爭問題
我們的戰爭模塊遵循一種稱為“瘦身戰爭”的包裝方案。 請從Apache maven war插件閱讀以下頁面 。 長話短說,為了減小部署能力(耳朵)的整體大小,我們將所有必需的庫打包在耳朵級別的預定義文件夾下,通常稱為\ lib,并且不包括在下面的庫戰爭的WEB-INF \ lib文件夾。 您唯一需要做的就是將戰爭的相關性添加到耳邊。 盡管事實上整個“ hack”感覺都不是專家,但如果遵循建議的配置,它就可以工作,但是在某些情況下,瘦小的戰爭包裝將無法工作。 其中之一通常用于基于JSF的JavaEE Web應用程序,在該應用程序中,應將JSF小部件引擎的實現打包在戰爭的WEB-INF \ lib中。
對于我們的示例項目,我正在使用優秀且免費的Primefaces庫 ,我強烈建議您將其用于下一個基于JSF的項目。 因此,我需要為primefaces jar定義對war模塊的依賴關系,但要通過僅針對此jar的瘦war機制,以便將其打包在正確的位置。 這是我們的做法。
<!-- from the war module pom.xml --><!-- This is the dependency --> <dependency><groupId>org.primefaces</groupId><artifactId>primefaces</artifactId><version>${primefaces-version}</version></dependency><!-- See the packaging exclude, we exclude all the jars apart from the one we want to be bundled within the WAR --> <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><packagingExcludes>%regex[WEB-INF/lib/(?!primefaces).*.jar]</packagingExcludes><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><Class-Path>sample-services-${project.version}.jar</Class-Path></manifestEntries></archive></configuration></plugin>步驟3添加一些jsf愛,一個托管bean和帶有適當標簽的xhtml頁面。
我們的代碼只是一張小桌子,還有幾個Primefaces的標簽。 如果您認為需要閱讀有關JSF 2.X的更多信息,請訪問以下鏈接
- JSF神靈之一(BalusC)的JSF 2.2教程
- Primefaces文檔
- Primefaces展示柜
- JavaEE教程– Oracle的JSF 2.2
- JSF 2.2示例
步驟4打包并部署到正在運行的服務器。
啟動您的wildfly(預計您的項目庫目錄和子文件夾服務器下應有一個)
<wildfly-server-home>${project.basedir}/servers/</wildfly-server-home>然后在樣本父項目類型下。
mvn clean install -Ph2您應該在http:// localhost:8080 / sample-web /上具有啟用了JSF 2.2的演示應用程序,并看到類似以下內容的內容。
就是這樣,這將為您提供一個簡單的起點,以便擴展除演示之外的其他功能!
與往常一樣,您將在標記post8下找到完整的示例。
翻譯自: https://www.javacodegeeks.com/2015/03/java-ee7-and-maven-project-for-newbies-part-8.html
總結
以上是生活随笔為你收集整理的针对新手的Java EE7和Maven项目–第8部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的文明手机版下载(我的文明 安卓)
- 下一篇: 哪些攻击是ddos的攻击方式(哪些攻击是