forum.bitel.ru http://forum.bitel.ru/ |
|
[6.2] HTTP status code 504: Gateway Time-out http://forum.bitel.ru/viewtopic.php?f=22&t=13173 |
Страница 1 из 1 |
Автор: | maxst-net [ 29 дек 2018, 16:16 ] |
Заголовок сообщения: | [6.2] HTTP status code 504: Gateway Time-out |
Уровень знаний Java чуть ниже чем начальный, посему большая просьба не пинать. Написан скрипт для снятия Z-отчетов с кассовых аппаратов PAY VKP-80K-ФА через Сервер CashCheck Скрипт: Код: package ru.bizbi.bgbilling; import bitel.billing.server.util.MailMsg; import org.apache.log4j.Logger; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.plugins.cashcheck.server.CashCheckUtils; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import ru.bitel.frk.client.CmdProtocolClient; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.TimeUnit; public class STNZReport extends GlobalScriptBase { private static final Logger logger = Logger.getLogger( STNZReport.class ); static List kkmList = new ArrayList(); static { Kkm kkm1 = new Kkm(); kkm1.kkmNum = 1; kkm1.ip = "10.10.10.216"; kkm1.title = " N1"; kkmList.add(kkm1); Kkm kkm2 = new Kkm(); kkm2.kkmNum = 2; kkm2.ip = "10.10.10.97"; kkm2.title = " N2"; kkmList.add(kkm2); Kkm kkm3 = new Kkm(); kkm3.kkmNum = 3; kkm3.ip = "192.168.200.5"; kkm3.title = " N3"; kkmList.add(kkm3); Kkm kkm4 = new Kkm(); kkm4.kkmNum = 4; kkm4.ip = "192.168.200.34"; kkm4.title = " N4"; kkmList.add(kkm4); Kkm kkm5 = new Kkm(); kkm5.kkmNum = 5; kkm5.ip = "192.168.200.66"; kkm5.title = " N5"; kkmList.add(kkm5); } private String[] EMAILS = {"xxxx@xxx.ru"}; public void printZReport(Setup setup, int kkmNum, String ipAddrkkm, String textMsg, ConnectionSet con) throws IOException, BGException { int kkmPass = 30; CmdProtocolClient cpc = null; try { cpc = new CmdProtocolClient(ipAddrkkm,9876 ); cpc.connect(); String printServerStatus = cpc.getServerStatus(); logger.info( "PrintServer Status ip:"+ipAddrkkm + "= " + printServerStatus ); if( printServerStatus != null ) { try { CashCheckUtils.ZReport(CashCheckUtils.getPrinter( kkmNum ), kkmPass); print( "CashCheck Autoprint: Успешно напечатан Z-отчет с ККМ № " + String.valueOf(kkmNum) ); logger.info("CashCheck Autoprint: Успешно напечатан Z-отчет с ККМ № " + String.valueOf(kkmNum)); sendMails(setup,"CashCheck: [ ZReport Success] ", "Успешно напечатан Z-отчет с ККМ № " + String.valueOf(kkmNum) + textMsg); } catch(BGException e) { print( "CashCheck Autoprint: ZReport ERROR: " + e.getMessage() ); logger.info( "CashCheck Autoprint: ZReport ERROR: " + e.getMessage() ); sendMails( setup,"CashCheck [ ZReport ERROR ]", "Ошибка печати Z-отчета на KKM № " + String.valueOf(kkmNum) + textMsg ); } try { CashCheckUtils.openDay(CashCheckUtils.getPrinter( kkmNum ), kkmPass); logger.info("CashCheck Autoprint: Успешно напечатан чек открытия смены " + String.valueOf(kkmNum)); print( "CashCheck Autoprint: Успешно напечатан чек открытия смены " + String.valueOf(kkmNum) ); sendMails(setup,"CashCheck: [ Open day Success] ", "Успешно напечатан чек открытия смены с ККМ № " + String.valueOf(kkmNum) + textMsg ); } catch (BGException e) { logger.info( "CashCheck Autoprint: ZReport ERROR: " + e.getMessage() ); print( "CashCheck Autoprint: ZReport ERROR: " + e.getMessage() ); sendMails( setup,"CashCheck: [ Open day ERROR] ", "Ошибка печати чека открытия смены с ККМ № " + String.valueOf(kkmNum) + textMsg ); } }else { logger.info( "Не удалось получить статус сервера печати с ККМ № " + kkmNum + textMsg ); print( "Не удалось получить статус сервера печати с ККМ № " + kkmNum + textMsg ); sendMails( setup,"CashCheck: [ ERROR GET STATUS PRINT SERVER ] ", "Ошибка получения статуса сервера печати для ККМ № " + String.valueOf(kkmNum) + textMsg ); } } catch (IOException e) { logger.info( "CashCheck: [ Sent email wiht PRINT SERVER ERROR]" + e.getMessage()); sendMails( setup,"CashCheck: [ Не удалось снять Z-отчет ] ", "Не удалось снять Z-отчет. Ошибка создания сокета для сервера печати ККМ № " + String.valueOf(kkmNum) + textMsg ); throw new BGException( e.getMessage() ); } finally { try { cpc.disconnect(); } catch ( Exception e ) { } } } @Override public void execute(Setup setup, ConnectionSet set) throws Exception { for( Iterator i = kkmList.iterator(); i.hasNext(); ) { Thread.sleep(10000); Kkm kkm = (Kkm) i.next(); try { logger.info("Попытка снятия отчета с кассы № " + kkm.kkmNum + " IP:" + kkm.ip); printZReport(setup, kkm.kkmNum, kkm.ip , kkm.title, set); } catch (Exception e) { logger.info("[Print Server IP:] " + kkm.ip + " | " + e.toString() ); e.printStackTrace(); } } } private void sendMails(Setup setup, String subject, String body) { MailMsg mailmsg = new MailMsg(setup); for(String email : EMAILS) { try { mailmsg.sendMessage(email, subject, body); } catch (Exception e) { logger.info("[Error send e-mail:] " + e.toString() ); } } } } Если запускать скрипт указывая только ОДНУ ККМ (по очереди) - все работает. Но вот если указать сразу ПЯТЬ аппаратов, то после успешного прохода по ТРЁМ аппаратам возникает ошибка 504 Текст ошибки: Код: com.sun.xml.ws.client.ClientTransportException: The server sent HTTP status code 504: Gateway Time-out at com.sun.xml.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:358) at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:307) at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:265) at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:184) at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:137) 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.client.Stub.process(Stub.java:323) at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:161) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:113) at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:93) at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:144) at com.sun.proxy.$Proxy36.run(Unknown Source) at ru.bitel.bgbilling.kernel.dynamic.client.DynamicCodeLibraryPanel$16.actionPerformedImpl(DynamicCodeLibraryPanel.java:565) at ru.bitel.common.client.AbstractBGUPanel.actionPerformed(AbstractBGUPanel.java:237) at ru.bitel.common.client.AbstractBGUPanel$DefaultAction.actionPerformed(AbstractBGUPanel.java:91) at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:541) at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:522) at ru.bitel.common.client.AbstractBGUPanel.performAction(AbstractBGUPanel.java:517) at ru.bitel.bgbilling.kernel.dynamic.client.DynamicCodeLibraryPanel$8.actionPerformed(DynamicCodeLibraryPanel.java:311) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Можно конечно сделать два скрипта и указывать в одном 3 аппарата в другом 2, но это не совсем красиво. О программе: Код: Информация о версии:
Клиент: вер. 6.2.849 / 22.12.2016 16:31:48 os: Windows 10; java: Java HotSpot(TM) Client VM, v.1.8.0_151 Сервер: вер. 6.2.1149 / 22.12.2016 16:33:23 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_77 assist: вер. 6.2.88 / 09.11.2016 15:23:35 bill: вер. 6.2.97 / 14.12.2016 14:33:00 bvcom: вер. 6.2.95 / 14.07.2016 14:11:19 card: вер. 6.2.39 / 26.05.2016 14:50:45 dialup: вер. 6.2.315 / 01.03.2016 00:17:59 email: вер. 6.2.177 / 14.12.2016 14:27:42 inet: вер. 6.2.704 / 19.12.2016 21:03:04 ipn: вер. 6.2.262 / 19.12.2016 21:02:58 mps: вер. 6.2.221 / 04.10.2016 19:16:15 npay: вер. 6.2.197 / 04.10.2016 19:12:21 phone: вер. 6.2.287 / 19.12.2016 21:03:24 rentsoft: вер. 6.2.63 / 04.10.2016 19:16:26 reports: вер. 6.2.213 / 03.10.2016 16:59:27 rscm: вер. 6.2.178 / 04.10.2016 19:16:30 ru.bitel.bgbilling.plugins.bonus: вер. 6.2.122 / 28.11.2016 20:59:09 ru.bitel.bgbilling.plugins.cashcheck: вер. 6.2.114 / 25.07.2017 14:33:27 ВНИМАНИЕ: клиентская версия: 6.2.107 / 15.07.2016 13:25:39 ru.bitel.bgbilling.plugins.crm: вер. 6.2.195 / 04.10.2016 19:16:05 ru.bitel.bgbilling.plugins.dispatch: вер. 6.2.95 / 14.12.2016 14:33:16 ru.bitel.bgbilling.plugins.documents: вер. 6.2.176 / 14.12.2016 14:33:16 ru.bitel.bgbilling.plugins.helpdesk: вер. 6.2.182 / 04.10.2016 19:16:06 ru.bitel.bgbilling.plugins.organizer: вер. 6.2.72 / 04.10.2016 19:16:19 sberbank: вер. 6.2.66 / 16.03.2018 00:59:33 subscription: вер. 6.2.40 / 04.10.2016 19:16:37 trayinfo: вер. 6.2.170 / 02.02.2016 17:42:09 tv: вер. 6.2.238 / 30.11.2016 17:54:27 voiceip: вер. 6.2.191 / 14.12.2016 14:29:33 wm: вер. 6.2.189 / 04.10.2016 19:16:46 yamoney: вер. 6.2.58 / 04.10.2016 19:16:49 Окружение: Клиент: os: Windows 10 x86, 10.0 java: Java HotSpot(TM) Client VM, v.1.8.0_151 jre home: C:\Program Files (x86)\Java\jre1.8.0_151 default tz: 29.12.2018 13:23 MSK +0300 (Europe/Moscow) user tz: 29.12.2018 13:23 MSK +0300 (Europe/Moscow) locale: ru_RU Сервер: os: Linux amd64, 4.9.0-3-amd64 java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_77 jre home: /opt/java/java-8-oracle/jre default tz: 29.12.2018 13:23 MSK +0300 (Europe/Moscow) db time: master: 29.12.2018 13:23 MSK db charset: connection: cp1251(cp1251_general_ci), database: cp1251(cp1251_general_ci) locale: ru_RU uptime: Started: 20.12.2018 16:07:23 Uptime: 8 d 21:16:34 Третьи стороны: Fugue Icons. Copyright © 2011 Yusuke Kamiyamane. All rights reserved. http://p.yusukekamiyamane.com/ Silk icon set. Copyright © Mark James. All rights reserved. http://www.famfamfam.com/lab/icons/silk/ |
Автор: | dimOn [ 29 дек 2018, 18:08 ] |
Заголовок сообщения: | Re: [6.2] HTTP status code 504: Gateway Time-out |
но это вам просто клиент же пишет потому что отвалился от сервера - слишком долго снимается отчёт, вот и всё. по идее код должен до конца выполниться и все отчёты сняться, просто вы это не увидите в клиенте (но в логах сервера всё написано будет). вы же этот код судя по стеку запускаете тупо через F9, а не из шедулера. |
Автор: | dimOn [ 29 дек 2018, 18:10 ] |
Заголовок сообщения: | Re: [6.2] HTTP status code 504: Gateway Time-out |
почему: у вас в nginx просто слишком малый таймаут на отклик по http стоит, потому долгие операции у вас их клиента все падать будут как решать: забить или лучше сделать таймаут больше |
Автор: | dimOn [ 29 дек 2018, 18:10 ] |
Заголовок сообщения: | Re: [6.2] HTTP status code 504: Gateway Time-out |
плюс сильно не помешает обновить биллинг, это слишком старый, кешчек у вас от 2016 вообще не работать по идее должен, просто у вас он отдельно новее, чем всё остальное, что тоже делать нельзя |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |