forum.bitel.ru http://forum.bitel.ru/ |
|
Ошибка при создании договоров http://forum.bitel.ru/viewtopic.php?f=19&t=8502 |
Страница 1 из 1 |
Автор: | lan31 [ 30 сен 2013, 13:48 ] |
Заголовок сообщения: | Ошибка при создании договоров |
Сервер: вер. 6.0 сборка 1586 от 30.09.2013 12:47:49 os: Linux; java: Java HotSpot(TM) Client VM, v.1.6.0_45 inet вер. 6.0 сборка 1239 от 25.09.2013 01:23:21 Что означает ошибка при создании договоров с помощью глобального скрипта поведения? server.error.log Код: server 09-30/15:32:20 ERROR ["http-bio-/0.0.0.0-8080"-exec-10] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[35] - SELECT id, mid FROM service com.mysql.jdbc.ServerPreparedStatement[37] - SELECT id, mid FROM service com.mysql.jdbc.ServerPreparedStatement[38] - INSERT INTO contract_balance(yy, mm, cid, summa1) VALUES(2013,9,139676,'500.000000') com.mysql.jdbc.ServerPreparedStatement[26] - SELECT * FROM contract WHERE id=139676 [...] com.mysql.jdbc.ServerPreparedStatement[525] - SELECT * FROM inet_device_type_1 WHERE id=2 com.mysql.jdbc.ServerPreparedStatement[512] - SELECT * FROM contract WHERE id=138470 com.mysql.jdbc.ServerPreparedStatement[532] - SELECT * FROM contract WHERE id=138470 java.lang.RuntimeException at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480) at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47) at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261) at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37) at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:406) at bitel.billing.server.ActionBase.freeConnection(ActionBase.java:180) at bitel.billing.server.Executer.doModule(Unknown Source) at bitel.billing.server.Executer$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at bitel.billing.server.Executer.doPost(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:662) |
Автор: | Phricker [ 30 сен 2013, 14:10 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
Закрывайте соединения. Код: String query = " SELECT id FROM contract ";
java.sql.PreparedStatement ps = con.prepareStatement( query ); ResultSet rs = ps.executeQuery(); while ( rs.next() ) { print("cid = " + rs.getInt(1)); } rs.close(); ps.close(); |
Автор: | lan31 [ 06 окт 2013, 13:31 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
Phricker писал(а): Закрывайте соединения. У меня вообще нет собственных запросов SELECT в скрипте.
|
Автор: | Artur [ 07 окт 2013, 13:23 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
lan31 писал(а): Phricker писал(а): Закрывайте соединения. У меня вообще нет собственных запросов SELECT в скрипте.Скрипт в студию. |
Автор: | Cromeshnic [ 07 окт 2013, 13:26 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
Дайте угадаю: Код: ContractManager cm = new ContractManager(con); ... cm.recycle(); - последнюю строчку не сделали? Аналогично остальные менеджеры и DAO, где есть recycle() |
Автор: | lan31 [ 11 окт 2013, 09:29 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
Artur писал(а): Скрипт в студию. Код: import java.text.DecimalFormat;
import bitel.billing.server.contract.bean.ContractManager; import bitel.billing.server.contract.bean.ContractTariffManager; import bitel.billing.server.contract.bean.ContractParameterManager; import bitel.billing.server.contract.bean.PaymentManager; import bitel.billing.server.contract.bean.ChargeManager; import bitel.billing.server.contract.bean.BalanceUtils; import java.sql.PreparedStatement; import com.Ostermiller.util.ExcelCSVParser; import java.math.BigDecimal; import bitel.billing.server.contract.bean.Contract; import bitel.billing.common.TimeUtils; import bitel.billing.server.contract.bean.ContractTariffGroupManager; import bitel.billing.server.contract.bean.ContractTariffGroup; import bitel.billing.server.contract.bean.ContractStatusManager; import bitel.billing.server.contract.bean.ContractStatus; import bitel.billing.common.KernelConst; import ru.bitel.bgbilling.kernel.module.common.bean.User; import bitel.billing.server.contract.bean.ContractTariff; import bitel.billing.server.contract.bean.ContractModuleManager; import bitel.billing.server.contract.bean.ContractModule; import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService; import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ; import bitel.billing.common.IPUtils; import ru.bitel.common.Utils; import bitel.billing.server.npay.bean.ServiceObjectManager; import bitel.billing.server.npay.bean.ServiceObject; import bitel.billing.server.voiceip.bean.VoiceIpLoginManager; import bitel.billing.server.voiceip.bean.VoiceIpLogin; import bitel.billing.server.card.bean.Card; import bitel.billing.server.contract.bean.ContractServiceManager; import bitel.billing.server.contract.bean.ContractService; java.util.Date curdate = new java.util.Date(); Calendar now = new GregorianCalendar(); DecimalFormat format1 = new DecimalFormat( "700000" ); DecimalFormat format2 = new DecimalFormat( "3000000" ); String ip; String ip2; String login; String password; String gr; String ipsf; String ipst; int num; int prefix; public void main( setup, con, conSlave ) { long timeStart = System.currentTimeMillis(); loadFile( "/root/all.csv", setup, con, 0 ); long timeEnd = System.currentTimeMillis(); print( "Process time: " + (timeEnd - timeStart)/1000 + " s." ); } private void loadFile( file, setup, con, patternId ) { int rowNum = 0; error( "Loading " + file ); ContractManager cm = new ContractManager( con ); ContractTariffManager ctm = new ContractTariffManager( con ); ContractParameterManager cpm = new ContractParameterManager( con ); PaymentManager paymentManager = new PaymentManager( con ); ChargeManager chargeManager = new ChargeManager( con ); BalanceUtils bu = new BalanceUtils( con ); String query = "INSERT INTO contract_balance(yy, mm, cid, summa1) VALUES(?,?,?,?)"; PreparedStatement psInsertBalance = con.prepareStatement( query ); psInsertBalance.setInt( 1, now.get( Calendar.YEAR ) ); psInsertBalance.setInt( 2, now.get( Calendar.MONTH ) + 1 ); String[][] data = ExcelCSVParser.parse( new InputStreamReader( new FileInputStream( file ), "windows-1251" ) , ';' ); if( data != null && data.length > 0 ) { final int rowCount = data.length; for( rowNum = 1; rowNum < rowCount; rowNum++ ) { String[] fields = data[rowNum]; if( fields.length < 9 ) { continue; } if( rowNum % 100 == 0 ) { System.out.println( "Count => " + rowNum ); } String fio = fields[0]; String licSchet = fields[1]; String address = fields[2]; String phone = fields[3]; String tariff = fields[4]; iplist = fields[8]; login = fields[9]; password = fields[10]; String tel = fields[11]; gr = fields[12]; String active = fields[13]; String ndog = fields[14]; String inn = fields[15]; String email = fields[16]; String contact = fields[17]; String lo = fields[18]; String phonelst = fields[19]; String pasport = fields[20]; String com = fields[21]; BigDecimal saldo = BigDecimal.ZERO; BigDecimal pay = BigDecimal.ZERO; BigDecimal charge = BigDecimal.ZERO; try { saldo = new BigDecimal( fields[5].replaceAll( " ", "0" ) ); pay = new BigDecimal( fields[6].replaceAll( " ", "0" ) ); charge = new BigDecimal( fields[7].replaceAll( " ", "0" ) ); } catch( Exception ex ) { error( "Error load summ file: " + file + "; line: " + rowNum + "; fio: " + fio ); } String title; if ( gr.equals( "37" ) ) { title = licSchet; } if ( (gr.equals( "47" ) || gr.equals( "42" ) || gr.equals( "20" )) ) { title = format2.format( Utils.parseLong( licSchet ) ); } if ( gr.equals( "10" ) ) { title = format1.format( Utils.parseLong( licSchet ) ); } Contract contract = cm.createFromPattern( patternId, title, TimeUtils.convertDateToCalendar( curdate ), password ); if ( gr.equals( "37" ) ) { contract.setGroups( contract.getGroups() | ( 1L << 0 ) ); contract.setFc(0); val = new BigDecimal (-100); contract.setBalanceLimit ( val ); contract.setBalanceMode( 1 ); // группа тарифов ContractTariffGroupManager ctgm = new ContractTariffGroupManager( con ); ContractTariffGroup contractTariffGroup = new ContractTariffGroup(); contractTariffGroup.setContractID( contract.getID() ); contractTariffGroup.setTariffGroupId( 1 ); contractTariffGroup.setDate1( TimeUtils.convertDateToCalendar( curdate ) ); ctgm.updateContractTariffGroup( contractTariffGroup ); } if ( (gr.equals( "47" ) || gr.equals( "42" )) ) { contract.setGroups( contract.getGroups() | ( 1L << 0 ) ); contract.setFc(1); val = new BigDecimal (-100000); contract.setBalanceLimit ( val ); contract.setBalanceMode( 0 ); } if ( gr.equals( "10" ) ) { contract.setGroups( contract.getGroups() | ( 1L << 1 ) ); contract.setFc(0); val = new BigDecimal (-100); contract.setBalanceLimit ( val ); contract.setBalanceMode( 1 ); // группа тарифов ContractTariffGroupManager ctgm = new ContractTariffGroupManager( con ); ContractTariffGroup contractTariffGroup = new ContractTariffGroup(); contractTariffGroup.setContractID( contract.getID() ); contractTariffGroup.setTariffGroupId( 2 ); contractTariffGroup.setDate1( TimeUtils.convertDateToCalendar( curdate ) ); ctgm.updateContractTariffGroup( contractTariffGroup ); } if ( gr.equals( "20" ) ) { contract.setGroups( contract.getGroups() | ( 1L << 1 ) ); contract.setFc(1); val = new BigDecimal (-100000); contract.setBalanceLimit ( val ); contract.setBalanceMode( 0 ); } contract.setComment( fio ); if ( active.equals( "f" ) ) { csm = new ContractStatusManager(con); ContractStatus newStatus = new ContractStatus(); newStatus.setContractId(contract.getId()); newStatus.setDateFrom(curdate); newStatus.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED); csm.changeStatus(newStatus, User.USER_SERVER); contract.setStatus(KernelConst.CONTRACT_STATUS_SUSPENDED); csm.recycle(); } cm.updateContract( contract ); cid = contract.getID(); cpm.setStringParam( contract.getID(), 24, address, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 3, fio, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 4, licSchet, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 5, tariff, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 15, iplist, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 16, ndog, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 17, inn, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 18, email, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 19, phone, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 20, contact, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 21, lo, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 22, phonelst, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 23, pasport, User.USER_SERVER ); cpm.setStringParam( contract.getID(), 24, com, User.USER_SERVER ); // баланс if( saldo.compareTo( BigDecimal.ZERO ) != 0 ) { psInsertBalance.setInt( 3, contract.getID() ); psInsertBalance.setBigDecimal( 4, saldo ); psInsertBalance.executeUpdate(); } bu.updateBalance( curdate, contract.getID() ); if (!phonelst.equals("")) { ContractModuleManager manager = new ContractModuleManager( con ); ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( 6 ); manager.addContractModule( cid, 6 ); ContractTariff contractTariff = new ContractTariff(); contractTariff.setContractID( contract.getID() ); contractTariff.setTariffPlanID( 18 ); contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) ); ctm.updateContractTariff( contractTariff ); String[] phonearray = phonelst.split( "," ); int nphone; nphone = phonearray.length; for (; nphone > 0;) { nphone--; String sub1 = phonearray[nphone].substring(0, 1); int rep = 0; String newphone; StringBuffer sb = new StringBuffer(phonearray[nphone]); if (sub1.equals("8")) { sb.replace(0, 1, "7"); newphone = sb.toString(); rep = 1; } VoiceIpLoginManager lm = new VoiceIpLoginManager( con, 6 ); VoiceIpLogin login = new VoiceIpLogin(); login.setCid( contract.getID() ); login.setStatus( true ); login.setDate1( curdate ); login.setType(1); login = lm.addLogin( login, Setup.getSetup().getModuleSetup( 6 ) ); Set aliases = new HashSet(); if (rep == 1) { aliases.add( newphone ); } else { aliases.add( phonearray[nphone] ); } lm.updateAliases( login.getId(), aliases ); } } // список ип адресов в массив. String[] iparray = iplist.split( "," ); if (!iplist.equals("")) { // ТП назначаем // установка тарифа ContractTariff contractTariff = new ContractTariff(); contractTariff.setContractID( contract.getID() ); int itariff; if (!(tariff == "")) { itariff = Integer.parseInt(tariff); } switch (itariff) { case 75: contractTariff.setTariffPlanID( 1 ); break; case 76: contractTariff.setTariffPlanID( 2 ); break; case 77: contractTariff.setTariffPlanID( 3 ); break; case 145: contractTariff.setTariffPlanID( 4 ); break; case 154: contractTariff.setTariffPlanID( 1 ); break; case 155: contractTariff.setTariffPlanID( 2 ); break; case 156: contractTariff.setTariffPlanID( 3 ); break; case 7000: contractTariff.setTariffPlanID( 21 ); break; case 7010: contractTariff.setTariffPlanID( 22 ); break; case 7020: contractTariff.setTariffPlanID( 23 ); break; case 7030: contractTariff.setTariffPlanID( 24 ); break; case 7040: contractTariff.setTariffPlanID( 25 ); break; case 8000: contractTariff.setTariffPlanID( 26 ); break; case 8010: contractTariff.setTariffPlanID( 27 ); break; case 8020: contractTariff.setTariffPlanID( 28 ); break; case 8030: contractTariff.setTariffPlanID( 29 ); break; case 5000: contractTariff.setTariffPlanID( 21 ); break; case 5100: contractTariff.setTariffPlanID( 21 ); break; case 5200: contractTariff.setTariffPlanID( 21 ); break; case 5300: contractTariff.setTariffPlanID( 21 ); break; case 5400: contractTariff.setTariffPlanID( 21 ); break; case 3101: contractTariff.setTariffPlanID( 21 ); break; case 3201: contractTariff.setTariffPlanID( 21 ); break; case 3203: contractTariff.setTariffPlanID( 21 ); break; case 3210: contractTariff.setTariffPlanID( 21 ); break; case 3301: contractTariff.setTariffPlanID( 21 ); break; case 93: contractTariff.setTariffPlanID( 6 ); break; case 118: contractTariff.setTariffPlanID( 7 ); break; case 119: contractTariff.setTariffPlanID( 8 ); break; case 146: contractTariff.setTariffPlanID( 9 ); break; case 153: contractTariff.setTariffPlanID( 10 ); break; case 105: contractTariff.setTariffPlanID( 11 ); break; default: contractTariff.setTariffPlanID( 5 ); break; } contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) ); ctm.updateContractTariff( contractTariff ); // ТП для IP if ( (tariff.equals( "154" ) || tariff.equals( "155" ) || tariff.equals( "156" ) ) ) { ContractTariff contractTariff = new ContractTariff(); contractTariff.setContractID( contract.getID() ); // + ip contractTariff.setTariffPlanID( 20 ); contractTariff.setDate1( TimeUtils.convertDateToCalendar( curdate ) ); ctm.updateContractTariff( contractTariff ); } // Модуль добавляем ContractModuleManager manager = new ContractModuleManager( con ); ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( 1 ); manager.addContractModule( cid, 1 ); } if ( (active.equals( "t" ) && (gr.equals( "47" ) || gr.equals( "42" )) ) ) { // Модуль добавляем ContractModuleManager manager = new ContractModuleManager( con ); ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( 11 ); } // Цикл сколько ип в массиве столько раз выполняться int nip; nip = iparray.length; for (; nip > 0;) { nip--; // проверка первого [0] элемента в массиве на префикс String[] tokens = iparray[nip].split( "/" ); // если есть префикс num = tokens.length; ipsf = tokens[0]; // Если токена 2 то есть префикс if (num == 2) { prefix = 1; mask = tokens[1]; int maskBit = Integer.parseInt(mask); long lnet = IPUtils.convertStringIPtoLong (ipsf); long lmask = ( 0xFFFFFFFFl << ( 32 - maskBit ) ) & 0xFFFFFFFFl; public static final long[] range = IPUtils.netMaskToRange(lnet, lmask); ipst = IPUtils.convertLongIpToString(range[1]); } else { prefix = 0; } if (!ipsf.equals("")) { setIp( ipsf, ipst, contract.getID()); } } if ( (gr.equals( "37" ) || gr.equals( "10" )) ) { ContractModuleManager manager = new ContractModuleManager( con ); ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( 3 ); manager.addContractModule( cid, 3 ); ServiceObjectManager som = new ServiceObjectManager( con, 3 ) ; // установка абонплаты object = new ServiceObject(); object.setContractId( cid ); if ( gr.equals( "37" ) ) { // ид услуги модуля npay object.setServiceId( 2 ); } if ( (gr.equals( "10" ) || gr.equals( "20" )) ) { // ид услуги модуля npay object.setServiceId( 12 ); } object.setDate1( new Date() ); som.updateServiceObject( object ); } if ( gr.equals( "10" ) ) { ContractModuleManager manager = new ContractModuleManager( con ); ContractModule module = new ContractModule(); module.setContractId( cid ); module.setModuleId( 5 ); manager.addContractModule( cid, 5 ); object = new Card(); object.setContractId( cid ); object.setServiceActivateId( 13 ); object.setDateBegin( new Date() ); ContractServiceManager csm = new ContractServiceManager( con ); ContractService cs = new ContractService(); cs.setContractId(cid); cs.setServiceId(14); cs.setDateFrom( new Date() ); csm.updateContractService( "new", cs); } if ( (tariff.equals( "154" ) || tariff.equals( "155" ) || tariff.equals( "156" )) ) { ServiceObjectManager som = new ServiceObjectManager( con, 3 ) ; object = new ServiceObject(); object.setContractId( cid ); object.setServiceId( 6 ); object.setDate1( new Date() ); som.updateServiceObject( object ); } } } cm.recycle(); psInsertBalance.close(); } private void setIp (ipsf, ipst, cid) { optionList = new ArrayList(); final ServerContext context = ServerContext.get(); final InetServService servService = context.newService( InetServService.class, 1 ); { InetServ serv = new InetServ(); int ipif = IPUtils.convertStringIPtoInt(ipsf); int ipit = IPUtils.convertStringIPtoInt(ipst); serv.setAddressFrom( Utils.convertIntToBytes( ipif ) ); if (prefix == 0) { ipit = ipif; } serv.setAddressTo( Utils.convertIntToBytes( ipit ) ); serv.setIpResourceId( 1 ); // id ресурса ip адресов, из которого диапазон // интернет логин String cid2 = Integer.toString(cid); serv.setLogin(cid2); serv.setPassword("Redback"); // Интернет пароль // тип сервиса serv.setTypeId(4); if ( (gr.equals( "37" ) || gr.equals( "42" )) ) { serv.setDeviceId(12); serv.setInterfaceId(0); } if ( gr.equals( "47" ) ) { serv.setDeviceId(13); serv.setInterfaceId(0); } if ( gr.equals( "10" ) ) { serv.setDeviceId(12); serv.setInterfaceId(0); } if ( gr.equals( "20" ) ) { serv.setDeviceId(14); serv.setInterfaceId(0); } serv.setVlan(1); serv.setDateFrom( new Date() ); serv.setContractId(cid); servService.inetServUpdate( serv, optionList, false, false, 0 ); } } |
Автор: | stark [ 28 окт 2013, 18:47 ] |
Заголовок сообщения: | Re: Ошибка при создании договоров |
Все менеджеры типа этих Код: ContractTariffGroupManager ctgm = new ContractTariffGroupManager( con ); ContractModuleManager manager = new ContractModuleManager( con ); Создавайте вне цикла, сверху, один раз. Если не поможет, то выложите ошибку сюда целиком. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |