forum.bitel.ru http://forum.bitel.ru/ |
|
Many statements was open at connection close http://forum.bitel.ru/viewtopic.php?f=19&t=8500 |
Страница 1 из 2 |
Автор: | skyb [ 30 сен 2013, 11:44 ] |
Заголовок сообщения: | Many statements was open at connection close |
Есть самописный скрипт Код: import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.lang.Math; import java.math.BigDecimal; import java.math.BigInteger; import java.text.NumberFormat; import java.util.Locale; import javax.mail.Multipart; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeBodyPart; import java.sql.*; import java.util.*; import java.util.Date; import bitel.billing.server.npay.bean.IPNModuleAmount; import bitel.billing.common.TimeUtils; import bitel.billing.server.contract.bean.ContractEmailParamValue; import bitel.billing.server.contract.bean.ContractParameterManager; import bitel.billing.server.util.MailMsg; public class InactiveCustomersReport extends GlobalScriptBase { @Override public void execute( Setup setup1, ConnectionSet connectionSet2 ) throws Exception { Vector objects = new Vector(); MailMsg msg = new MailMsg( setup1 ); StringBuilder report_title = new StringBuilder(); /* StringBuilder report_comment = new StringBuilder(); StringBuilder report = new StringBuilder(); StringBuilder report_all_null = new StringBuilder(); StringBuilder report_amount1_null = new StringBuilder(); StringBuilder report_amount2_null = new StringBuilder(); StringBuilder report_amount3_null = new StringBuilder(); StringBuilder report_amount1_not_null = new StringBuilder(); StringBuilder report_amount2_not_null = new StringBuilder(); StringBuilder report_amount3_not_null = new StringBuilder(); */ //Делаем возможность отправки письма в html Multipart multipart = new MimeMultipart(); MimeBodyPart htmlPart = new MimeBodyPart(); Connection con = connectionSet2.getConnection(); Calendar c = Calendar.getInstance(); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c.add( Calendar.DAY_OF_MONTH, -1 ); c1.add( Calendar.DAY_OF_MONTH, -2 ); c2.add( Calendar.DAY_OF_MONTH, -3 ); BigDecimal dd = new BigDecimal( 52428800 ); BigDecimal aa = new BigDecimal( 1048576 ); //c2.add( c.DAY_OF_MONTH, -2 ); SimpleDateFormat dateFormat_table = new SimpleDateFormat("yyyyMM"); SimpleDateFormat dateFormat_date = new SimpleDateFormat("yyyy-MM-dd"); int i=1; //print (dateFormat_table.format( new Date() )); //print (dateFormat_date.format( c.getTime() )); //print (dateFormat_date.format( c2.getTime() )); objects.addElement("mail@mail.ru"); String query = " SELECT c.id, c.title, c.comment FROM contract as c LEFT JOIN contract_module as cm on c.id = cm.cid and cm.mid = 2 WHERE c.status = 0 and c.gr&(1<<0)>0 and c.date2 is null and cm.cid is not null" ; PreparedStatement contractPs = con.prepareStatement( query ); ResultSet contractRs = contractPs.executeQuery(); while ( contractRs.next() ) { int id = contractRs.getInt( 1 ); String title = contractRs.getString( 2 ); String comment = contractRs.getString( 3 ); String query_first_day = " SELECT sum(amount) FROM ipn_contract_data_2_"+dateFormat_table.format( c2.getTime() )+" WHERE dt='"+dateFormat_date.format( c2.getTime() )+"' AND cid=" + id; String query_second_day = " SELECT sum(amount) FROM ipn_contract_data_2_"+dateFormat_table.format( c1.getTime() )+" WHERE dt='"+dateFormat_date.format( c1.getTime() )+"' AND cid=" + id; String query_third_day = " SELECT sum(amount) FROM ipn_contract_data_2_"+dateFormat_table.format( c.getTime() )+" WHERE dt='"+dateFormat_date.format( c.getTime() )+"' AND cid=" + id; PreparedStatement contractPs_first_day = con.prepareStatement( query_first_day ); ResultSet contractRs_first_day = contractPs_first_day.executeQuery(); PreparedStatement contractPs_second_day = con.prepareStatement( query_second_day ); ResultSet contractRs_second_day = contractPs_second_day.executeQuery(); PreparedStatement contractPs_third_day = con.prepareStatement( query_third_day ); ResultSet contractRs_third_day = contractPs_third_day.executeQuery(); while ( contractRs_first_day.next() && contractRs_second_day.next() && contractRs_third_day.next() ) { BigDecimal amount1 = contractRs_first_day.getBigDecimal( 1 ); BigDecimal amount2 = contractRs_second_day.getBigDecimal( 1 ); BigDecimal amount3 = contractRs_third_day.getBigDecimal( 1 ); if (amount1 != null && amount2 != null && amount3 != null ) { BigDecimal first_summa = amount1.add(amount2); BigDecimal traf_sum = amount3.add(first_summa); if (traf_sum.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = traf_sum.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+ i++ +"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment +"</tr>" ); //report.append(traf_sum_mb+" МБ" ); //print ("traf_sum_mb " + traf_sum_mb + " title " + title); } } else if (amount1 == null && amount2 == null && amount3 == null) { report_title.append("<tr><td>"+ i++ +"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>0 МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_all_null.append( " 0 МБ\n\n" ); // print ("title " + title); } else if (amount1 != null && amount2 == null && amount3 == null) { if (amount1.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = amount1.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+ i++ +"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount1_not_null.append( traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb1 " + traf_sum_mb + " title " + title); } } else if (amount1 == null && amount2 != null && amount3 == null) { if (amount2.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = amount2.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+i+++"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount2_not_null.append( traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb2 " + traf_sum_mb + " title " + title); } } else if (amount1 == null && amount2 == null && amount3 != null) { if (amount3.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = amount3.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+i+++"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount3_not_null.append(traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb3 " + traf_sum_mb + " title " + title); } } else if (amount1 != null && amount2 != null && amount3 == null) { BigDecimal traf_sum = amount1.add(amount2); if (traf_sum.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = traf_sum.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+i+++"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount3_null.append( traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb4 " + traf_sum_mb + " title " + title); } } else if (amount1 != null && amount2 == null && amount3 != null) { BigDecimal traf_sum = amount1.add(amount3); if (traf_sum.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = traf_sum.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+i+++"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td></td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount2_null.append(traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb5 " + traf_sum_mb + " title " + title); } } else if (amount1 == null && amount2 != null && amount3 != null) { BigDecimal traf_sum = amount2.add(amount3); if (traf_sum.compareTo( dd ) == -1) { BigDecimal traf_sum_mb = traf_sum.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+i+++"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+"</td></td><td width=\"600\"></td></tr>" ); //report_comment.append("<tr>"+comment+ "</tr>" ); //report_amount1_null.append(traf_sum_mb+" МБ\n\n" ); //print ("traf_sum_mb6 " + traf_sum_mb + " title " + title); } } } contractRs_first_day.close(); contractPs_first_day.close(); contractRs_third_day.close(); contractPs_third_day.close(); } //Рисуем таблицу в html формате String message = "<table border=\"1\">"+ "\n" + "<tr>"+ "\n" + "<td>" + " № " + "</td>" + "<td>" + " Договор " + "</td>" + "<td>" + " Компания " + "</td>" + "<td>" + " Трафик " + "</td>" + "\n" + "<td width=\"600\">" + " Коментарий " + "</td>" + "\n" + "</tr>" + report_title.toString() +"\n" + "</table>"; //Формируем письмо в html htmlPart.setContent(message,"text/html;charset=utf-8"); multipart.addBodyPart(htmlPart); msg.sendMessage(objects, "Отчет по трафику", multipart); print (report_title.toString() +"\n" ); contractRs.close(); contractPs.close(); } } вот такую ошибку сыпет Код: server 09-30/09:35:33 ERROR [bitel.billing.server.installer.action.ActionGetInstalledModules] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.ServerPreparedStatement[27200] - SELECT * FROM global_script_link WHERE id=13 com.mysql.jdbc.ServerPreparedStatement[27203] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=40 com.mysql.jdbc.ServerPreparedStatement[27206] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=43 com.mysql.jdbc.ServerPreparedStatement[27209] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=47 com.mysql.jdbc.ServerPreparedStatement[27212] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=48 com.mysql.jdbc.ServerPreparedStatement[27215] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=53 com.mysql.jdbc.ServerPreparedStatement[27218] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=56 com.mysql.jdbc.ServerPreparedStatement[27221] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=59 com.mysql.jdbc.ServerPreparedStatement[27224] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=68 com.mysql.jdbc.ServerPreparedStatement[27227] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=74 com.mysql.jdbc.ServerPreparedStatement[27230] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=81 com.mysql.jdbc.ServerPreparedStatement[27233] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=82 com.mysql.jdbc.ServerPreparedStatement[27236] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=83 com.mysql.jdbc.ServerPreparedStatement[27239] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=84 com.mysql.jdbc.ServerPreparedStatement[27242] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=85 com.mysql.jdbc.ServerPreparedStatement[27245] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=87 com.mysql.jdbc.ServerPreparedStatement[27248] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=89 com.mysql.jdbc.ServerPreparedStatement[27251] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=91 com.mysql.jdbc.ServerPreparedStatement[27254] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=92 com.mysql.jdbc.ServerPreparedStatement[27257] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=105 com.mysql.jdbc.ServerPreparedStatement[27260] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=106 com.mysql.jdbc.ServerPreparedStatement[27263] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=108 com.mysql.jdbc.ServerPreparedStatement[27266] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=109 com.mysql.jdbc.ServerPreparedStatement[27269] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=111 com.mysql.jdbc.ServerPreparedStatement[27272] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=122 com.mysql.jdbc.ServerPreparedStatement[27275] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=124 com.mysql.jdbc.ServerPreparedStatement[27278] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=134 com.mysql.jdbc.ServerPreparedStatement[27281] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=137 com.mysql.jdbc.ServerPreparedStatement[27284] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=140 com.mysql.jdbc.ServerPreparedStatement[27287] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=143 com.mysql.jdbc.ServerPreparedStatement[27290] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=148 com.mysql.jdbc.ServerPreparedStatement[27293] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=157 com.mysql.jdbc.ServerPreparedStatement[27296] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=162 com.mysql.jdbc.ServerPreparedStatement[27299] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=178 com.mysql.jdbc.ServerPreparedStatement[27302] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=179 com.mysql.jdbc.ServerPreparedStatement[27305] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=188 com.mysql.jdbc.ServerPreparedStatement[27308] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=189 com.mysql.jdbc.ServerPreparedStatement[27311] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=193 com.mysql.jdbc.ServerPreparedStatement[27314] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=206 com.mysql.jdbc.ServerPreparedStatement[27317] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=208 com.mysql.jdbc.ServerPreparedStatement[27320] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=215 com.mysql.jdbc.ServerPreparedStatement[27323] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=226 com.mysql.jdbc.ServerPreparedStatement[27326] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=238 com.mysql.jdbc.ServerPreparedStatement[27329] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=239 com.mysql.jdbc.ServerPreparedStatement[27332] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=244 com.mysql.jdbc.ServerPreparedStatement[27335] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=248 com.mysql.jdbc.ServerPreparedStatement[27338] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=249 com.mysql.jdbc.ServerPreparedStatement[27341] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=256 com.mysql.jdbc.ServerPreparedStatement[27344] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=257 com.mysql.jdbc.ServerPreparedStatement[27347] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=259 com.mysql.jdbc.ServerPreparedStatement[27350] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=264 com.mysql.jdbc.ServerPreparedStatement[27353] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=268 com.mysql.jdbc.ServerPreparedStatement[27356] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=270 com.mysql.jdbc.ServerPreparedStatement[27359] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=276 com.mysql.jdbc.ServerPreparedStatement[27362] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=285 com.mysql.jdbc.ServerPreparedStatement[27365] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=288 com.mysql.jdbc.ServerPreparedStatement[27368] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=289 com.mysql.jdbc.ServerPreparedStatement[27371] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=291 com.mysql.jdbc.ServerPreparedStatement[27374] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=295 com.mysql.jdbc.ServerPreparedStatement[27377] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=297 com.mysql.jdbc.ServerPreparedStatement[27380] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=298 com.mysql.jdbc.ServerPreparedStatement[27383] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=302 com.mysql.jdbc.ServerPreparedStatement[27386] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=304 com.mysql.jdbc.ServerPreparedStatement[27389] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=308 com.mysql.jdbc.ServerPreparedStatement[27392] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=314 com.mysql.jdbc.ServerPreparedStatement[27395] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=317 com.mysql.jdbc.ServerPreparedStatement[27398] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=321 com.mysql.jdbc.ServerPreparedStatement[27401] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=322 com.mysql.jdbc.ServerPreparedStatement[27404] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=332 com.mysql.jdbc.ServerPreparedStatement[27407] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=334 com.mysql.jdbc.ServerPreparedStatement[27410] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=336 com.mysql.jdbc.ServerPreparedStatement[27413] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=339 com.mysql.jdbc.ServerPreparedStatement[27416] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=345 com.mysql.jdbc.ServerPreparedStatement[27419] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=346 com.mysql.jdbc.ServerPreparedStatement[27422] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=348 com.mysql.jdbc.ServerPreparedStatement[27425] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=351 com.mysql.jdbc.ServerPreparedStatement[27428] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=353 com.mysql.jdbc.ServerPreparedStatement[27431] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=354 com.mysql.jdbc.ServerPreparedStatement[27434] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=356 com.mysql.jdbc.ServerPreparedStatement[27437] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=358 com.mysql.jdbc.ServerPreparedStatement[27440] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=363 com.mysql.jdbc.ServerPreparedStatement[27443] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=365 com.mysql.jdbc.ServerPreparedStatement[27446] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=375 com.mysql.jdbc.ServerPreparedStatement[27449] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=376 com.mysql.jdbc.ServerPreparedStatement[27452] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=377 com.mysql.jdbc.ServerPreparedStatement[27455] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=380 com.mysql.jdbc.ServerPreparedStatement[27458] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=381 com.mysql.jdbc.ServerPreparedStatement[27461] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=383 com.mysql.jdbc.ServerPreparedStatement[27464] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=391 com.mysql.jdbc.ServerPreparedStatement[27467] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=394 com.mysql.jdbc.ServerPreparedStatement[27470] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=397 com.mysql.jdbc.ServerPreparedStatement[27473] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=400 com.mysql.jdbc.ServerPreparedStatement[27476] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=407 com.mysql.jdbc.ServerPreparedStatement[27479] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=412 com.mysql.jdbc.ServerPreparedStatement[27482] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=417 com.mysql.jdbc.ServerPreparedStatement[27485] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=422 com.mysql.jdbc.ServerPreparedStatement[27488] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=429 com.mysql.jdbc.ServerPreparedStatement[27491] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=434 com.mysql.jdbc.ServerPreparedStatement[27494] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=435 com.mysql.jdbc.ServerPreparedStatement[27497] - SELECT sum(amount) FROM ipn_contract_data_2_201309 WHERE dt='2013-09-28' AND cid=445 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:396) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:205) at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.access$1(JaxWsHandler.java:1) at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler$2.run(JaxWsHandler.java:304) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:298) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:304) at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150) at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261) at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100) at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314) at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608) at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259) at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162) at ru.bitel.common.server.JaxWSAdapter.handle(JaxWSAdapter.java:374) 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.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:66 вроде закрыто все, а вылетает, что не так то? |
Автор: | Cromeshnic [ 30 сен 2013, 11:56 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
second_day забыл закрыть |
Автор: | Cromeshnic [ 30 сен 2013, 11:59 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Бтв, вот это странно выглядит: Цитата: while ( contractRs_first_day.next() && contractRs_second_day.next() && contractRs_third_day.next() ) are you sure? зы. Разбираться лень, что там понаписано ![]() |
Автор: | stark [ 30 сен 2013, 12:57 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Cromeshnic писал(а): second_day забыл закрыть +1 |
Автор: | stark [ 30 сен 2013, 12:58 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Cromeshnic писал(а): Бтв, вот это странно выглядит: Цитата: while ( contractRs_first_day.next() && contractRs_second_day.next() && contractRs_third_day.next() ) are you sure? зы. Разбираться лень, что там понаписано ![]() Ага..skyb, стало любопытно, что тут имелось ввиду ? |
Автор: | skyb [ 30 сен 2013, 13:11 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
stark писал(а): Cromeshnic писал(а): Бтв, вот это странно выглядит: Цитата: while ( contractRs_first_day.next() && contractRs_second_day.next() && contractRs_third_day.next() ) are you sure? зы. Разбираться лень, что там понаписано ![]() Ага..skyb, стало любопытно, что тут имелось ввиду ? Эм, ну я тут сразу решил 3 запроса обработать. Просто пытался найти как сравнивать значения из 3 запросов, так и ненашел, попробовал так, вроде выдает что нада. А как прпвильно? |
Автор: | skyb [ 30 сен 2013, 13:12 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Cromeshnic писал(а): second_day забыл закрыть блин, а слона то я и не приметил, пасиб |
Автор: | Cromeshnic [ 30 сен 2013, 13:23 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
А ничего, что если хотя бы за 1 день не будет данных, то для остальных двух код тоже не выполнится? Это как минимум. |
Автор: | stark [ 30 сен 2013, 16:57 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Т.е там сравнивается просто 3 суммы. Тогда можно второй while вообще на If сменить, это цикл один раз выполняется всегда . |
Автор: | dimOn [ 30 сен 2013, 17:03 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
сказать что код просто жесть — это ничего не сказать))) |
Автор: | skyb [ 30 сен 2013, 17:05 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
dimOn писал(а): сказать что код просто жесть — это ничего не сказать))) но он работает ![]() |
Автор: | stark [ 30 сен 2013, 17:14 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
![]() ![]() ![]() Код: BigDecimal amount1 = contractRs_first_day.getBigDecimal( 1 ); BigDecimal amount2 = contractRs_second_day.getBigDecimal( 1 ); BigDecimal amount3 = contractRs_third_day.getBigDecimal( 1 ); BigDecimal traf_sum = BigDecimal.ZERO; if ( amount1 != null ) { traf_sum = traf_sum.add(amount1); } if ( amount2 != null ) { traf_sum = traf_sum.add(amount2); } if ( amount3 != null ) { traf_sum = traf_sum.add(amount3); } if (traf_sum.compareTo( dd ) == -1) { { ... } И получится просто сумма 3 значений учетом, что любые из них могут быть null. Незачем городить столько условий и выполнять одинаковый код. |
Автор: | skyb [ 30 сен 2013, 17:16 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
stark писал(а): Еле понял что происходит внутри цикла. Там просто складывается 3 значения с учетом того что любые из них могут быть null(все 3 сразу null, все три сразу не null, только первый не null и т.п) . Очень сложно..По-моему эту катавасию можно заменить вот этим просто Код: BigDecimal amount1 = contractRs_first_day.getBigDecimal( 1 ); BigDecimal amount2 = contractRs_second_day.getBigDecimal( 1 ); BigDecimal amount3 = contractRs_third_day.getBigDecimal( 1 ); BigDecimal traf_sum = BigDecimal.ZERO; if ( amount1 != null ) { traf_sum = traf_sum.add(amount1); } if ( amount2 != null ) { traf_sum = traf_sum.add(amount2); } if ( amount3 != null ) { traf_sum = traf_sum.add(amount3); } if (traf_sum.compareTo( dd ) == -1) { { ... } И получится просто сумма 3 значений учетом, что любые из них могут быть null. Незачем городить столько условий и выполнять одинаковый код. stark ПАСИБАААА!!!!!!!! я незнал как правильно, и никто подобного мне не показывал, гдеб я не спрашивал, книги тоже ответа не давали. Что и искал, сделал так как знал, во. плюс в карму |
Автор: | dimOn [ 30 сен 2013, 17:21 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
А я напишу этот код в 1 строчку! Код: ...
BigDecimal traf_sum = BigDecimal.ZERO.add(amount1!=null?amount1:BigDecimal.ZERO).add(amount2!=null?amount2:BigDecimal.ZERO).add(amount3!=null?amount3:BigDecimal.ZERO); ... |
Автор: | skyb [ 30 сен 2013, 17:24 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
dimOn писал(а): А я напишу этот код в 1 строчку! Код: ... BigDecimal traf_sum = BigDecimal.ZERO.add(amount1!=null?amount1:BigDecimal.ZERO).add(amount2!=null?amount2:BigDecimal.ZERO).add(amount3!=null?amount3:BigDecimal.ZERO); ... ![]() |
Автор: | Amir [ 30 сен 2013, 17:42 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Я тогда напишу оптимизированный: Код: BigDecimal amount1 = contractRs_first_day.getBigDecimal( 1 );
BigDecimal amount2 = contractRs_second_day.getBigDecimal( 1 ); BigDecimal amount3 = contractRs_third_day.getBigDecimal( 1 ); BigDecimal traf_sum = amount1; if( amount2 != null ) { traf_sum = traf_sum != null ? traf_sum.add( amount2 ) : amount2; } if( amount3 != null ) { traf_sum = traf_sum != null ? traf_sum.add( amount3 ) : amount3; } |
Автор: | dimOn [ 30 сен 2013, 19:21 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Ооооооочень сомнительна оптимальность! Имхо, в моём случае компилятором оптимальнее развернётся работа со стеком при последовательных обращениях к цепочке вызовов. |
Автор: | Amir [ 30 сен 2013, 19:51 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Посмотри сколько цепочек вызовов в методе BigDecimal.add. И новых объектов меньше создается. |
Автор: | Cromeshnic [ 30 сен 2013, 19:54 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Кодинг по-админски: тырк, тырк, копипаста, работает - и ладно. Не работает - пишем на форум. Блин, skyb, начни с того, что возьми любой код и пойми, что делает в нём каждая строчка. |
Автор: | skyb [ 30 сен 2013, 20:09 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Cromeshnic писал(а): Кодинг по-админски: тырк, тырк, копипаста, работает - и ладно. Не работает - пишем на форум. Блин, skyb, начни с того, что возьми любой код и пойми, что делает в нём каждая строчка. угу, нач-ву нада вчера, я буду втыкать в код пол года и нифига не пойму изза того что некому пояснить почему именно так. Да и чем плохо на форум написать то? работник по русски (и админ и кодер и тд....) |
Автор: | skyb [ 30 сен 2013, 20:10 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
ну и да, код не копипаста, писал полностью сам, с нуля, поэтому такой и вышел, на сколько хватило знаний |
Автор: | dimOn [ 30 сен 2013, 21:57 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Amir писал(а): Посмотри сколько цепочек вызовов в методе BigDecimal.add. И новых объектов меньше создается. Вообще-то в моей строке не создаётся ВООБЩЕ ни одного объекта ![]() З.ы. разумеется, кроме инициализируемого этой же строкой целевого BigDecimal traf_sum; |
Автор: | stark [ 01 окт 2013, 12:38 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
dimOn писал(а): Amir писал(а): Посмотри сколько цепочек вызовов в методе BigDecimal.add. И новых объектов меньше создается. Вообще-то в моей строке не создаётся ВООБЩЕ ни одного объекта ![]() Да ну ? Каждый add создает новый объект внутри. |
Автор: | stark [ 01 окт 2013, 12:43 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
skyb писал(а): ну и да, код не копипаста, писал полностью сам, с нуля, поэтому такой и вышел, на сколько хватило знаний Как это не копипаста ? Вот этот кусок 7 раз повторяется Код: BigDecimal traf_sum_mb = traf_sum.divide(aa, BigDecimal.ROUND_CEILING); report_title.append("<tr><td>"+ i++ +"</td><td>"+title+ "</td>"+"<td>"+comment+"</td>"+"<td>"+traf_sum_mb+" МБ</td><td width=\"600\"></td></tr>" ); // report_comment.append("<tr>"+comment +"</tr>" ); //report.append(traf_sum_mb+" МБ" ); //print ("traf_sum_mb " + traf_sum_mb + " title " + title); На будущее , если нужно несколько раз скопировать свой код, нужно вынести это в отдельную функцию. Избавьте остальных от чтения 7 раз одного и того же и попытки понять чем эти 7 блоков все-таки отличаются. |
Автор: | dimOn [ 01 окт 2013, 13:17 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
stark писал(а): dimOn писал(а): Amir писал(а): Посмотри сколько цепочек вызовов в методе BigDecimal.add. И новых объектов меньше создается. Вообще-то в моей строке не создаётся ВООБЩЕ ни одного объекта ![]() Да ну ? Каждый add создает новый объект внутри. ну да, а ещё скорее всего дополнительно кучу побочных инстансов других типов в процессе складывания, мы говорим же о текущем контексте. Тем более, что создание объекта в java намного дешевле, чем сами инструкции, например, вычисления. Не говоря уж о том, что складывание трёх чисел - не то место, где надо оптимизировать по скорости, особенно если эти три числа получены из нескольких неслабых запросов с агрегацией к БД. |
Автор: | dimOn [ 01 окт 2013, 14:10 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! А куча if — фу, прогорклое масло, старый замшелый пень, прелая мормыка из тыквы. |
Автор: | stark [ 01 окт 2013, 14:15 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
dimOn писал(а): Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! А куча if — фу, прогорклое масло, старый замшелый пень, прелая мормыка из тыквы. он не читабилен. Погоня за краткостью в ущерб легкости понимания. |
Автор: | Phricker [ 01 окт 2013, 14:30 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
dimOn писал(а): Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! А куча if — фу, прогорклое масло, старый замшелый пень, прелая мормыка из тыквы. Забрал в подпись ![]() |
Автор: | dimOn [ 01 окт 2013, 14:44 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
stark писал(а): dimOn писал(а): Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! А куча if — фу, прогорклое масло, старый замшелый пень, прелая мормыка из тыквы. он не читабилен. Погоня за краткостью в ущерб легкости понимания. да, вот твой код читабельнее, да, потому что тупо в лоб сравнение->действие. нормальный такой простой код. а мой примерно настолько же читабелен, как оптимизированный код амира (который использует цепочку не вполне тривиальных сравнений/присваиваний), но мой при этом кратщще и изящщнее. |
Автор: | 2ray [ 21 янв 2014, 10:58 ] |
Заголовок сообщения: | Re: Many statements was open at connection close |
Имеется java-код который работает по планировщику в 01.30. Но спотыкается об этот "камушек" : 01-21/01:30:01 INFO [Thread-3] TaskExecuter - Starting periodic task #41: bitel.billing.server.script.global.bean.GlobalScriptTimer 01-21/01:31:24 ERROR [pool-2-thread-3] DefaultServerSetup - Many statements was open at connection close: com.mysql.jdbc.JDBC4PreparedStatement@7a07a5ad: SELECT * FROM global_script_link WHERE id=1 com.mysql.jdbc.StatementImpl@2b6a1b3a com.mysql.jdbc.StatementImpl@4321931a com.mysql.jdbc.StatementImpl@3b6e83dc com.mysql.jdbc.StatementImpl@5492feff com.mysql.jdbc.StatementImpl@182cef2 com.mysql.jdbc.StatementImpl@32e072a4 com.mysql.jdbc.StatementImpl@1ee4dbf7 ...... 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:272) 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 ru.bitel.common.worker.ThreadContext.pop(ThreadContext.java:54) at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:84) 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) 01-21/01:31:24 INFO [pool-2-thread-3] GlobalScriptTimer - Task finished time=83102 ms. Самое интересное в другом. Когда тот же самый код запускаешь не планировщиком, а ручками. Он работает! И не валиться на Many statements was open at connection close!!!! BGBilling v5.2 |
Страница 1 из 2 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |