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

編者注:咱們發現了有趣的系列文章《30天學習30種新技術》,正在翻譯,一天一篇更新,年終禮包。下面是第 17 天的內容。html


今天的「30天學習30種新技術」挑戰,我決定學習一下JBoss Forge。JBoss Forge是一個建立基於Maven的Java應用的開發工具,它能夠幫助Java開發者快速地開發web應用。本文中,咱們將使用JBoss Forge開發一個簡單的待辦應用,能夠爲基於Angularjs的前端提供服務。這一切均可以使用JBoss Forge完成。讓咱們開始吧。前端

jboss forge

預備

  1. 註冊一個OpenShift帳號。註冊是徹底免費的,Red Hat給每一個用戶三枚免費的Gear,能夠用Gear運行你的應用。在寫做此文的時候,每一個用戶能無償使用總共 1.5 GB 內存和 3 GB 硬盤空間。java

  2. 基本Java知識。git

  3. 基本的Git知識。angularjs

  4. 在你的系統上安裝最新版的JDK。你能夠安裝OpenJDK 7Oracle JDK 7。OpenShift支持 OpenJDK6 和 7。web

  5. 官網 下載最新的 Eclipse 包。 在撰寫本文的時候,最新的Eclipse包叫做Kepler。shell

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

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

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

打開Eclipse,進入你的項目工做空間。打開 Help > Eclipse Marketplace,你會看到以下屏幕。segmentfault

eclipse marketplace

在搜索框中搜尋「jboss tools」。第一個結果就是「JBoss Tools(Kepler)」。服務器

eclipse marketplace search

點擊「安裝」,會出現選擇安裝插件的列表。因爲本文的目的是演示,咱們只選上JBoss OpenShift Tools。選中以後點擊「確認」。

Select-OpenShift-and-forge-tools

如今咱們須要接受許可協議。選擇接受後點擊完成。

Accept License

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的設置界面。

Eclipse Preferences

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

Jboss Forge Installed Runtimes

如今點擊「添加」按鈕。填寫詳情後點擊「確認」。

Add Forge runtime

將其設爲默認安裝:

default install

第四步 開啓JBoss Forge

經過 Window > Show View > Other > Forge > Forge Console 開啓 Forge 控制檯。

Forge console

雙擊「Forge Console」會新開一個標籤頁。

Forge Conlole

點擊綠色按鈕啓動forge。

Forge Started

第五步 建立 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,在下圖所示頁面中點擊「下一步」:

create-openshift_app-eclipse

須要填寫OpenShift帳號信息,若是你尚未註冊,你能夠點擊「如今註冊」,會有一個嚮導界面引導你註冊。

Signin OpenShift

接下來要建立一個OpenShift域名。每個帳號有且僅有一個獨特的域名。域名構成了OpenShift分配給應用的URL的一部分。例如,若是你的應用的名字是「awesomeapp」,你的域名是「onopenshiftcloud」,那麼應用的URL就是 http://awesomeapp-onopenshiftcloud.rhcloud.com

Domain Name Details

建立域名以後,會出現一個建立應用的引導界面。你須要填寫相應的信息。咱們將建立一個名爲todoapp的應用,該應用使用 jbosseap-6 。

Create OpenShift Application

而後會要求咱們設置應用,配置適配服務器。保留默認選項,點擊「下一步」便可。

Setup OpenShift Todoapp

接着會詢問關於git倉庫的一些信息。保留默認選項便可。

最後,點擊「完成」按鈕。這將爲咱們建立一個應用容器(gear),自動配置SELinux和cgroup。OpenShift同時將建立一個私有的git倉庫並克隆到本地。而後會配置DNS。最後,這個項目將被倒入你的esclipse工做空間。

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

Commit todoapp changes

你能夠經過訪問 http://todoapp-{domain-name}.rhcloud.com 查看應用。將{domain-name}替換爲你的OpenShift帳戶域名。

Todoapp OpenShift

結語

本文介紹瞭如何使用JBoss Forge和OpenShift Eclipse集成來建立一個Java EE應用。OpenShift Eclipse插件很好用。因此說,若是你是個尋找部署環境的Java (EE) 開發者,那麼你能夠嘗試下 OpenShift。


原文 Day 17: JBoss Forge——Build and Deploy Java EE 6 AngularJS Applications using JBoss Forge and OpenShift
翻譯 SegmentFault

相關文章
相關標籤/搜索