Skip to main content
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Java樣式

貢獻者

Java自訂外掛程式會直接與資料庫、執行個體等應用程式互動。

限制

使用Java程式設計語言開發外掛程式時、您應該注意到某些限制。

外掛程式特性 Java外掛程式

複雜度

從低到中

記憶體佔用空間

最高10至20 MB

相依於其他程式庫

用於應用程式通訊的程式庫

執行緒數量

1.

執行緒執行時間

不到一小時

Java限制的理由

此解決方案的目標SnapCenter 是確保應用程式整合持續、安全且健全。藉由支援Java外掛程式、外掛程式可能會導致記憶體洩漏及其他不必要的問題。這些問題很難解決、尤其是為了讓事情變得簡單易用。如果外掛程式的複雜度不太複雜、則開發人員較不可能導入錯誤。Java外掛程式的危險在於它們與SnapCenter Sof the Sof the Sof the Same JVM.外掛程式當機或洩漏記憶體時、也可能對代理程式造成負面影響。

支援的方法

方法 必要 說明 何時及由誰呼叫?

版本

是的

需要傳回外掛程式的版本。

由伺服器或代理程式要求外掛程式的版本。SnapCenter

靜止

是的

需要在應用程式上執行靜止。在大多數情況下、這表示將應用程式置於 SnapCenter 伺服器可以建立備份的狀態(例如、 Snapshot )。

在該伺服器SnapCenter 建立Snapshot複本或執行一般備份之前。

取消靜止

是的

需要在應用程式上執行靜止。在大多數情況下、這表示應用程式會恢復正常運作狀態。

在 SnapCenter 伺服器建立 Snapshot 或擁有之後 一般執行備份。

清理

負責清除外掛程式需要清理的任何項目。

當在伺服器SnapCenter 上完成工作流程(成功或失敗)時。

clonewePre

應在執行複製作業之前執行必要的動作。

當使用者觸發「clonewal Vol」或「clonewlun」動作、並使用內建的複製精靈(GUI / CLI)。

clonePost

應在執行複製作業之後執行必要的動作。

當使用者觸發「clonewal Vol」或「clonewlun」動作、並使用內建的複製精靈(GUI / CLI)。

重述預先發

應在叫用還原作業之前執行必要的動作。

當使用者觸發還原作業時。

還原

負責執行應用程式的還原/還原。

當使用者觸發還原作業時。

應用程式版本

擷取由外掛程式管理的應用程式版本。

在每個工作流程(例如備份/還原/複製)中、ASUP資料收集的一部分。

教學課程

本節說明如何使用Java程式設計語言建立自訂外掛程式。

設定月食

  1. 在Eclipse中建立新的Java專案「圖則外掛程式」

  2. 單擊*完成*

  3. 右鍵單擊*新項目*→*屬性*→* Java建置路徑*→*資源庫*→*新增外部JAR*

  4. 瀏覽至主機代理程式的./lib/資料夾、然後選取Jar scAgent-5.0-core.jar和common-5.0.jar

  5. 選取專案、然後在* src資料夾*→*新增*→套件*上按一下滑鼠右鍵、然後建立名稱為com.netapp.snapcreator.agent.plugin.TutorialPlugin的新套件

  6. 在新套件上按一下滑鼠右鍵、然後選取「New(新增)」→「Java Class(Java類別)」。

    1. 輸入圖則外掛程式名稱。

    2. 按一下超類別瀏覽按鈕、然後搜尋「*抽象外掛程式」。只能顯示一個結果:

       "AbstractPlugin - com.netapp.snapcreator.agent.nextgen.plugin".
      .. 單擊*完成*。
      .. Java類別:
      package com.netapp.snapcreator.agent.plugin.TutorialPlugin;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.Describe
      Result;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.Result;
      import
      com.netapp.snapcreator.agent.nextgen.common.result.VersionR
      esult;
      import
      com.netapp.snapcreator.agent.nextgen.context.Context;
      import
      com.netapp.snapcreator.agent.nextgen.plugin.AbstractPlugin;
      public class TutorialPlugin extends AbstractPlugin {
        @Override
        public DescribeResult describe(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public Result quiesce(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public Result unquiesce(Context context) {
          // TODO Auto-generated method stub
          return null;
        }
        @Override
        public VersionResult version() {
          // TODO Auto-generated method stub
          return null;
        }
      }

實作所需方法

靜止、取消靜止和版本是每個自訂Java外掛程式必須實作的必要方法。

以下是傳回外掛程式版本的版本方法。

@Override
public VersionResult version() {
    VersionResult versionResult = VersionResult.builder()
                                            .withMajor(1)
                                            .withMinor(0)
                                            .withPatch(0)
                                            .withBuild(0)
                                            .build();
    return versionResult;
}
Below is the implementation of quiesce and unquiesce method. These will be interacting with   the application, which is being protected by SnapCenter Server. As this is just a tutorial, the
application part is not explained, and the focus is more on the functionality that SnapCenter   Agent provides the following to the plug-in developers:
@Override
  public Result quiesce(Context context) {
    final Logger logger = context.getLogger();
    /*
      * TODO: Add application interaction here
    */
logger.error("Something bad happened.");
logger.info("Successfully handled application");
    Result result = Result.builder()
                    .withExitCode(0)
                    .withMessages(logger.getMessages())
                    .build();
    return result;
}

方法會在內容物件中傳遞。其中包含多個協助工具、例如Logger和內容存放區、以及目前作業的相關資訊(工作流程ID、工作ID)。我們可以呼叫最終Logger logger = context.getLogger();來取得記錄程式。記錄程式物件提供類似於其他記錄架構的方法、例如登入。在結果物件中、您也可以指定結束程式碼。在此範例中、零會傳回、因為沒有問題。其他結束代碼可對應至不同的故障情況。

使用結果物件

結果物件包含下列參數:

參數 預設 說明

組態

空組態

此參數可用於將組態參數傳回伺服器。它可以是外掛程式想要更新的參數。此變更是否實際反映在SnapCenter 支援伺服器上的組態中、取決於組態中的APP_CON_PONY面=Y或N參數。

exitCode

0

表示作業狀態。「0」表示作業已成功執行。其他值表示錯誤或警告。

stdout

空白清單

這可用來將stdout訊息傳回SnapCenter 至該伺服器。

stderr

空白清單

這可用來將stderr訊息傳回SnapCenter 至該伺服器。

訊息

空白清單

此清單包含外掛程式要傳回伺服器的所有訊息。該伺服器會在CLI或GUI中顯示這些訊息。SnapCenter

此功能可為建置者提供支援SnapCenter ("建構者模式")的所有結果類型。這讓使用者變得非常簡單:

Result result = Result.builder()
                    .withExitCode(0)
                    .withStdout(stdout)
                    .withStderr(stderr)
                    .withConfig(config)
                    .withMessages(logger.getMessages())
                    .build()

例如、將結束程式碼設為0、設定stdout和Stderr的清單、設定組態參數、以及附加將傳送回伺服器的記錄訊息。如果您不需要所有參數、請只傳送所需的參數。由於每個參數都有一個預設值、因此如果您從下列程式碼中移除.withExitCode(0)、則不會影響結果:

Result result = Result.builder()
                      .withExitCode(0)
                      .withMessages(logger.getMessages())
                      .build();

版本結果

版本結果會將SnapCenter 外掛程式版本通知到該伺服器。由於它也從結果繼承、因此包含config、exitCode、stdout、stderr和Messages參數。

參數 預設 說明

主要

0

外掛程式的主要版本欄位。

次要

0

外掛程式的次要版本欄位。

修補程式

0

外掛程式的「修補版本」欄位。

建置

0

外掛程式的建置版本欄位。

例如:

VersionResult result = VersionResult.builder()
                                  .withMajor(1)
                                  .withMinor(0)
                                  .withPatch(0)
                                  .withBuild(0)
                                  .build();

使用內容物件

內容物件提供下列方法:

內容方法 目的

字串getWorkflowId();

傳回SnapCenter 目前工作流程使用的流程ID。

config getconfig();

傳回SnapCenter 正在從功能表伺服器傳送至代理程式的組態。

工作流程ID

Workflow ID是SnapCenter 指由伺服器用來參照特定執行中工作流程的ID。

組態

此物件包含(大部分)使用者可在SnapCenter 物件伺服器的組態中設定的參數。不過、由於安全性原因、部分參數可能會在伺服器端篩選。以下是如何存取Config和擷取參數的範例:

final Config config = context.getConfig();
String myParameter =
config.getParameter("PLUGIN_MANDATORY_PARAMETER");

現在、「//myParexer」包含SnapCenter 從效能分析伺服器上的組態讀取的參數。如果組態參數鍵不存在、則會傳回空白字串("")。

匯出外掛程式

您必須匯出外掛程式、才能將其安裝在SnapCenter 該支援主機上。

在Eclipse中執行下列工作:

  1. 在外掛程式的基礎套件上按一下滑鼠右鍵(請參閱範例com.netapp.snapcreator.agent.plugin.TutorialPlugin)。

  2. 選擇*匯出*→* Java*→* Jar檔案*

  3. 單擊 * 下一步 * 。

  4. 在下列視窗中、指定目的地Jar檔案路徑:tutorial_plugin.jar外掛程式的基礎類別名稱為"TutorialPlugin.class"、外掛程式必須新增至名稱相同的資料夾。

如果外掛程式取決於其他程式庫、您可以建立下列資料夾:lib/

您可以新增與外掛程式相依的Jar檔案(例如資料庫驅動程式)。當程式庫載入外掛程式時、它會自動將此資料夾中的所有Jar檔案與其相關聯、並將其新增至類路徑。SnapCenter