Скрипт закрытия соединений
Материал из BiTel WiKi
Версия от 06:42, 27 октября 2015; Phricker (Обсуждение | вклад)
Скрипт сброса соединений для динкода
package ru.ellcom.bgbilling.scripts.inet; import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService; import ru.bitel.bgbilling.modules.inet.api.common.service.InetSessionService; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class breakSessions extends GlobalScriptBase { static int INET_MID = 12; //ID модуля Inet @Override public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { Connection con = connectionSet.getConnection(); ServerContext context = ServerContext.get(); InetSessionService inetServ = context.getService(InetSessionService.class, INET_MID); int count = 0; print("Start"); long timeStart = System.currentTimeMillis(); //Выбор ID соединений по каким-либо параметрам (в данном случае по определенному устройству и статусу = 1 (активное соединение)) String query = " SELECT id FROM inet_connection_" + INET_MID + " WHERE deviceId = 1612 AND STATUS = 1 "; PreparedStatement ps = con.prepareStatement( query ); ResultSet rs = ps.executeQuery(); while ( rs.next() ) { count++; long sessionId = rs.getInt( 1 ); //inetServ.connectionClose() - аналог закрытия соединения в мониторе соединений inetServ.connectionClose(sessionId); //inetServ.connectionFinish() - аналог сброса зависших соединений //inetServ.connectionFinish(sessionId); } rs.close(); ps.close(); print("Сброшено " + count + " соединений"); long timeEnd = System.currentTimeMillis(); print( "Process time: " + (timeEnd - timeStart)/1000 + " s." ); } }