Скрипт закрытия соединений

Материал из BiTel WiKi

Перейти к: навигация, поиск

Скрипт сброса соединений для динкода

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." );
		}
	}
Личные инструменты