返回介绍

Day 17: 使用 JBoss Forge 和 OpenShift 构建部署 JAVA EE 6 应用

发布于 2025-01-31 20:47:30 字数 9310 浏览 0 评论 0 收藏 0

今天的 “30 天学习 30 种新技术” 挑战,我决定学习一下 JBoss Forge 。JBoss Forge 是一个创建基于 Maven 的 Java 应用的开发工具,它可以帮助 Java 开发者快速地开发 web 应用。本文中,我们将使用 JBoss Forge 开发一个简单的待办应用,可以为基于 Angularjs 的前端提供服务。这一切都可以使用 JBoss Forge 完成。让我们开始吧。

预备

  1. 注册一个 OpenShift 账号 。注册是完全免费的,Red Hat 给每个用户三枚免费的 Gear,可以用 Gear 运行你的应用。在写作此文的时候,每个用户能免费使用总共 1.5 GB 内存和 3 GB 硬盘空间。
  2. 基本 Java 知识。
  3. 基本的 Git 知识。
  4. 在你的系统上安装最新版的 JDK。你可以安装 OpenJDK 7Oracle 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,你会看到如下屏幕。

在搜索框中搜寻“jboss tools”。第一个结果就是“JBoss Tools(Kepler)”。

点击“安装”,会出现选择安装插件的列表。由于本文的目的是演示,我们只选上 JBoss OpenShift Tools。选中之后点击“确认”。

现在我们需要接受许可协议。选择接受后点击完成。

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

在设置界面,进入 Forge > Installed Forge Runtimes,添加一个新的运行时环境。

现在点击“添加”按钮。填写详情后点击“确认”。

将其设为默认安装:

第四步 开启 JBoss Forge

通过 Window > Show View > Other > Forge > Forge Console 开启 Forge 控制台。

双击“Forge Console”会新开一个标签页。

点击绿色按钮启动 forge。

第五步 创建 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,在下图所示页面中点击“下一步”:

需要填写 OpenShift 账号信息,如果你还没有注册,你可以点击“现在注册”,会有一个向导界面引导你注册。

接下来要创建一个 OpenShift 域名。每一个账号有且仅有一个独特的域名。域名构成了 OpenShift 分配给应用的 URL 的一部分。例如,如果你的应用的名字是“awesomeapp”,你的域名是“onopenshiftcloud”,那么应用的 URL 就是 http://awesomeapp-onopenshiftcloud.rhcloud.com

创建域名之后,会出现一个创建应用的引导界面。你需要填写相应的信息。我们将创建一个名为 todoapp 的应用,该应用使用 jbosseap-6 。

然后会要求我们设置应用,配置适配服务器。保留默认选项,点击“下一步”即可。

接着会询问关于 git 仓库的一些信息。保留默认选项即可。

最后,点击“完成”按钮。这将为我们创建一个应用容器(gear),自动配置 SELinux 和 cgroup。OpenShift 同时将创建一个私有的 git 仓库并克隆到本地。然后会配置 DNS。最后,这个项目将被倒入你的 esclipse 工作空间。

OpenShift Clipse 会合并改动,并询问是否将应用代码推送到 OpenShift。

你可以通过访问 http://todoapp- {domain-name}.rhcloud.com 查看应用。将 {domain-name} 替换为你的 OpenShift 账户域名。

结语

本文介绍了如何使用 JBoss Forge 和 OpenShift Eclipse 集成来创建一个 Java EE 应用。OpenShift Eclipse 插件很好用。所以说,如果你是个寻找部署环境的 Java (EE) 开发者,那么你可以尝试下 OpenShift。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文