Java Magazine 徽标
最初发表于 Java Magazine 2014 年 5 月/6 月刊。立即订阅

使用 NetBeans IDE 构建,部署到 Oracle Java 云服务

作者:Harshad Oak Oracle ACE 总监

2014 年 5 月发布

节省部署应用的时间和精力。

上一篇 Java Magazine 文章中,我介绍了如何着手选择 Java 平台即服务 (PaaS) 提供程序,还介绍了 Oracle Java 云服务。在本文中,我将将探讨如何使用 NetBeans IDE 快速构建应用并将其部署到 Oracle Java 云服务。

大多数 Java PaaS 平台支持 Web 仪表盘部署打包成 WAR 和 EAR 文件的应用。PaaS 提供程序还提供了 Ant 和 Maven 工具来帮助简化构建和部署过程。有些(如 Oracle Java 云服务)还进一步提供与多种流行 IDE(如 NetBeansEclipseOracle Jdeveloper)的集成。对开发人员而言,IDE 集成是一大福音,因为可以节省大量时间和精力。在本文中,我们将重点介绍如何将新的 NetBeans IDE 8 与 Oracle Java 云服务结合使用。

注:本文所述应用的源代码可从这里下载。

安装 Oracle Java 云服务 SDK

开始 NetBeans 集成之前,我们首先需要安装 Oracle Java 云服务软件开发工具包 (SDK),因为所有 IDE 均使用 SDK 与 Oracle Java 云服务交互。

该 SDK 自带一些工具,可帮助您开发、部署和管理 Oracle Java 云服务上的应用。例如,它提供与 Oracle Java 云服务交互的命令、用于检查应用部署准备情况的白名单工具,以及 Ant 任务和 Maven 插件。

注意,SDK 并非应用代码中必须使用的一组类或库。

要安装 SDK,请从 Oracle 技术网下载最新版本,然后将所下载文件的内容解压缩到一个目录。

获取 Oracle Java 云服务的试用版

接下来,从 cloud.oracle.com 安装 Oracle Java 云服务的 30 天试用版。试用版完成注册后,您将收到有关数据中心、用户名、密码和试用身份域的信息。保存好这些信息,因为研究如何从 NetBeans 使用 Oracle Java 云服务时将需要用到这些信息。

注意,该试用版还包括 Oracle 数据库云服务的试用版。因此,不需要获取单独的 Oracle 数据库云服务试用版。

安装 NetBeans

NetBeans 的众多优秀特性中就包括易于安装。从 netbeans.org 下载 Java EE 版或“All”(全部)版本的 NetBeans。安装 NetBeans,然后就可以使用所有标准功能了。

话虽如此,但即便是安装“All”版本也并不意味着所有特性会立即激活并开始占用资源。NetBeans 有一个巧妙的“按需提供特性”功能,即只在实际使用某项技术时才启用。

安装 Oracle Cloud 插件

安装了 NetBeans 之后,我们接下来需要安装适用于 NetBeans 的 Oracle Cloud 插件。为此,在 NetBeans 中单击 Tools -> Plugins,然后单击 Available Plugins 选项卡。在该选项卡中搜索云,然后将看到列出的插件,如图 1 所示。确保选中该插件的复选框,然后单击 Install。然后,按照 NetBeans IDE 插件安装程序中的步骤安装 Oracle Cloud 插件。

cloud-f1

图 1

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

cloud-f2

图 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 构建软件只是一个时间问题。
图 3 所示,NetBeans 建议注册一个 Oracle WebLogic Server 的本地实例,开发的时候可以用上。任何时候都可以使用云环境,甚至开发时也行;但在本地部署和调试代码还是比在云中更快速、更容易。Oracle Java 云服务运行 Oracle WebLogic Server 11g。从这里下载,然后安装,这样就可以运行本地服务器。

cloud-f3

图 3

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

cloud-f4

图 4

现在 NetBeans 已与 Oracle Java 云服务集成,我们接下来构建一个使用 Oracle Java 云服务和 Oracle 数据库云服务的 Java EE 应用。

注意,如果在安装 NetBeans 时启用了“Feature On Demand”功能,且这是第一次使用 NetBeans 的 Java EE 功能,NetBeans 可能需要一些时间激活 Java EE。而且,如果您在安装过程中选择安装 Apache Tomcat 或 GlassFish,您将看到它们现在也列在 Services 窗口中的 Servers 下。

构建 Java EE 应用

首先,选择 New -> Java EE -> Enterprise Application。输入 JavaMag 作为项目名称,然后单击 Next。在 New Enterprise Application 屏幕(如图 5 所示)中,从 Server 列表中选择 Oracle Cloud Remote

cloud-f5

图 5

Oracle Java 云服务目前支持 Java EE 5 和 Java EE 6 的技术组合,如此处所述。

NetBeans 选择 Java EE 5 和源级别 1.5。

然后,选择 Create EJB ModuleCreate 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

cloud-f6

图 6

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

cloud-f7

图 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 作为会话类型。

cloud-f8

图 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 所示。

cloud-f9

图 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 云服务。

更多信息


 Oracle Java 云服务

 Oracle 数据库云服务

 NetBeans IDE

 Oracle Java 云服务 SDK

图 10 所示,“Oracle Cloud Remote Deployment”日志列出了云中正在执行的活动。日志显示,云服务首先执行病毒扫描,然后检查白名单,之后才是实际部署。

cloud-f10

图 10

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

cloud-f11

图 11

默认情况下,在访问 servlet 之前,Oracle Java 云服务将要求您先登录云服务。但如果您希望公开该应用且不需要任何身份验证,可在 web.xml 文件中添加一个空的 <login- config/> 标记。

执行 servlet 时,在 Oracle 数据库云服务中选择 Sql Workshop -> Object Browser。您将发现已经新建一个名为 Magazine 的表,表中插入了一条新的“Java Magazine”记录。

总结

在本文中,我们看到了如何快速安装并使用 NetBeans 开发一个 Java EE 应用,并将其部署到 Oracle Java 云服务。考虑到基于云的服务的快速采用,大家都使用集成了多个云服务(用于软件开发流程的各个阶段)的 IDE 构建软件只是一个时间问题。


oak-headshot


Harshad Oak
是 IndicThreads 的创始人。他著有 Oracle JDeveloper 和 Jakarta Commons 相关书籍,并与人合著了《Java 2 Enterprise Edition 1.4 Bible》(Wiley,2003)。目前,他正在为 Oracle Press 撰写下一本书:《Java EE Applications on the Oracle Java Cloud》。他是 Java Champion 和 Oracle ACE 总监,居住在印度浦。