code: public Map<String, Object> toMap(StreamMessage message) throws ConvertFailException
      {
          if (this.propUtilBean == null)
          {
              this.propUtilBean = new PropertyUtilsBean();
          }
  
          // デフォルト動作としてソースコード上の記述順に
          // Key(フィールド名)、Value（フィールド値)を取得する。
          Map<String, Object> result = new LinkedHashMap<String, Object>();
  
          try
          {
              PropertyDescriptor[] descriptors = this.propUtilBean.getPropertyDescriptors(message);
              for (int i = 0; i < descriptors.length; i++)
              {
                  String name = descriptors[i].getName();
                  if (descriptors[i].getReadMethod() != null)
                  {
                      result.put(name, this.propUtilBean.getProperty(message, name));
                  }
              }
          }
          catch (Exception ex)
          {
              // AbstractMessageConverterのデフォルト動作においては
              // IllegalAccessException、InvocationTargetException、NoSuchMethodExceptionの
              // 3種類の例外が発生するが、継承クラスのインタフェースへの影響を抑えるため、
              // 例外発生時は一律でConvertFailExceptionクラスでラッピングして投げるようにする。
              throw new ConvertFailException(ex);
          }
  
          return result;
      }
docs: メッセージをKey-ValueのMapに変換する。<br>
  
  @param message メッセージ
  @return 変換したKey-ValueのMap
  @throws ConvertFailException 変換失敗時