Вот в биллинге как раз. Читал многие ваши посты на тему определения состояния сессии/коннекта (возможно путаю понятия) и рекомендованные схемы для ISG с по сервисным аккаунтигом и без такого.
Вчера получилось устранить разрыв сессии. Я не силен в Jave, флаг sa.radius.connection.withoutBreak =1 не помогал мне. Родительская сессия безнаджено получала connection remove из InetConnectionManager.
Я не знаю Java (хотя купил уже книжки по ней). Но вот как у меня получилось устранить разрыв - в операторе super я поменял аргумент со значения по умолчанию false на true
класс SmartEdgeClipsServiceActivator
Код:
public SmartEdgeClipsServiceActivator()
{
super( true );// по умолчанию сбрасываем соединение, чтобы переполучить ip адрес
}
и выставил значения флагов в конфигов
Код:
# При получении старт/стоп-пакета в сервисной сессии ISG, если имя сервиса ISG совпадает, то состояние сессии disable/enable
radius.serviceName.disable=RSE-REJECT
# Создавать соединение сразу после отправки Access-Accept
connection.start.fromAccept=1
# Нужно ли посылать CoA при переводе из disable в enable
sa.radius.connection.coa.onEnable=1
# Не выдаем DHCP NaK, не инициируем разрыв из connectionModify.
sa.radius.connection.withoutBreak =1
# при значении 1 InetAccess при вызове для изменения состояния метода connectionModify из ServiceActivator
# поменяет состояние в БД (вызовет e.setConnectionStateModified( true ))
sa.radius.connection.stateModify=1
В результате родительская сессия перестала рваться и сервисная сессия стала вроде бы корректно создаваться и уничтожаться без рестарта родительской сессии.
Амир, правильно ли я сделал или нет?
Меня смущает, что я залез в код класса который идет из коробки и он "затрется" при обновлении, и возможно это какое-то топорное решение (если вообще решение).