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

Java樣式

貢獻者

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

限制

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

外掛程式特性 Java外掛程式

複雜度

從低到中

記憶體佔用空間

最高10至20 MB

相依於其他程式庫

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

執行緒數量

1.

執行緒執行時間

不到一小時

Java限制的理由

此解決方案的目標SnapCenter 是確保應用程式整合持續、安全且健全。藉由支援Java外掛程式、外掛程式可能會導致記憶體洩漏及其他不必要的問題。這些問題很難解決、尤其是為了讓事情變得簡單易用。如果外掛程式的複雜度不太複雜、則開發人員較不可能導入錯誤。Java 外掛程式的危險在於其存在 在與 SnapCenter 代理程式本身相同的 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();來取得記錄程式。記錄程式物件提供類似於其他記錄架構的方法、例如登入。在結果物件中、您也可以指定結束程式碼。在此範例中、零會傳回、因為沒有問題。其他結束代碼可對應至不同的故障情況。

使用結果物件

結果物件包含下列參數:

參數 預設 說明

組態

空白 組態

此參數可用於將組態參數傳回伺服器。IT 可以是外掛程式想要更新的參數。這項變更是否如此 實際反映在 SnapCenter 伺服器上的組態中、需視情況而定 組態中的 APP_CONF_PROTYPE=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 外掛程式版本通知到該伺服器。因為它也會繼承 因此、它包含組態、 exitCode 、 stdout 、 stderr 和訊息參數。

參數 預設 說明

主要

0%

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

次要

0%

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

修補程式

0%

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

建置

0%

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

例如:

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

使用內容物件

內容物件提供下列方法:

內容方法 目的

字串 getWorkflowId() ;

傳回 SnapCenter 伺服器用於的工作流程識別碼 目前工作流程。

config getconfig();

傳回從 SnapCenter 伺服器傳送至的組態 代理程式。

工作流程ID

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

組態

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

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

"//myParameter " 現在包含從 SnapCenter 伺服器上的組態讀取的參數 如果組態參數金鑰不存在、則會傳回空白字串( " )。

匯出外掛程式

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

在Eclipse中執行下列工作:

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

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

  3. 單擊 * 下一步 * 。

  4. 在以下窗口中,指定目標 Jar 文件路徑: tutorial_plugin.jar 外掛程式的基礎類別名稱為 TutorialPlugin.class 、外掛程式必須新增至資料夾 名稱相同。

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

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