JavaRush /Java Blog /Random-TW /設定本機 Java EE 開發環境
zor07
等級 31
Санкт-Петербург

設定本機 Java EE 開發環境

在 Random-TW 群組發布
在本文中,我們將設定一個執行 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