摘要:今天的天學(xué)習(xí)種新技術(shù)我決定介紹的集成。會(huì)警告該插件未簽名。同時(shí)將創(chuàng)建一個(gè)私有的倉庫并克隆到本地。熱部署僅僅替換文件而不會(huì)停止服務(wù)。如果將其禁用,那么應(yīng)用將使用。轉(zhuǎn)到視圖發(fā)布改動(dòng)。刪除模板文件以上版本下,為可選。
編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯,一天一篇更新,年終禮包。下面是第 28 天的內(nèi)容。
今天的《30天學(xué)習(xí)30種新技術(shù)》 我決定介紹OpenShift的Eclipse集成。應(yīng)用將運(yùn)行在OpenShift上,我們將使用OpenSHift的Eclipse插件來開發(fā)和部署一個(gè)應(yīng)用。
預(yù)備要求基本Java知識(shí)。
在你的系統(tǒng)上安裝最新版的JDK。你可以安裝OpenJDK 7和Oracle JDK 7。OpenShift支持 OpenJDK6 和 7。
從官網(wǎng) 下載最新的 Eclipse 包。 在撰寫本文的時(shí)候,最新的Eclipse包叫作Kepler。
安裝eclipse很容易,解壓縮即可。
tar -xzvf eclipse-jee-kepler-R-*.tar.gz1. 安裝OpenShfit的Eclipse插件
打開Eclipse,進(jìn)入你的項(xiàng)目工作空間。打開 Help > Eclipse Marketplace,你會(huì)看到如下屏幕。
在搜索框中搜尋“jboss tools”。第一個(gè)結(jié)果就是“JBoss Tools(Kepler)”。
點(diǎn)擊“安裝”,會(huì)出現(xiàn)選擇安裝插件的列表。由于本文的目的是演示,我們只選上JBoss OpenShift Tools。選中之后點(diǎn)擊“確認(rèn)”。
現(xiàn)在我們需要接受許可協(xié)議。選擇接受后點(diǎn)擊完成。
Eclipse會(huì)警告該插件未簽名。點(diǎn)擊“確認(rèn)”然后Eclipse會(huì)要求重啟,點(diǎn)擊“是”,重啟一下。
2. 創(chuàng)建一個(gè)OpenShift應(yīng)用插件安裝好之后,創(chuàng)建OpenShift應(yīng)用很容易。
在eclipse中點(diǎn)擊 File > New > Other > OpenShift Application,在下圖所示頁面中點(diǎn)擊“下一步”:
需要填寫OpenShift賬號(hào)信息,如果你還沒有注冊(cè),你可以點(diǎn)擊“現(xiàn)在注冊(cè)”,會(huì)有一個(gè)向?qū)Ы缑嬉龑?dǎo)你注冊(cè)。
接下來要?jiǎng)?chuàng)建一個(gè)OpenShift域名。每一個(gè)賬號(hào)有且僅有一個(gè)獨(dú)特的域名。域名構(gòu)成了OpenShift分配給應(yīng)用的URL的一部分。例如,如果你的應(yīng)用的名字是“sharemylocation”,你的域名是“onopenshiftcloud”,那么應(yīng)用的URL就是 http://sharemylocation-onopenshiftcloud.rhcloud.com。
接著我們需要上傳SSH key到OpenShift. SSH key 用于進(jìn)行Git操作和訪問應(yīng)用gear。
我們可以上傳已有的,也可以新建。點(diǎn)擊New按鈕可以新建。
我們需要提供key名和私鑰、公鑰的文件名。
接著會(huì)出現(xiàn)應(yīng)用創(chuàng)建向?qū)В覀冃枰顚憫?yīng)用的一些細(xì)節(jié)。注意選擇MongoDB。
接著我們需要配置sharemylocation應(yīng)用和服務(wù)器。選擇默認(rèn)的就行。
接著會(huì)詢問關(guān)于git倉庫的一些信息。保留默認(rèn)選項(xiàng)即可。
最后,點(diǎn)擊“完成”按鈕。這將為我們創(chuàng)建一個(gè)應(yīng)用容器(gear),自動(dòng)配置SELinux和cgroup。OpenShift同時(shí)將創(chuàng)建一個(gè)私有的git倉庫并克隆到本地。然后會(huì)配置DNS。OpenShift也將安裝MongoDB。
最后,這個(gè)項(xiàng)目會(huì)以Maven項(xiàng)目的形式被導(dǎo)入到Eclipse的工作空間。
導(dǎo)入之后,會(huì)詢問是否將未提交的代碼推送到OpenShift。
你可能會(huì)尋思,你并沒有改動(dòng)這個(gè)應(yīng)用,那為什么會(huì)詢問是否推送呢?原因在于當(dāng)項(xiàng)目導(dǎo)入到Eclipse的時(shí)候,JBoss在.settings文件夾下創(chuàng)建了一個(gè).jsdtscope文件。由于這個(gè)文件并沒有被忽略,OpenShift Eclipse插件會(huì)詢問是否部署。我們可以設(shè)置忽略這個(gè)文件,訪問Window > Show View > Other > Git > Git Staging.
我們可以在OpenShift的explore view中查看我們的在線應(yīng)用。訪問Window > Show View > Other > JBoss Tools > OpenShift Explorer.
右擊應(yīng)用,點(diǎn)擊Web browser,會(huì)在默認(rèn)瀏覽器中打開模板應(yīng)用。
3. 理解開發(fā)工作流編寫功能代碼,通過Git Staging view提交到Git。Git Staging view提供可視化的界面,讓我們很容易地查看和比較我們作的改動(dòng)。
在Git Staging View下,我們有兩個(gè)選擇?;蛘呶覀儍H僅作一個(gè)本地提交,或者同時(shí)推送到遠(yuǎn)程。推送到遠(yuǎn)程之后哦,OpenShift將開死后構(gòu)建我們的應(yīng)用。
4. 第一個(gè)改動(dòng)為了更好地理解上述工作流,讓我們做個(gè)小改動(dòng)——修改下index.html:
OpenShift MongoDB Backbone.js Tutorial
訪問Git Staging view能看到改動(dòng):
將改動(dòng)拖到到Staged Changes,撰寫提交信息。
點(diǎn)擊Commit按鈕提交改動(dòng)。如上所述,不要使用Commit and Push,以免觸發(fā)應(yīng)用部署而不顯示構(gòu)建日志。構(gòu)建日志很有用,特別是在構(gòu)建失敗的時(shí)候。
訪問Server view:
右擊應(yīng)用服務(wù)器,點(diǎn)擊發(fā)布:
會(huì)出現(xiàn)確認(rèn)框,點(diǎn)擊Yes。
會(huì)出現(xiàn)一個(gè)console界面,顯示構(gòu)建的進(jìn)展:
如果想查看JBoss EAP的應(yīng)用服務(wù)器,只需在Server view下右擊sharemylocation,選擇Tail files.
默認(rèn)tail所有的日志文件,包括數(shù)據(jù)庫日志文件。我們將配置僅僅tail server.log文件。
這會(huì)開啟一個(gè)新的console界面,里面只顯示JBoss EAP server.log
最后,我們可以在瀏覽器里查看改動(dòng),右擊sharemylocation服務(wù)器,接著點(diǎn)擊 Show In > Web Browser.
我們可以在默認(rèn)瀏覽器里看到改動(dòng)。
5. 熱部署默認(rèn)配置下,一旦我們發(fā)布了應(yīng)用,或者進(jìn)行了git push,OpenShift會(huì)停止MongoDB和JBoss EAP server等服務(wù),然后做一個(gè)maven構(gòu)建,構(gòu)建完畢之后才會(huì)重啟各項(xiàng)服務(wù),開始部署。這會(huì)消耗很多時(shí)間,不利于快速開發(fā)。我們可以通過啟用熱部署來提速。熱部署僅僅替換文件而不會(huì)停止服務(wù)。
右擊項(xiàng)目,訪問OpenShift > Configure Markers來激活熱部署。
然后需要做一些配置。我們看到Java 7默認(rèn)是啟用的。如果將其禁用,那么應(yīng)用將使用Java 6。
我們啟用Hot Deploy。這會(huì)在.openshift/markers文件夾下創(chuàng)建一個(gè)hot_deploy空文件。
接著我們?cè)L問Git Staging視圖,可以看到hot_deploy文件位于Unstaged Changes中。
將其拖動(dòng)到Staged Changes,撰寫提交信息,點(diǎn)擊Commit按鈕提交。
轉(zhuǎn)到Server視圖發(fā)布改動(dòng)。構(gòu)建日志會(huì)顯示熱部署已啟用。
Not stopping cartridge jbosseap because hot deploy is enabled Not stopping cartridge mongodb because hot deploy is enabled Building jbosseap cartridge Scaling down Maven heap settings due to presence of hot_deploy marker Found pom.xml... attempting to build with "mvn -e clean package -Popenshift -DskipTests" Apache Maven 3.0.3 (r1075437; 2011-06-20 13:22:37-0400) Maven home: /etc/alternatives/maven-3.0 Java version: 1.7.0_45, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "2.6.32-358.23.2.el6.x86_64", arch: "i386", family: "unix" [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building sharemylocation 1.0 [INFO] ------------------------------------------------------------------------ [INFO] Using "UTF-8" encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /var/lib/openshift/526f931ce0b8cd94f300003f/app-root/runtime/repo/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ sharemylocation --- [INFO] Packaging webapp [INFO] Assembling webapp [sharemylocation] in [/var/lib/openshift/526f931ce0b8cd94f300003f/app-root/runtime/repo/target/sharemylocation] [INFO] Processing war project [INFO] Building war: /var/lib/openshift/526f931ce0b8cd94f300003f/app-root/runtime/repo/deployments/ROOT.war [INFO] WEB-INF/web.xml already added, skipping [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS Starting application sharemylocation Not starting cartridge mongodb because hot deploy is enabled Deploying jbosseap cartridge Not starting cartridge jbosseap because hot deploy is enabled
類似的,server日志會(huì)顯示它只是替換了WAR文件。這是秒部署。
2013/10/30 03:31:57,174 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015877: Stopped deployment ROOT.war (runtime-name: ROOT.war) in 260ms 2013/10/30 03:31:57,200 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "ROOT.war" (runtime-name: "ROOT.war") 2013/10/30 03:31:57,316 INFO [org.jboss.web] (ServerService Thread Pool -- 67) JBAS018210: Register web context: 2013/10/30 03:31:57,630 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018565: Replaced deployment "ROOT.war" with deployment "ROOT.war"
好極了!改動(dòng)代碼之后很快就能得到反饋。節(jié)省了很多時(shí)間,提高了我們的生產(chǎn)效率。
6. 升級(jí)到Java 7盡管OpenShift使用Java 7構(gòu)建項(xiàng)目,但是Maven項(xiàng)目仍然使用Java 6。修改pom.xml中的以下屬性,以便升級(jí)到Java 7。
1.7 1.7
改動(dòng)之后,右擊項(xiàng)目,Maven > Update。
7. 刪除模板文件Java EE 6以上版本下,web.xml為可選。我們可以使用annotation配置大多數(shù)組建。我們將刪除web.xml、health.jsp、snop.jsp和image文件夾。git staging視圖將顯示這些改動(dòng),我們可以提交。
8. 更新Maven War插件如果現(xiàn)在發(fā)布,那么構(gòu)建會(huì)失敗。因?yàn)閙aven war插件預(yù)設(shè)web.xml存在。最新版的Maven war插件添加了一個(gè)配置屬性。failOnMissingWebXml屬性會(huì)告訴war插件,構(gòu)建不應(yīng)僅因web.xml不存在而失敗。
修改pom.xml:
maven-war-plugin 2.4 false deployments ROOT
使用Git Staging視圖提交改動(dòng)。然后發(fā)布。
9. 編寫PingResource我們將編寫一個(gè)簡(jiǎn)單的RESTful服務(wù),當(dāng)/api/v1/ping收到請(qǐng)求后會(huì)回應(yīng){"ping": "pong"},以確保一切工作正常。
我們將使用JAX-RS來編寫RESTful服務(wù)。JAX-RS定義了一組annotation驅(qū)動(dòng)的API,可以用于編寫RESTful服務(wù)。
編寫PingResource,我們需要在應(yīng)用中啟用JAX-RS。創(chuàng)建一個(gè)javax.ws.rs.core的擴(kuò)展類。
package com.sharemylocation.rest; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/api/v1") public class RestInitializer extends Application { }
最后,我們編寫響應(yīng)/api/v1/ping請(qǐng)求的PingResource。
package com.sharemylocation.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path("/ping") public class PingResource { @GET @Produces(value = "application/json") public String ping() { return "{"ping": "pong"}"; } }
提交、發(fā)布之后,我們可以查看效果:
PingResource Demo
今天的內(nèi)容就是這些了。繼續(xù)回饋。
原文 Day 28: OpenShift Eclipse Integration for Java Developers
翻譯 SegmentFault
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64020.html
摘要:會(huì)警告該插件未簽名。以上命令告訴創(chuàng)建一個(gè)名為的項(xiàng)目,使用包。的工具使從部署應(yīng)用非常方便。域名構(gòu)成了分配給應(yīng)用的的一部分。這將為我們創(chuàng)建一個(gè)應(yīng)用容器,自動(dòng)配置和。同時(shí)將創(chuàng)建一個(gè)私有的倉庫并克隆到本地。 編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,正在翻譯,一天一篇更新,年終禮包。下面是第 17 天的內(nèi)容。 今天的30天學(xué)習(xí)30種新技術(shù)挑戰(zhàn),我決定學(xué)習(xí)一下JBoss ...
摘要:要安裝,輸入更新到最新版本,執(zhí)行如果需要閱讀額外的安裝命令行工具時(shí)的幫助文件,可以瀏覽使用命令設(shè)置好賬戶,這個(gè)命令會(huì)為你創(chuàng)建一個(gè)命名空間,然后上傳你的到服務(wù)器上。也有一個(gè)插件,但這篇文章中,我會(huì)使用命令行工具。 在30天學(xué)習(xí)30種新技術(shù)的第六天,我決定去學(xué)習(xí)一個(gè) web 開發(fā)框架 : Grails。 Grails 是一個(gè)基于 Groovy 和 Java 的開源 Web 框架。它是 J...
摘要:現(xiàn)在可以通過點(diǎn)擊指標(biāo)檢查的指標(biāo),該數(shù)據(jù)是可用的格式。健康檢查被添加?,F(xiàn)在啟動(dòng),可以看到第步創(chuàng)建現(xiàn)在寫類,它負(fù)責(zé)創(chuàng)建博客條目。為了測(cè)試,做一個(gè)請(qǐng)求第步更新現(xiàn)在,更新方法來從獲取所有的博客文件。 編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,準(zhǔn)備翻譯,一天一篇更新,年終禮包。下面是第十三天的內(nèi)容。 我已經(jīng)是一個(gè)使用了8年Java的軟件開發(fā)人員了,我寫過的大多數(shù)應(yīng)用程...
摘要:是什么是一個(gè)用編寫的開源機(jī)器學(xué)習(xí)服務(wù)器應(yīng)用,可以幫助你方便地使用搭建推薦引擎。是一個(gè)可伸縮的機(jī)器學(xué)習(xí)庫,它提供眾多聚集分類過濾算法。我為什么要關(guān)心我決定學(xué)習(xí)是因?yàn)槲蚁胧褂靡粋€(gè)可以幫助我加上機(jī)器學(xué)習(xí)功能的庫。 編者注:我們發(fā)現(xiàn)了比較有趣的系列文章《30天學(xué)習(xí)30種新技術(shù)》,準(zhǔn)備翻譯,一天一篇更新,年終禮包。下面是第四天的內(nèi)容。 今天是30天學(xué)習(xí)30種新技術(shù)的第4天。到目前為止我很享...
閱讀 3386·2021-11-12 10:36
閱讀 2555·2021-11-02 14:43
閱讀 2206·2019-08-30 14:23
閱讀 3519·2019-08-30 13:08
閱讀 976·2019-08-28 18:09
閱讀 3214·2019-08-26 12:22
閱讀 3226·2019-08-23 18:24
閱讀 2073·2019-08-23 18:17