文章
Java
最初发表于 Java Magazine 2014 年 5 月/6 月刊。立即订阅。 |
作者:Harshad Oak
2014 年 5 月发布
节省部署应用的时间和精力。
在上一篇 Java Magazine 文章中,我介绍了如何着手选择 Java 平台即服务 (PaaS) 提供程序,还介绍了 Oracle Java 云服务。在本文中,我将将探讨如何使用 NetBeans IDE 快速构建应用并将其部署到 Oracle Java 云服务。
大多数 Java PaaS 平台支持 Web 仪表盘部署打包成 WAR 和 EAR 文件的应用。PaaS 提供程序还提供了 Ant 和 Maven 工具来帮助简化构建和部署过程。有些(如 Oracle Java 云服务)还进一步提供与多种流行 IDE(如 NetBeans、Eclipse 和 Oracle Jdeveloper)的集成。对开发人员而言,IDE 集成是一大福音,因为可以节省大量时间和精力。在本文中,我们将重点介绍如何将新的 NetBeans IDE 8 与 Oracle Java 云服务结合使用。
注:本文所述应用的源代码可从这里下载。
开始 NetBeans 集成之前,我们首先需要安装 Oracle Java 云服务软件开发工具包 (SDK),因为所有 IDE 均使用 SDK 与 Oracle Java 云服务交互。
该 SDK 自带一些工具,可帮助您开发、部署和管理 Oracle Java 云服务上的应用。例如,它提供与 Oracle Java 云服务交互的命令、用于检查应用部署准备情况的白名单工具,以及 Ant 任务和 Maven 插件。
注意,SDK 并非应用代码中必须使用的一组类或库。
要安装 SDK,请从 Oracle 技术网下载最新版本,然后将所下载文件的内容解压缩到一个目录。
接下来,从 cloud.oracle.com 安装 Oracle Java 云服务的 30 天试用版。试用版完成注册后,您将收到有关数据中心、用户名、密码和试用身份域的信息。保存好这些信息,因为研究如何从 NetBeans 使用 Oracle Java 云服务时将需要用到这些信息。
注意,该试用版还包括 Oracle 数据库云服务的试用版。因此,不需要获取单独的 Oracle 数据库云服务试用版。
NetBeans 的众多优秀特性中就包括易于安装。从 netbeans.org 下载 Java EE 版或“All”(全部)版本的 NetBeans。安装 NetBeans,然后就可以使用所有标准功能了。
话虽如此,但即便是安装“All”版本也并不意味着所有特性会立即激活并开始占用资源。NetBeans 有一个巧妙的“按需提供特性”功能,即只在实际使用某项技术时才启用。
安装了 NetBeans 之后,我们接下来需要安装适用于 NetBeans 的 Oracle Cloud 插件。为此,在 NetBeans 中单击 Tools -> Plugins,然后单击 Available Plugins 选项卡。在该选项卡中搜索云,然后将看到列出的插件,如图 1 所示。确保选中该插件的复选框,然后单击 Install。然后,按照 NetBeans IDE 插件安装程序中的步骤安装 Oracle Cloud 插件。

图 1
安装了插件之后,您将看到 Services 窗口中已经新增一个“Cloud”部分,如图 2 所示。如果看不到 Services 窗口,可在 NetBeans 菜单中单击 Window -> Services 启用它。

图 2
注意,您随时可以使用 NetBeans 菜单中的 Window -> Reset Windows 选项恢复默认窗口和熟悉的外观。
现在,右键单击 Cloud 并选择 Add Cloud。您将看到 Add Cloud Provider 屏幕。选择 Oracle Cloud,然后输入安装 Oracle Java 云服务试用版时获取的信息,如图 3 所示。注意,在 SDK 域中需要指定 Oracle Java Cloud Service SDK 的解压缩路径。而且,如果您的数据中心未在 Data Center 列表中列出,请键入数据中心的名称。
云之旅大家都使用集成了多个云服务的 IDE 构建软件只是一个时间问题。 |

安装云之后,将看到列出一个新服务器和一个“welcome app”,如图 4 所示。右键单击该应用可以查看、停止或取消部署该程序。您还可以右键单击 Oracle Cloud,然后单击 View Jobs and Logs,从 NetBeans 内部访问 Jobs Log(作业日志)和 Instance Log(实例日志)。

图 4
现在 NetBeans 已与 Oracle Java 云服务集成,我们接下来构建一个使用 Oracle Java 云服务和 Oracle 数据库云服务的 Java EE 应用。
注意,如果在安装 NetBeans 时启用了“Feature On Demand”功能,且这是第一次使用 NetBeans 的 Java EE 功能,NetBeans 可能需要一些时间激活 Java EE。而且,如果您在安装过程中选择安装 Apache Tomcat 或 GlassFish,您将看到它们现在也列在 Services 窗口中的 Servers 下。
首先,选择 New -> Java EE -> Enterprise Application。输入 JavaMag 作为项目名称,然后单击 Next。在 New Enterprise Application 屏幕(如图 5 所示)中,从 Server 列表中选择 Oracle Cloud Remote。

图 5
Oracle Java 云服务目前支持 Java EE 5 和 Java EE 6 的技术组合,如此处所述。
NetBeans 选择 Java EE 5 和源级别 1.5。
然后,选择 Create EJB Module 和 Create Web Application Module 复选框。单击 Finish,NetBeans 将创建模块。
在本应用中,我们将使用一个 Java Persistence API (JPA) 实体、一个无状态会话 Enterprise JavaBean (EJB) 和一个 servlet 在数据库中新建一条杂志记录。
我们首先新建一个名为 Magazine 的 JPA 实体。右键单击 JavaMag-ejb 项目,然后选择 New -> Persistence -> Entity Class。如图 6 所示,在 Class Name 域中输入 Magazine,从 Package 列表中选择 entities,确保选中 Create Persistence Unit 复选框。然后,单击 Next。

图 6
在图 7 所示的 New File 屏幕中,输入随 Oracle Java Cloud Service 试用版获取的 Oracle Database Cloud Service 试用版的 Data Source 名称。登录基于 Web 的 Oracle Java Cloud Service 仪表盘时,您将看到此名称列在 Data Sources 部分中。

图 7
Oracle Java 云服务支持 JPA 2.0,因此选择 EclipseLink for JPA 2.0。注意,Create 选项是 Table Generation Strategy 的默认选择,因此当试图使用 Magazine JPA 实体持久保存新的杂志信息时,将新建一个 Magazine 表。
NetBeans 将在软件包实体中生成实体类文件 Magazine.java。它还将生成一个 persistence.xml 文件,其中包含持久性单元配置。
如节选自 Magazine.java 的清单 1 所示,NetBeans 将添加所有必要的批注,指示该类为实体。在清单 1 中,id 属性的 GenerationType.AUTO 批注表示持久性提供程序将根据数据库选取适当的策略。EclipseLink 通常将新建一个表用于生成密钥,因为这是适用于所有数据库的策略。
@Entity
public class Magazine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
清单 1
现在向 Magazine 实体添加 name 属性。为此,在代码中右键单击并选择 Insert Code -> Add Property。在打开的屏幕中,输入属性名称作为 name,并选择生成 getter 和 setter 方法的选项。
接下来,我们将新建一个无状态会话 bean,通过它使用 Magazine 实例。右键单击 JavaMag-ejb 项目,选择 Enterprise JavaBeans -> Session Bean。
如图 8 所示,输入 AddMagazineBean 作为 bean 名称,从 Package 列表选择 ejb,并选择 Stateless 作为会话类型。

图 8
注意,因为 Oracle Java 云服务支持 EJB 3.0,所以没有 EJB 3.1 中引入的“no interface”选项。
而且,Oracle Java 云服务只支持本地 EJB 调用,因此选择 Local 作为要创建的接口类型。
单击 Finish。NetBeans 将生成 AddMagazineBean bean 和 AddMagazineBeanLocal 接口。现在选择 Insert Code -> Add Business Method 为该会话 bean 添加新的 addMagazine 方法。注意,NetBeans 将为本地接口添加方法签名。
要将新杂志添加到数据库,我们需要使用先前创建的实体。要使用实体,我们需要注入 EntityManager。为此,在代码中右键单击并选择 Insert Code -> Use Entity Manager。NetBeans 将添加 EntityManager 的依赖注入代码以及 persist 方法。我们将使用 persist 方法(如清单 2 所示),并向其传递一个 Magazine 实体的对象。
@Stateless
public class AddMagazineBean implements AddMagazineBeanLocal {
@PersistenceContext(unitName = " JavaMag-ejbPU" )
private EntityManager em;
@Override
public void addMagazine(String name) {
Magazine newMagazine = new Magazine();
newMagazine.setName(name);
persist(newMagazine);
}
public void persist(Object object) {
em.persist(object);
}
}
清单 2
现在,我们已经在 JavaMag-ejb 项目中创建了实体和会话 bean。接下来,我们需要在 JavaMag-web 项目中添加一个 Web 组件,它将使用 AddMagazineBean 向数据库添加一个新杂志。
节省时间Oracle Java 云服务进一步提供与多个流行 IDE 的集成。 |
JavaMag-web 项目并选择 Web -> Servlet,向该项目添加一个 servlet。将该 servlet 命名为 MagazineServlet,并将该软件包命名为 servlets。单击 Finish。
现在要从该 servlet 调用会话 bean:右键单击代码并选择 Insert Code -> Call Enterprise Bean。指定 AddMagazineBean,如图 9 所示。

图 9
如清单 3 所示,NetBeans 将为 MagazineServlet 添加带 @EJB 批注的依赖注入。
@EJB private AddMagazineBeanLocal addMagazineBean;
清单 3
接下来,我们将在 processRequest 方法中添加一行代码来调用该 bean 并添加一个新的杂志,如清单 4 所示。
addMagazineBean.addMagazine(" Java Magazine" );
清单 4
现在我们已经有了实体、会话 bean 和 servlet,因此可以部署应用了。右键单击 JavaMag 企业应用并单击 Run。检查 NetBeans 中“JavaMag (run)”日志的内容,您将发现,NetBeans 已构建 Web 应用模块的 WAR 文件、EJB 模块的 JAR 文件,并将这两个文件打包成一个 EAR 文件。然后将该 EAR 文件上传到了 Oracle Java 云服务。
更多信息 |

一旦部署完成,将打开默认浏览器,并指向部署的应用中的 index.jsp 页面。因为我们希望运行 MagazineServlet,所以将浏览器中的 URL 更改为 /JavaMag-war/MagazineServlet 调用该 servlet。输出将类似图 11 所示。

图 11
默认情况下,在访问 servlet 之前,Oracle Java 云服务将要求您先登录云服务。但如果您希望公开该应用且不需要任何身份验证,可在 web.xml 文件中添加一个空的 <login- config/> 标记。
执行 servlet 时,在 Oracle 数据库云服务中选择 Sql Workshop -> Object Browser。您将发现已经新建一个名为 Magazine 的表,表中插入了一条新的“Java Magazine”记录。
在本文中,我们看到了如何快速安装并使用 NetBeans 开发一个 Java EE 应用,并将其部署到 Oracle Java 云服务。考虑到基于云的服务的快速采用,大家都使用集成了多个云服务(用于软件开发流程的各个阶段)的 IDE 构建软件只是一个时间问题。
![]() |