[译] 第十七天: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完成,不用编写任何代码,开始吧。
前提准备
- 在OpenShift上注册。OpenShift完全免费,红帽给每个用户免费提供了3个Gears来运行程序。目前,这个资源分配合计有每人1.5GB内存,3GB磁盘空间。
- 掌握Java基础知识。
- 掌握Git基础知识,Git是一个分布式的版本控制和源代码管理系统,如果不了解Git,可以参考这篇指导。
- 安装最新的Java Development Kit(JDK), 可以安装OpenJDK 7或者Oracle JDK 7, OpenShift支持OpenJDK 6 和7.
- 从官网下载最新的Eclipse包,目前最新版本叫Kepler.
安装eclipse很简单,只需解压下载的包就可,Linux或者Mac上,打开终端输入以下命令:
$ tar -xzvf eclipse-jee-kepler-R-*.tar.gz
Windows上,用7-zip或者其他解压工具解压,解压后,会有一个eclipse的文件夹,也可以对可执行文件创建一个快捷方式。
第一步:安装OpenShift和Jboss 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_DEFAULTS为true使Forge给每个命令自动选择默认选项,在Forge shell, 运行以下命令:
set ACCEPT_DEFAULTS true;
第五步:添加Persistence
Forge同样也使得在程序里添加基于presistence的JPA很简单,要添加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
要查看任何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
第七步:展示RESTfull Web服务
现在用Jboss Forge为Todo实体生成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 $
以上命令,我们用了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 Forge和OpenShift 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