JavaRush /Java 博客 /Random-ZH /设置本地 Java EE 开发环境
zor07
第 31 级
Санкт-Петербург

设置本地 Java EE 开发环境

已在 Random-ZH 群组中发布
在本文中,我们将设置一个运行 Java EE 应用程序的工作环境。让我提醒您:在前面的材料中,我们介绍了Java EE的基础知识。 设置本地 Java EE 开发环境 - 1我们所说的环境是指一组不同的软件组件:
  • Java EE SDK;
  • Java EE 应用服务器 GlassFish;
  • 设置 IntelliJ IDEA。
本材料的主要目标:
  1. 展示如何准备使用 Java EE 应用程序的工作环境。
  2. 展示如何在 GlassFish 服务器上从 IntelliJ IDEA 部署和运行 Java EE 应用程序。
为此,我们将采取以下措施:
  1. 下载并安装 Java EE 7 SDK。
  2. 让我们提出 Java EE 应用服务器 GlassFish。
  3. 让我们学习如何通过命令行启动和停止服务器。
  4. 让我们配置 IntelliJ IDEA 以将应用程序部署到该服务器。
  5. 让我们部署并运行演示应用程序,该应用程序与 GlassFish 应用程序服务器一起包含在 Java EE 7 SDK 中。
本文对于熟悉 Java 企业开发的 Java 开发新手很有用。将此视为为进一步练习奠定基础的一点准备。如果您熟悉基本的 Windows 命令行 (PowerShell) 技能,您就会理解这些材料。本文中使用的软件组件的版本:
  • 玻璃鱼4.0;
  • IntelliJ IDEA 2019.3.1(旗舰版);
  • Java EE SDK 7。

安装 Java EE SDK

重要条件。在安装Java EE SDK之前,您需要确保已预安装Java SE SDK。
  1. 首先,我们需要下载SDK。为此,您可以在搜索引擎中输入:“Java EE SDK 7”,或者直接从 Oracle 网站转到sdk 下载页面。

  2. 您需要从提供的 SDK 列表中选择适合您平台的 SDK。本文介绍了安装发行版:“java_ee_sdk-7-jdk7-windows-x64-ml.exe”

  3. 运行安装文件。启动过程中,可能会出现以下错误(如果没有出现,则可以继续安装):

    设置本地 Java EE 开发环境 - 2

    这意味着安装程序无法找到预安装的 Java 运行时环境的路径。可以通过使用命令行手动将路径传递到 JRE 来更正该错误。为此,您需要通过 PowerShell 运行安装文件,并通过 -j 参数传递预安装 JRE 的路径。

    例如,像这样:

    设置本地 Java EE 开发环境 - 3
  4. 对于大多数程序来说,进一步的安装过程是非常典型的。您所需要做的就是单击“下一步”和“安装”按钮。

    该程序将安装 Java EE SDK 以及 GlassFish 服务器,安装完成后,服务器将启动并可供使用。

  5. 为了确保 GlassFish 服务器正常工作,安装完成后,您可以打开服务器管理面板,该面板位于: http://localhost:4848/

    截图如下:

    为 Java EE 开发设置本地环境 - 4

通过命令行启动和停止 GlassFish

因此,服务器已启动并正在运行,但服务器启动是由安装程序启动的。下面我们将尝试弄清楚如何自己启动和停止服务器。首先,让我们揭示一个域这样的实体。 是由一个管理服务器管理的一组一个或多个 GlassFish 服务器实例。安装 GlassFish 服务器时,会创建一个默认域 - domain1。以下组件与其关联:
  • 服务器端口(默认8080);
  • 管理服务器端口(默认4848);
  • 管理员用户名和密码(默认为admin,默认不需要密码)。
Domain1 已分配给它的默认值。 为 Java EE 开发设置本地环境 - 5要启动和停止服务器,GlassFish 发行版包含多个脚本,默认情况下位于以下目录中: C:\glassfish4\glassfish\bin 要通过命令行启动和停止 GlassFish 服务器,可以使用 asadmin 脚本及其命令:
asadmin start-domain domain_name
asadmin stop-domain domain_name
让我们尝试通过从子目录C:\glassfish4\glassfish\bin运行 PowerShell 来停止服务器(因为它在安装后已经在运行) : 为 Java EE 开发设置本地环境 - 6服务器已停止。现在让我们运行它: 为 Java EE 开发设置本地环境 - 7

我们分析第一个 Java EE 应用程序 dukes-age

接下来我们将看一个演示 Java EE 应用程序:dukes-age。该应用程序与第一个 cup 应用程序一起包含在 Java EE SDK 中。这些应用程序的描述位于 Oracle 官方文档网站上面向Java EE 初学者的 Java EE 入门课程的第 3 节和第 4 节中。在本文中,我们将简要介绍 dukes-age 应用程序,并更详细地研究从 IntelliJ IDEA 开发环境在 GlassFish 服务器上启动该应用程序的过程。该应用程序位于 glassfish 服务器目录内。如果您在安装 Java EE SDK 时没有更改 glassfish 服务器的默认路径,则可以在文件夹中找到此应用程序:C:\glassfish4\docs\firstcup\example\dukes-age。可能每个Java开发人员,无论是初学者还是经验丰富的人,都至少见过一次Java编程语言的吉祥物——Duke: 为 Java EE 开发设置本地环境 - 8很少有人知道Duke有生日。他出生于 1995 年 5 月 23 日,当时 Java 技术的第一个演示版本发布。公爵年龄应用程序,顾名思义,提供有关杜克年龄的信息。让我们在 IntelliJ IDEA 中打开此应用程序:File -> New -> Project From Existing Sources... 然后转到包含 dukes-age 应用程序的文件夹,默认位于C:\glassfish4\docs\firstcup\example\dukes- Age,选择文件 pom.xml 并单击“确定”: 为 Java EE 开发设置本地环境 - 9将打开具有以下结构的应用程序: 为 Java EE 开发设置本地环境 - 10让我们看一下类代码DukesAgeResource
package firstcup.dukesage.resource;

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

/**
 * REST Web Service
 *
 */
@Path("dukesAge")
public class DukesAgeResource {

    /** Creates a new instance of DukesAgeResource */
    public DukesAgeResource() {
    }

    /**
     * Retrieves representation of an instance of DukesAgeResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("text/plain")
    public String getText() {
        // Create a new Calendar for Duke's birthday
        Calendar dukesBirthday = new GregorianCalendar(1995, Calendar.MAY, 23);
        // Create a new Calendar for today
        Calendar now = GregorianCalendar.getInstance();

        // Subtract today's year from Duke's birth year, 1995
        int dukesAge = now.get(Calendar.YEAR) - dukesBirthday.get(Calendar.YEAR);
        dukesBirthday.add(Calendar.YEAR, dukesAge);

        // If today's date is before May 23, subtract a year from Duke's age
        if (now.before(dukesBirthday)) {
            dukesAge--;
        }
        // Return a String representation of Duke's age
        return "" + dukesAge;
    }
}
这是一个 JAX-RS RESTful Web 服务,具有一种方法 - getText()。如果您检查此方法的代码,就会发现该方法返回自 Duke 出生以来已经过去的年数。也就是说,该方法返回 Duke 的年龄。类是 REST 上下文中的资源。
  1. 类上方的注释@Path("dukesAge")定义了此类将处理的调用的 URI 路径。
  2. 该方法上方的注释@GET告诉我们该方法处理 GET 请求。
  3. 该注释@Produces("text/plain")指定对请求的响应的媒体类型。不难猜测该方法getText()将生成媒体类型为text/plain 的响应。
我们还看一下 web.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
    </servlet>
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>
在此文件中,在 tag 内部,定义了具有值的servlet-mapping标记。这里定义了某个根点,服务将进一步处理对该根点的调用。如果结合注解来看,原来要获取Duke的年龄信息,需要联系地址/webapi/dukesAge。 url-pattern/webapi/*@Path("dukesAge")

设置 IntelliJ IDEA 以在 GlassFish 服务器上运行 Java EE 应用程序

现在我们对 dukes-age 应用程序有了一个非常全面的了解(在Oracle 网站上了解更多相关信息),让我们配置 IntelliJ IDEA,以便可以从我们的 IDE 运行该应用程序。设置 IntelliJ IDEA
  1. 为此,请转到菜单“运行”->“编辑配置”。
  2. 运行/调试配置面板将打开: 为 Java EE 开发设置本地环境 - 11
  3. 我们需要添加一个新的配置。为此,请单击加号,或使用 Alt+Insert 热键。在打开的列表中,选择 GlassFish Server -> Local: 为 Java EE 开发设置本地环境 - 12
  4. 在打开的窗口中,让我们开始设置配置: 为 Java EE 开发设置本地环境 - 13
  5. 下一步是指示需要部署到服务器的工件。这可以通过“部署”选项卡完成,方法是单击加号 -> Artifact... 为 Java EE 开发设置本地环境 - 14
  6. 选择 dukes-age:war 并单击“确定”: 为 Java EE 开发设置本地环境 - 15
  7. 接下来,单击“应用”,然后单击“确定”保存我们的配置。
配置已创建!

启动应用程序

现在让我们尝试运行该应用程序。
  1. 为此,您可以使用热键 Alt+Shift+F10,或通过菜单“运行”->“运行...”

    并选择我们创建的 dukes-age 配置:

    为 Java EE 开发设置本地环境 - 16

  2. 之后我们在“服务”面板中看到启动日志:

    为 Java EE 开发设置本地环境 - 17
  3. 然后,如果一切都按照说明完成,浏览器将打开,并且很明显没有任何效果:

    为 Java EE 开发设置本地环境 - 18
这就是 IT 世界。即使一切都正确完成,有些事情也可能不起作用。但不用担心:您可以立即描述如何正确执行此操作,但随后一些细微差别就不那么明显了。例如,启动应用程序时IDEA引导我们访问的url是如何生成的?我们来关注一下。我们被重定向到http://localhost:8080/dukes-age-7.0.1/。要了解它的来源 (/dukes-age-7.0.1/),让我们转到 GlassFish 服务器的管理面板。在左侧菜单中,单击“应用程序”项。接下来您将看到已部署的应用程序,包括 dukes-age。当您选择dukes-age应用程序时,您可以看到它的一些特征,包括Context-Root项: 为 Java EE 开发设置本地环境 - 19dukes-age-7.0.1是应用程序的名称和版本。根点。dukes-age 将处理的所有请求都必须以前缀 /dukes-age-7.0.1/ 开头。所以我们有一个根点:/dukes-age-7.0.1。此外,我们之前讨论过我们的应用程序将处理对 /webapi/dukesAge 的请求。让我们将这两件事结合起来并更新我们的配置。
  1. 为此,我们返回 IntelliJ IDEA,然后转到菜单:Run -> Edit Configurations...

  2. 我们选择之前保存的配置并按照下面的截图更新URL:

    为 Java EE 开发设置本地环境 - 20
  3. 让我们保存配置并使用 Ctrl+Shift+F10 热键或使用“服务”面板上的特殊按钮重新启动应用程序:

    为 Java EE 开发设置本地环境 - 21
  4. 重启后,如果一切正确,我们将看到 Duke 的年龄:

    Настройка локального окружения для Java EE разработки - 22
伟大的。我们终于知道杜克已经24岁了。如果您不在 2020 年 4 月开始的接下来几个月内重复上述所有步骤,那么 Duke 可能会老化一点。

结论

在本文中,我们以 GlassFish 4.0 服务器、IntelliJ IDEA 2019.3.1(旗舰版)开发环境和 Java EE SDK 版本 7 为例,了解了如何配置本地环境以使用 Java EE 应用程序。您可以如何:
  • 下载并安装 Java EE SDK 以及 GlassFish 服务器;
  • 通过 PowerShell 停止和启动 GlassFish 服务器;
  • 配置 IntelliJ IDEA,以便您可以将 Java EE 应用程序从 IDE 部署到 GlassFish 服务器并立即启动它们。

奖励任务

  1. 自己重复所有描述的步骤。
  2. 参加Oracle 为 Java EE 初学者开发人员提供的 Java EE 入门课程
  3. 带星号的项目。尝试自己部署第二个first-cup 演示应用程序。该应用程序的交互性更强,并且还可以与 dukes-age 应用程序进行交互。要完成此步骤,您需要独立理解以下问题:
    1. 如何启用 glassFish 服务器内的数据库;
    2. 如何将两个应用程序相互集成(first-cup 内部指示我们在本文中讨论的 dukes-age 端点的路径);
    3. 如何在 Intellij IDEA 中创建新配置以进行首次杯部署(类似于本文中所示的内容);
    4. 可能还有很多其他问题)
PS 虽然进入门槛很高,但这不正是你的动力吗?
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION