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

相关文章
相关标签/搜索