[译] 第十七天:JBoss Forge - 用JBoss Forge和OpenShift构建和部署Java EE 6 AngularJS程序

前言

今天的30天挑战,我决定学习JBoss Forge. JBoss Forge是一个快速应用开发工具,基于Java程序构建Maven. 可以帮助Java开发者快速开始Web程序开发。这篇博客,我们会用JBoss Forge开发一个很简单的待办清单程序,会展示基于RESTfull Web服务JaxRS, 可接受基于前端的AngluarJS. 所有这些都用JBoss Forge完成,不用编写任何代码,开始吧。

前提准备

  1. OpenShift上注册。OpenShift完全免费,红帽给每个用户免费提供了3Gears来运行程序。目前,这个资源分配合计有每人1.5GB内存,3GB磁盘空间。
  2. 掌握Java基础知识。
  3. 掌握Git基础知识,Git是一个分布式的版本控制和源代码管理系统,如果不了解Git,可以参考这篇指导
  4. 安装最新的Java Development      Kit(JDK), 可以安装OpenJDK 7或者Oracle JDK 7, OpenShift支持OpenJDK 6 7.
  5. 从官网下载最新的Eclipse包,目前最新版本叫Kepler.

                        

               

安装eclipse很简单,只需解压下载的包就可,Linux或者Mac上,打开终端输入以下命令:

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

        Windows上,用7-zip或者其他解压工具解压,解压后,会有一个eclipse的文件夹,也可以对可执行文件创建一个快捷方式。

第一步:安装OpenShiftJboss Forge Eclipse插件

下载和解压Eclipse Kepler IDE后,打开Eclipse导航到项目空间,Help>Eclipse Marketplace, 可看到如图界面:

 

在搜索框内,输入'jboss tools' 点击Go搜索。

 

点击搜索后,可以看到如图'JBoss Tools(Kepler)'显示在第一个结果。

 

现在点击install, 可以看到可装插件的列表,由于本文是演示OpenShift, 我们只选'Jboss OpenShift Tools', 选择之后点'Confirm'键。

 

接下来可以看到要求你接受服务条款,点击'I accept the terms of the license agreement'然后点Finish.

 

接下来Eclipse会有一个提示框,因为这个插件是未签名的。点击OK,然后被要求重启Eclipse来适用这些更新。

第二步:更新Jboss Forge安装包到1.4.1

JBoss Forge插件用的老版本1.3.1, 本文我们用1.4.1, 因为Jboss Forge AngularJS插件不支持1.3.1. http://forge.jboss.org/下载安装包,然后解压,打开Eclipse Preferences如图:

 

Windows上,打开Windows>Preferences.

 

preferences下,找到如图所示Forge>Installed Forge Runtimes, 添加新的runtime.

 

现在点击'Add'添加新的Forge runtime,如图,输入信息后点击OK.

 

添加后,选择它为默认安装,如图,点击OK.

第三步:启动JBoss Forge

更新JBoss Forge版本后,启动forge. 打开Forge控制台导航到Window>Show View>Other>Forge>Forge Console.

 

双击'Forge Console'可以看到在Eclipse里多了个页面,可以在这里启动/停止Forge.

 

点击绿色按钮启动forge可以看到如图:

第四步:创建Maven项目

现在已经成功启动了Forge 1.4.1, 开始创建第一个Forge Maven项目。

 

要创建新项目,在Forge控制台输入以下命令:

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

这个命令让Forge创建一个名为todoapp的项目,用顶层包com.todoapp, 最终产品名也是todoapp.项目创建后会被作为Maven项目导入Eclipse.

 

输入以上命令后,Forge会问你是否想用以下路径作为项目路径,如果直接按回车键,会选择默认路径。

 

你可以通过设置ACCEPT_DEFAULTStrue使Forge给每个命令自动选择默认选项,在Forge shell, 运行以下命令:

set ACCEPT_DEFAULTS true;

第五步:添加Persistence

Forge同样也使得在程序里添加基于presistenceJPA很简单,要添加JPA, 只需在Forge Shell里运行以下命令:

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

它会创建persistence.xml然后绑定到java:jboss/datasources/ExampleDS.

第六步:创建Todo实体

现在创建一个Todo JPA实体,添加4个字段

[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
View Code

 

要查看任何Java类的内容,可以用如下ls命令,以下列出这个类的所有字段和方法。

[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 
View Code

第七步:展示RESTfull Web服务

现在用Jboss ForgeTodo实体生成REST终结点,因此,需要安装Jboss Forge REST插件,输入rest setup命令。

[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 $ 
View Code

 

以上命令,我们用了Application class去激活JAX-RS而不是在web.xml里定义,以上命令创建了一个叫RestApplication的类,继承javax.ws.rs.ApplicationPath. 

 

现在用Forge生成RESTful终结点。

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

 

以上命令为Todo JPA实体所需的所有注释和Java代码创建了一个遍准的RESTfull web服务。

第八步:AngularJS前端架构

Forge支持的默认架构机制是JSF, 不过你可以随意选择其他架构技术如AngularJS, 要用AngularJS,需要安装AngularJS Scaffold插件。 

 

Forge控制台,输入以下命令会安装Forge AngularJS插件。

[todoapp] todoapp $ forge install-plugin angularjs

装好后可以用以下命令安装AgularJS scanffold

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

这会为Todoapp安装AngularJS, 现在可以为Todo实体生成视图

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

 

现在就成功创建了Forge程序。 

第九步:部署到OpenShift

最后就只剩部署到OpenShift. OpenShift JBoss tools插件使得从Eclipse部署Java web程序很简单。本文,我们会部署一个做好的Eclipse程序到OpenShift, 你也可以参考我早先的博客用集成的OpenShift Eclipse. 

 

打开eclipse点击File>New>Other>OpenShift Application,如图,点击next.

点击'Next'后,会要求输入你的OpenShift账号密码,如果你还没注册,可以点击'sign up here'链接去注册。输入账号密码后,勾上'Save password'就不用每次都输入密码了,点击'Next'.

然后,会要求你创建OpenShift域名,每个账号都需要一个域名区分其他用户,一个账号只有一个域名,域名是openshift分给程序的url中的一部分,例如,你的程序叫'awesomeapp',你的空间叫'onopenshiftcloud', 程序的url就是 http://awesomeapp-onopenshiftcloud.rhcloud.com. 输入你的唯一域名点finish.

接着会要求你安装todoapp, 配置服务适配设置,选择默认设置点next

接下来会要求你指定克隆git仓库的路径和远程git的名字,选择默认设置。

 

最后,点击'finish'就完成了。这会创建一个叫gear的程序容器,安装所需的SELinux策略和cgroup配置,OpenShift也会为你安装一个私有git仓库,克隆到本地,然后它会把DNS传播到网络,最后,项目会被导入到你的eclipse空间。

 

OpenShift Eclipse工具会整合这些更新,会问你是否想推送程序代码到OpenShift.

你可以在线访问程序http://todoapp-{domain-name}.rhcloud.com替换{domain-name}为你自己的域名。

总结

本文我们讲了怎样用JBoss ForgeOpenShift Eclipse集成工具来创建Java EE程序。 OpenShift Eclipse插件让OpenShift使用起来很方便,如果你是一个Java(EE)开发者,正在寻找一个部署平台,建议试试OpenShift.

 

原文:https://www.openshift.com/blogs/day-17-jboss-forge-java-ee-6-angularjs-application-on-openshift

posted on 2014-01-02 17:29  百花宫  阅读(773)  评论(0编辑  收藏  举报