/**
   * TelegramListenerのクラスをJavelin設定から読み込み、登録する。 クラスのロードは、以下の順でクラスローダでのロードを試みる。
   *
   * <ol>
   *   <li>JavelinClientThreadをロードしたクラスローダ
   *   <li>コンテキストクラスローダ
   * </ol>
   *
   * @param listeners 利用するTelegramListener名
   */
  private void registerTelegramListeners(final String[] listeners) {
    String key = "";
    String message = "";
    for (String listenerName : listeners) {
      try {
        if ("".equals(listenerName)) {
          continue;
        }

        Class<?> listenerClass = loadClass(listenerName);
        Object listener = listenerClass.newInstance();
        if (listener instanceof TelegramListener) {
          addTelegramListener((TelegramListener) listener);

          key = "javelin.communicate.JavelinClientThread.regist";
          message = CommunicatorMessages.getMessage(key, listenerName);
          SystemLogger.getInstance().info(message);
        } else {
          key = "javelin.communicate.JavelinClientThread.notImplement";
          message = CommunicatorMessages.getMessage(key, listenerName);
          SystemLogger.getInstance().info(message);
        }
      } catch (Exception ex) {
        key = "javelin.communicate.JavelinClientThread.registError";
        message = CommunicatorMessages.getMessage(key, listenerName);
        SystemLogger.getInstance().warn(message, ex);
      }
    }
  }
  /**
   * クラスをロードする。 以下の順でクラスローダでのロードを試みる。
   *
   * <ol>
   *   <li>JavelinClientThreadをロードしたクラスローダ
   *   <li>コンテキストクラスローダ
   * </ol>
   *
   * @param className ロードするクラスの名前。
   * @return ロードしたクラス。
   * @throws ClassNotFoundException 全てのクラスローダでクラスが見つからない場合
   */
  private Class<?> loadClass(final String className) throws ClassNotFoundException {

    Class<?> clazz;
    try {
      clazz = Class.forName(className);
    } catch (ClassNotFoundException cnfe) {
      String key = "javelin.communicate.JavelinClientThread.loadError";
      String message = CommunicatorMessages.getMessage(key, className);
      SystemLogger.getInstance().info(message);
      clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
    }

    return clazz;
  }