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

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

编者注:我们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第 17 天的内容。


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

image.png

预备

  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,你会看到如下屏幕。

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

将其设为默认安装:

image.png

第四步 开启JBoss Forge

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

image.png

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

image.png

点击绿色按钮启动forge。

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

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

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

image.png

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

image.png

结语

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

相关文章
|
9天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
18天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
11天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
25 3
|
19天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
32 3
|
19天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
36 2
|
19天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
39 2
|
20天前
|
缓存 Java 数据库连接
Hibernate:Java持久层框架的高效应用
通过上述步骤,可以在Java项目中高效应用Hibernate框架,实现对关系数据库的透明持久化管理。Hibernate提供的强大功能和灵活配置,使得开发者能够专注于业务逻辑的实现,而不必过多关注底层数据库操作。
12 1
|
11天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
7天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
27 9
|
10天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####