天天看點

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

​編者注:我們發現了有趣的系列文章 《30天學習30種新技術》

,正在翻譯,一天一篇更新,年終禮包。下面是第 17 天的内容。

今天的

“30天學習30種新技術” 挑戰,我決定學習一下 JBoss Forge 。JBoss Forge是一個建立基于Maven的Java應用的開發工具,它可以幫助Java開發者快速地開發web應用。本文中,我們将使用JBoss Forge開發一個簡單的待辦應用,可以為基于 Angularjs 的前端提供服務。這一切都可以使用JBoss Forge完成。讓我們開始吧。
Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

預備

  1. 注冊一個 OpenShift賬号 。注冊是完全免費的,Red Hat給每個使用者三枚免費的Gear,可以用Gear運作你的應用。在寫作此文的時候,每個使用者能免費使用總共 1.5 GB 記憶體和 3 GB 硬碟空間。
  2. 基本Java知識。
  3. 基本的Git知識。
  4. 在你的系統上安裝最新版的JDK。你可以安裝 OpenJDK 7 Oracle JDK 7 。OpenShift支援 OpenJDK6 和 7。
  5. 官網 下載下傳最新的 Eclipse 包。 在撰寫本文的時候,最新的Eclipse包叫作Kepler。

安裝eclipse很容易,解壓縮即可。

tar -xzvf eclipse-jee-kepler-R-*.tar.gz

第一步 安裝OpenShfit和JBoss Forge的Eclipse插件

打開Eclipse,進入你的項目工作空間。打開 Help > Eclipse Marketplace,你會看到如下螢幕。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

在搜尋框中搜尋“jboss tools”。第一個結果就是“JBoss Tools(Kepler)”。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

點選“安裝”,會出現選擇安裝插件的清單。由于本文的目的是示範,我們隻選上JBoss OpenShift Tools。選中之後點選“确認”。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

現在我們需要接受許可協定。選擇接受後點選完成。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

Eclipse會警告該插件未簽名。點選“确認”然後Eclipse會要求重新開機,點選“是”,重新開機一下。

第二步 使用 JBoss Forge 1.4.1

JBoss Forge使用JBoss Forge 1.3.1,然而本文中将使用1.4.1, 因為JBoss Forge Angularjs插件在1.3.1下不工作。是以要從

http://forge.jboss.org/

下載下傳JBoss Forge。下載下傳之後解壓縮,然後進入Eclipse的設定界面。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

在設定界面,進入 Forge > Installed Forge Runtimes,添加一個新的運作時環境。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

現在點選“添加”按鈕。填寫詳情後點選“确認”。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

将其設為預設安裝:

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

第四步 開啟JBoss Forge

通過 Window > Show View > Other > Forge > Forge Console 開啟 Forge 控制台。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

輕按兩下“Forge Console”會新開一個标簽頁。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

點選綠色按鈕啟動forge。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

第五步 建立 Maven 項目

啟動 Forge 1.4.1之後, 在forge控制台輸入如下指令建立Forge Maven項目。

[no project] forge $ new-project --named todoapp --topLevelPackage com.todoapp --finalName todoapp

​​​​​

以上指令告訴forge建立一個名為todoapp的項目,使用

com.todoapp

包。

輸入上述指令後,forge會詢問你項目的目錄,按回車選擇預設選項。

你可以告訴Forge為每個指令自動使用預設選項,隻需設定

ACCEPT_DEFAULTS

。在Forge shell中輸入如下指令:

set ACCEPT_DEFAULTS true;

第六步 添加JPA

添加JPA很友善。隻需在Forge shell中輸入如下指令:

[todoapp] todoapp $ persistence setup --provider HIBERNATE --container JBOSS_AS7

這會建立

persistence.xml

并綁定到

java:jboss/datasources/ExampleDS

第七步 建立Todo實體

現在建立一個Todo的JPA實體,然後添加以下四個字段:

[todoapp] todoapp $ entity --named Todo​​​​​

[todoapp] Todo.java $ field string --named task​​​​​

[todoapp] Todo.java $ field string --named description​​​​​

[todoapp] Todo.java $ field temporal --type DATE --named createdOn​​​​​

[todoapp] Todo.java $ field boolean --named completed​​​​​

你可以使用

ls

指令檢視任何Java類的内容。

[todoapp] Todo.java $ ls​​​​​

[fields]

private::Date::createdOn;        private::Long::id;

private::String::description;    private::String::task;

private::boolean::completed;     private::int::version;​​​​​

[methods]

public::equals(Object that)::boolean

public::getCompleted()::boolean

public::getCreatedOn()::Date

public::getDescription()::String

public::getId()::Long

public::getTask()::String

public::getVersion()::int

public::hashCode()::int

public::setCompleted(final boolean completed)::void

public::setCreatedOn(final Date createdOn)::void

public::setDescription(final String description)::void

public::setId(final Long id)::void

public::setTask(final String task)::void

public::setVersion(final int version)::void

public::toString()::String

第八步 RESTful web 服務

現在我們要使用JBOSS Forge為Todo實體生成REST。是以我們需要設定JBoss Forge REST插件。

[todoapp] Todo.java $ rest setup --activatorType APP_CLASS 

***SUCCESS*** Installed [forge.maven.WebResourceFacet] successfully.

***SUCCESS*** Installed [forge.spec.servlet] successfully.

***SUCCESS*** Installed [forge.spec.jaxrs.applicationclass] successfully.

***SUCCESS*** Installed [forge.spec.jaxrs] successfully.

***SUCCESS*** Rest Web Services (JAX-RS) is installed.

Wrote /Users/shekhargulati/dev/workspaces/forge/todoapp/src/main/webapp

Wrote /Users/shekhargulati/dev/workspaces/forge/todoapp/pom.xml

Wrote /Users/shekhargulati/dev/workspaces/forge/todoapp/src/main/java/com/todoapp/rest/RestApplication.java

[todoapp] Todo.java $

上述指令中,我們使用應用類激活JAX-RS,這樣就不用在

web.xml

中定義。我們建立了一個擴充了

javax.ws.rs.ApplicationPath

的RestApplication類。

現在我們可以用Forge來生成REST了。

[todoapp] todoapp $ rest endpoint-from-entity --contentType application/json com.todoapp.model.Todo.java

上述指令将為我們的Todo JPA實體建立一個标準的RESTful web服務。

第九步 Angular JS 前端

Forge預設支援JSF。但是你也可以選擇其他技術,例如Angularjs。為了使用Angularjs,我們需要安裝相應插件。

在Forge控制台輸入如下指令安裝Forge Angularjs插件。

[todoapp] todoapp $ forge install-plugin angularjs

安裝之後配置一下。

[todoapp] todoapp $ scaffold-x setup --scaffoldType angularjs

這會在我們的待辦應用中設定Angularjs。現在我們可以為Todo實體生成視圖了。

[todoapp] model $ scaffold-x from Todo.java

第十步 部署到OpenShift

萬事具備,隻欠部署。 OpenShift的JBoss工具使從Eclipse部署Java應用非常友善。

在eclipse中點選 File > New > Other > OpenShift Application,在下圖所示頁面中點選“下一步”:

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

需要填寫OpenShift賬号資訊,如果你還沒有注冊,你可以點選“現在注冊”,會有一個向導界面引導你注冊。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

接下來要建立一個OpenShift域名。每一個賬号有且僅有一個獨特的域名。域名構成了OpenShift配置設定給應用的URL的一部分。例如,如果你的應用的名字是“awesomeapp”,你的域名是“onopenshiftcloud”,那麼應用的URL就是

http://awesomeapp-onopenshiftcloud.rhcloud.com
Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

建立域名之後,會出現一個建立應用的引導界面。你需要填寫相應的資訊。我們将建立一個名為todoapp的應用,該應用使用 jbosseap-6 。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

然後會要求我們設定應用,配置适配伺服器。保留預設選項,點選“下一步”即可。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

接着會詢問關于git倉庫的一些資訊。保留預設選項即可。

最後,點選“完成”按鈕。這将為我們建立一個應用容器(gear),自動配置SELinux和cgroup。OpenShift同時将建立一個私有的git倉庫并克隆到本地。然後會配置DNS。最後,這個項目将被倒入你的esclipse工作空間。

OpenShift Clipse會合并改動,并詢問是否将應用代碼推送到OpenShift。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

你可以通過通路

http://todoapp-

{domain-name}.rhcloud.com 檢視應用。将

{domain-name}

替換為你的OpenShift賬戶域名。

Day 17: 使用 JBoss Forge 和 OpenShift 建構部署 JAVA EE 6 應用

結語

本文介紹了如何使用JBoss Forge和OpenShift Eclipse內建來建立一個Java EE應用。OpenShift Eclipse插件很好用。是以說,如果你是個尋找部署環境的Java (EE) 開發者,那麼你可以嘗試下 OpenShift。