BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 02:33

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Падает скрипт
СообщениеДобавлено: 21 авг 2012, 19:13 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
Подскажите, что за экзепшн?
происходит при запуске глобального скрипта.
перед ним есть вот это:
Код:
...
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();
                                             }
                           }
                          }
                    }
               }
            }
      }
   }


Последний раз редактировалось Dog 21 авг 2012, 19:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Падает скрипт
СообщениеДобавлено: 21 авг 2012, 19:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Закрывать соединения не пробовали?
Открывать открываете
Код:
PreparedStatement ps1 = con.prepareStatement( query1 );
         ResultSet rs1 = ps1.executeQuery();

а закрывать нечто вроде
Код:
rs1.close();
ps1.close();

бабушка будет?
Вот он навроде как и ругается

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Падает скрипт
СообщениеДобавлено: 21 авг 2012, 19:18 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
бабушка не умеет =) а я учусь. спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Падает скрипт
СообщениеДобавлено: 21 авг 2012, 20:21 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
а соединения не здесь случайно открываются:
List<Contact> nymber = cd.getContactsForContract(conCid, 2);
?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Падает скрипт
СообщениеДобавлено: 22 авг 2012, 12:51 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Dog писал(а):
а соединения не здесь случайно открываются:
List<Contact> nymber = cd.getContactsForContract(conCid, 2);
?

Внутри наших Dao иногда сознательно не закрываются чтобы один PreparedStatement кешировать. Поэтому

Вынесете вот это
Код:
ContactDao cd = new ContactDao(connectionSet.getConnection() );


вне цикла while и перестанет ругаться . Не надо создавать много Dao - вам одной хватит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Падает скрипт
СообщениеДобавлено: 22 авг 2012, 14:37 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
спасибо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.038s | 28 Queries | GZIP : On ]