forum.bitel.ru http://forum.bitel.ru/ |
|
smpp http://forum.bitel.ru/viewtopic.php?f=19&t=6468 |
Страница 1 из 1 |
Автор: | skyb [ 20 фев 2012, 11:20 ] |
Заголовок сообщения: | smpp |
Может я что делаю не так? Написал скрипт, при компиляции не ругается, подкинул класс smpp в Код: /usr/local/BGBillingServer/lib/ext и в Код: /usr/local/BGBillingServer/lib/app сам скрипт Код: package ru.skyb.scripts.global; import java.io.IOException; import java.util.List; import javax.activation.DataSource; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.plugins.dispatch.common.bean.Contact; import ru.bitel.bgbilling.plugins.dispatch.server.sender.Sender; import com.logica.smpp.Connection; import com.logica.smpp.Data; import com.logica.smpp.TimeoutException; import com.logica.smpp.WrongSessionStateException; import com.logica.smpp.pdu.BindRequest; import com.logica.smpp.pdu.PDUException; import com.logica.smpp.pdu.Response; import com.logica.smpp.pdu.SubmitSM; import com.logica.smpp.pdu.ValueNotSetException; import com.logica.smpp.pdu.WrongLengthOfStringException; import com.logica.smpp.TCPIPConnection; import com.logica.smpp.Session; import com.logica.smpp.pdu.BindTransmitter; public class smppSender implements Sender { @Override public void send( Contact contact1, String string2, String string3, List<DataSource> list4 ) throws BGException { Connection conn = new TCPIPConnection("123.123.123.123", 6543); Session session = new Session(conn); BindRequest breq = new BindTransmitter(); try { breq.setSystemId("MYNAME"); } catch (WrongLengthOfStringException e2) { e2.printStackTrace(); } try { breq.setPassword("my_pswdx"); } catch (WrongLengthOfStringException e) { e.printStackTrace(); } Response resp = null; try { resp = session.bind(breq); } catch (ValueNotSetException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (PDUException e) { e.printStackTrace(); } catch (WrongSessionStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (resp.getCommandStatus() == Data.ESME_ROK) { SubmitSM msg = new SubmitSM(); try { msg.setSourceAddr("3538998765432"); } catch (WrongLengthOfStringException e1) { e1.printStackTrace(); } try { msg.setDestAddr("3538619283746"); } catch (WrongLengthOfStringException e) { e.printStackTrace(); } try { msg.setShortMessage("Hello, world!"); } catch (WrongLengthOfStringException e) { e.printStackTrace(); } try { resp = session.submit(msg); } catch (ValueNotSetException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (PDUException e) { e.printStackTrace(); } catch (WrongSessionStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (resp.getCommandStatus() == Data.ESME_ROK) { System.out.println("Message submitted. Status=" + resp.getCommandStatus()); } else { System.out.println("Message submission failed. Status=" + resp.getCommandStatus()); } try { session.unbind(); } catch (ValueNotSetException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (PDUException e) { e.printStackTrace(); } catch (WrongSessionStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("Couldn't bind. Status=" + resp.getCommandStatus()); } } } когда запускаю, в логах шедулера вылетает такая ошибка Код: 02-20/06:05:01 INFO [Thread-4] TaskExecuter - Starting periodic task ID: 34 ru.bitel.bgbilling.plugins.dispatch.server.DispatchWorker 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - Exception in thread "pool-4-thread-36" 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - java.lang.NoClassDefFoundError: com/logica/smpp/pdu/WrongLengthOfStringException 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Class.getDeclaredConstructors0(Native Method) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Class.getConstructor0(Class.java:2699) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Class.newInstance0(Class.java:326) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Class.newInstance(Class.java:308) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at ru.bitel.bgbilling.kernel.dynamic.server.DynamicClassManager$UpdatingInvocationHandler.invoke(DynamicClassManager.java:185) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at $Proxy23.send(Unknown Source) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at ru.bitel.bgbilling.plugins.dispatch.server.bean.MessageProcessor.send(MessageProcessor.java:179) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at ru.bitel.bgbilling.plugins.dispatch.server.DispatchWorker.executeTask(DispatchWorker.java:77) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:60) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - Caused by: java.lang.ClassNotFoundException: com.logica.smpp.pdu.WrongLengthOfStringException 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at ru.bitel.bgbilling.kernel.dynamic.server.DatabaseClassLoader.findClass(DatabaseClassLoader.java:44) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 02-20/06:05:01 ERROR [pool-4-thread-36] LoggingPrintStream - ... 13 more при том что файл с расшрением class com/logica/smpp/pdu/WrongLengthOfStringException есть по этому пути, сервер перезапускал, после того как класс подкидывал. |
Автор: | skyb [ 20 фев 2012, 11:31 ] |
Заголовок сообщения: | Re: smpp |
мдэ, топик офф, нада шедулер было рестартить |
Автор: | skyb [ 20 фев 2012, 11:51 ] |
Заголовок сообщения: | Re: smpp |
02-20/06:56:04 WARN [Finalizer] ConnectionSet - Not recycled before finalize! вот такое вылетает, это нормально? |
Автор: | skyb [ 16 мар 2012, 12:58 ] |
Заголовок сообщения: | Re: smpp |
А по кодировки не подскажите? вообщем необходимо передавать все в кодировке UCS-2, как в нее конвертнуть? |
Автор: | Amir [ 16 мар 2012, 14:01 ] |
Заголовок сообщения: | Re: smpp |
Попробуйте UTF-16, вроде бы почти одно и тоже, по крайней мере для латинских и кириллических символов. Цитата: 02-20/06:56:04 WARN [Finalizer] ConnectionSet - Not recycled before finalize! А при каких случаях (после чего) обычно вылезает?
вот такое вылетает, это нормально? |
Автор: | stark [ 16 мар 2012, 17:14 ] |
Заголовок сообщения: | Re: smpp |
Я предлагаю заменить все catch-и одним Код: } catch (Exception e) { e.printStackTrace(); } Это сократит код значительно . |
Автор: | stark [ 16 мар 2012, 17:27 ] |
Заголовок сообщения: | Re: smpp |
skyb писал(а): А по кодировки не подскажите? вообщем необходимо передавать все в кодировке UCS-2, как в нее конвертнуть? Можно попробовать так Код: String str = "Привет";
byte encodedBytes[] = str.getBytes( "UTF-16BE" ); |
Автор: | skyb [ 19 мар 2012, 05:23 ] |
Заголовок сообщения: | Re: smpp |
Amir писал(а): Попробуйте UTF-16, вроде бы почти одно и тоже, по крайней мере для латинских и кириллических символов. Все равно приходят вопросы ![]() Amir писал(а): Цитата: 02-20/06:56:04 WARN [Finalizer] ConnectionSet - Not recycled before finalize! А при каких случаях (после чего) обычно вылезает?вот такое вылетает, это нормально? Да вроде с очередным обновлением поправилось. stark писал(а): Я предлагаю заменить все catch-и одним Код: } catch (Exception e) { e.printStackTrace(); } Это сократит код значительно . Сделал так. Код: package ru.skyb.scripts.global; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import javax.activation.DataSource; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.plugins.dispatch.common.bean.Contact; import ru.bitel.bgbilling.plugins.dispatch.server.sender.Sender; import com.logica.smpp.Connection; import com.logica.smpp.Data; import com.logica.smpp.TimeoutException; import com.logica.smpp.WrongSessionStateException; import com.logica.smpp.pdu.BindRequest; import com.logica.smpp.pdu.PDUException; import com.logica.smpp.pdu.Response; import com.logica.smpp.pdu.SubmitSM; import com.logica.smpp.pdu.ValueNotSetException; import com.logica.smpp.pdu.WrongLengthOfStringException; import com.logica.smpp.TCPIPConnection; import com.logica.smpp.Session; import com.logica.smpp.pdu.BindTransmitter; public class smppSender implements Sender { @Override public void send(Contact contact1, String string2, String string3, List<DataSource> list4) throws BGException { Connection conn = new TCPIPConnection("85.17.220.1", 27715); Session session = new Session(conn); BindRequest breq = new BindTransmitter(); breq.setSystemId("televox"); breq.setPassword("televox"); Response resp = null; resp = session.bind(breq); if (resp.getCommandStatus() == Data.ESME_ROK) { String nymber = contact1.getValue(); String message = string3; byte encodedBytes[] = message.getBytes( "UTF-16" ); SubmitSM msg = new SubmitSM(); msg.setSourceAddr((byte) 0, (byte) 5, "Televox"); msg.setDestAddr((byte) 1, (byte) 1, nymber); msg.setShortMessage(message); resp = session.submit(msg); if (resp.getCommandStatus() == Data.ESME_ROK) { System.out.println("Message submitted. Status=" + resp.getCommandStatus()); } else { System.out.println("Message submission failed. Status=" + resp.getCommandStatus()); } catch (Exception e) { e.printStackTrace(); } } else { System.out.println("Couldn't bind. Status=" + resp.getCommandStatus()); } } } Ругается тут Код: catch (Exception e) { e.printStackTrace(); } вот так Код: Эта строка содержит несколько маркеров - Синтаксическая ошибка в лексеме "catch"; ожидается for - Синтаксическая ошибка; вставьте "; ; ) Statement" для завершения ForStatement Не туда поставил? stark писал(а): skyb писал(а): А по кодировки не подскажите? вообщем необходимо передавать все в кодировке UCS-2, как в нее конвертнуть? Можно попробовать так Код: String str = "Привет"; byte encodedBytes[] = str.getBytes( "UTF-16BE" ); Так тоже приходят вопросики ![]() Может что ещё есть? |
Автор: | dimOn [ 19 мар 2012, 11:29 ] |
Заголовок сообщения: | Re: smpp |
Так может там реально вопросики приходят? |
Автор: | dimOn [ 19 мар 2012, 11:31 ] |
Заголовок сообщения: | Re: smpp |
Что-то я не вижу ни одного использования массива байтов после раскодирования ![]() |
Автор: | stark [ 19 мар 2012, 12:03 ] |
Заголовок сообщения: | Re: smpp |
skyb писал(а): stark писал(а): Я предлагаю заменить все catch-и одним Код: } catch (Exception e) { e.printStackTrace(); } Это сократит код значительно . Сделал так. Что-то я не понял ..а где try то ??? в смысле я предложил заменить конструкции вида Код: try { ....... } catch (ValueNotSetException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } catch (PDUException e) { e.printStackTrace(); } catch (WrongSessionStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } На Код: try { ....... } catch (Exception e) { e.printStackTrace(); } Можно заменить все исключения одним универсальны,м если их обработка ни чем не отличается . Общая заглушка . |
Автор: | stark [ 19 мар 2012, 12:16 ] |
Заголовок сообщения: | Re: smpp |
skyb писал(а): byte encodedBytes[] = message.getBytes( "UTF-16" ); SubmitSM msg = new SubmitSM(); msg.setSourceAddr((byte) 0, (byte) 5, "Televox"); msg.setDestAddr((byte) 1, (byte) 1, nymber); msg.setShortMessage(message); resp = session.submit(msg); Дословное исполнение того что говорят это конечно хорошо ![]() |
Автор: | Феанор [ 19 мар 2012, 12:51 ] |
Заголовок сообщения: | Re: smpp |
честно скажу, с кодировками всегда беда была, но тем не менее... Код: message=String(encodedBytes); // создать строку из указанного массива байт вот сюда вставить: Код: byte encodedBytes[] = message.getBytes( "UTF-16" );
message=String(encodedBytes); // создать строку из указанного массива байт SubmitSM msg = new SubmitSM(); |
Автор: | stark [ 19 мар 2012, 15:55 ] |
Заголовок сообщения: | Re: smpp |
Феанор писал(а): честно скажу, с кодировками всегда беда была, но тем не менее... Код: message=String(encodedBytes); // создать строку из указанного массива байт вот сюда вставить: Код: byte encodedBytes[] = message.getBytes( "UTF-16" ); message=String(encodedBytes); // создать строку из указанного массива байт SubmitSM msg = new SubmitSM(); Это не поможет. Надо попробовать сделать: Код: msg.setShortMessage(message, "UTF-16BE" );
|
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |