/** ソケットの再接続 */
  private synchronized void reconnectNotificationSocket() {
    apnsInputMonitoringThread = null;

    // 既存の接続をクローズ
    ApnsUtil.close(apnsNotificationSocket);

    // パケット送信量をリセット
    packetSize = 0;

    // Socket取得
    apnsNotificationSocket = null;
    apnsNotificationSocket = ApnsUtil.createAPNSGatewaySocket(isProduction, factory, socksProxy);

    // APNsからの入力待ちスレッドを開始
    try {
      apnsInputMonitoringThread =
          new ApnsInputMonitoringThread(apnsNotificationSocket.getInputStream());
      apnsInputMonitoringThread.start();
    } catch (IOException e) {
      logger.info("APNs入力ストリーム取得エラー", e);
    }
    logger.debug("APNsへのSocket通信を構築または再構築しました。");
  }