forum.bitel.ru http://forum.bitel.ru/ |
|
Падает скрипт http://forum.bitel.ru/viewtopic.php?f=19&t=7138 |
Страница 1 из 1 |
Автор: | Dog [ 21 авг 2012, 19:13 ] |
Заголовок сообщения: | Падает скрипт |
Подскажите, что за экзепшн? происходит при запуске глобального скрипта. перед ним есть вот это: Код: ... com.mysql.jdbc.PreparedStatement@157e0a5: SELECT * FROM dispatch_contact WHERE contract_id=116 AND type_id=2 ORDER BY val com.mysql.jdbc.PreparedStatement@140fdca: SELECT * FROM dispatch_contact WHERE contract_id=118 AND type_id=2 ORDER BY val com.mysql.jdbc.PreparedStatement@ea76db: SELECT * FROM dispatch_contact WHERE contract_id=120 AND type_id=2 ORDER BY val com.mysql.jdbc.PreparedStatement@1a19733: SELECT * FROM dispatch_contact WHERE contract_id=121 AND type_id=2 ORDER BY val Код: 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.service.server.ServiceInfo.invoke(ServiceInfo.java:130) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:175) 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:282) 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:276) at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:277) 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:331) 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:662) сам скрипт: Код: public class PreCalc2
extends GlobalScriptBase { @Override public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { Connection con = connectionSet.getConnection(); Calendar date = new GregorianCalendar(); date.add(date.MONTH, 1); date.set(date.DAY_OF_MONTH, 1); BalanceUtils bu = new BalanceUtils( con ); ContractManager cmm = new ContractManager( con ); DateFormatSymbols symbols = new DateFormatSymbols(); String[] oddMonthAbbreviations = new String[] { "Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря" }; symbols.setShortMonths(oddMonthAbbreviations); SimpleDateFormat formatter = new SimpleDateFormat("dd MMM, yyyy", symbols); int NPAY_MID = 4; int serviceSet = 0; String query1 = "SELECT c.id FROM contract AS c"; PreparedStatement ps1 = con.prepareStatement( query1 ); ResultSet rs1 = ps1.executeQuery(); //print (rs); while ( rs1.next() ) { String cids = rs1.getString( "c.id" ); int conCid = rs1.getInt( "c.id" ); ContactDao cd = new ContactDao(connectionSet.getConnection() ); List<Contact> nymber = cd.getContactsForContract(conCid, 2); for( Contact contact : nymber ) { Calculator calculator = new Calculator(); calculator.setExecutingTime(date); calculator.setPreCalc(); calculator.setActiveFromDate( null ); calculator.initTask(setup, 0, "mid=2"); calculator.setCids(cids); calculator.startTask(); BigDecimal planAccount = BigDecimal.ZERO; Map planAccountMap = calculator.getCostCache().getContractAccounts(); for (Integer contractId : ru.bitel.common.Utils.toIntegerList(cids)) { if(planAccountMap.get(contractId)!= null) { planAccount = planAccount.add((BigDecimal)planAccountMap.get(contractId)); BigDecimal balance = bu.getBalance (date.getTime(), conCid); Contract cont = cmm.getContractById ( conCid ); String nameAccount = cont.getTitle(); if (planAccount.intValue() > balance.intValue()) { int diff = (planAccount.intValue() - balance.intValue()); String message = "Уважаемый абонент, по договору: " + nameAccount + " текущий баланс: " + balance + "р. " + formatter.format(date.getTime()) + " произойдет списание абонентской платы. Сумма к оплате: " + diff + "р."; print (message); TCPIPConnection conn = new TCPIPConnection("host", 3700); Session session = new Session(conn); BindRequest breq = new BindTransmitter(); Response resp = null; try { breq.setSystemId("name"); breq.setPassword("pass"); resp = session.bind(breq); if (resp.getCommandStatus() == Data.ESME_ROK) { SubmitSM msg = new SubmitSM(); msg.setDataCoding((byte) 8); msg.setSourceAddr((byte) 0, (byte) 5, "provider"); msg.setDestAddr((byte) 1, (byte) 1, contact.getValue()); msg.setShortMessage(message, "UTF-16BE"); resp = session.submit(msg); session.unbind(); print("nomer=>" + contact.getValue()); if (resp.getCommandStatus() == Data.ESME_ROK) { System.out.println("Message submitted. Status=" + resp.getCommandStatus()); } else { System.out.println("Message submission failed. Status=" + resp.getCommandStatus()); } } else { System.out.println("Couldn't bind. Status=" + resp.getCommandStatus()); } } catch (Exception e) { e.printStackTrace(); } } } } } } } } |
Автор: | Phricker [ 21 авг 2012, 19:16 ] |
Заголовок сообщения: | Re: Падает скрипт |
Закрывать соединения не пробовали? Открывать открываете Код: PreparedStatement ps1 = con.prepareStatement( query1 ); ResultSet rs1 = ps1.executeQuery(); а закрывать нечто вроде Код: rs1.close(); ps1.close(); бабушка будет? Вот он навроде как и ругается |
Автор: | Dog [ 21 авг 2012, 19:18 ] |
Заголовок сообщения: | Re: Падает скрипт |
бабушка не умеет =) а я учусь. спасибо. |
Автор: | Dog [ 21 авг 2012, 20:21 ] |
Заголовок сообщения: | Re: Падает скрипт |
а соединения не здесь случайно открываются: List<Contact> nymber = cd.getContactsForContract(conCid, 2); ? |
Автор: | stark [ 22 авг 2012, 12:51 ] |
Заголовок сообщения: | Re: Падает скрипт |
Dog писал(а): а соединения не здесь случайно открываются: List<Contact> nymber = cd.getContactsForContract(conCid, 2); ? Внутри наших Dao иногда сознательно не закрываются чтобы один PreparedStatement кешировать. Поэтому Вынесете вот это Код: ContactDao cd = new ContactDao(connectionSet.getConnection() ); вне цикла while и перестанет ругаться . Не надо создавать много Dao - вам одной хватит |
Автор: | Dog [ 22 авг 2012, 14:37 ] |
Заголовок сообщения: | Re: Падает скрипт |
спасибо. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |