Подскажите, что за экзепшн?
происходит при запуске глобального скрипта.
перед ним есть вот это:
Код:
...
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();
}
}
}
}
}
}
}
}