BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: smpp
СообщениеДобавлено: 20 фев 2012, 11:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Может я что делаю не так? Написал скрипт, при компиляции не ругается, подкинул класс 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 есть по этому пути, сервер перезапускал, после того как класс подкидывал.

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
мдэ, топик офф, нада шедулер было рестартить

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
02-20/06:56:04 WARN [Finalizer] ConnectionSet - Not recycled before finalize!
вот такое вылетает, это нормально?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
А по кодировки не подскажите?
вообщем необходимо передавать все в кодировке UCS-2, как в нее конвертнуть?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: smpp
СообщениеДобавлено: 16 мар 2012, 14:01 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Попробуйте UTF-16, вроде бы почти одно и тоже, по крайней мере для латинских и кириллических символов.
Цитата:
02-20/06:56:04 WARN [Finalizer] ConnectionSet - Not recycled before finalize!
вот такое вылетает, это нормально?
А при каких случаях (после чего) обычно вылезает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: smpp
СообщениеДобавлено: 16 мар 2012, 17:14 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Я предлагаю заменить все catch-и одним
Код:
 } catch (Exception e) {
      e.printStackTrace();
   }


Это сократит код значительно .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: smpp
СообщениеДобавлено: 16 мар 2012, 17:27 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skyb писал(а):
А по кодировки не подскажите?
вообщем необходимо передавать все в кодировке UCS-2, как в нее конвертнуть?


Можно попробовать так

Код:
String str = "Привет";
byte encodedBytes[] = str.getBytes( "UTF-16BE" );


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
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" );

Так тоже приходят вопросики :(
Может что ещё есть?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Так может там реально вопросики приходят?

_________________
I'm clever. I've got a computer.


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

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Что-то я не вижу ни одного использования массива байтов после раскодирования :facepalm:

_________________
I'm clever. I've got a computer.


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
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();
}


Можно заменить все исключения одним универсальны,м если их обработка ни чем не отличается . Общая заглушка .


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
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);


Дословное исполнение того что говорят это конечно хорошо :) ..Но я просто общий принцип описал как получить байты в нужной кодировке . А по коду encodedBytes никуда не передается, поэтому ни на что и не влияет. Я не разбирался в этой библиотеке и не знаю, можно ли туда передать байты. Судя по коду, туда передается строка в методе setShortMessage. Возможно сама библотека должна правильно перекодировать или надо как-то по другому делать . Если хотите чтобы мы с этим разобрались и протестили на вашем оборудовании , то пишите в helpdesk.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: smpp
СообщениеДобавлено: 19 мар 2012, 12:51 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
честно скажу, с кодировками всегда беда была, но тем не менее...

Код:
message=String(encodedBytes); // создать строку из указанного массива байт

вот сюда вставить:
Код:
byte encodedBytes[] = message.getBytes( "UTF-16" );
message=String(encodedBytes); // создать строку из указанного массива байт
SubmitSM msg = new SubmitSM();


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: smpp
СообщениеДобавлено: 19 мар 2012, 15:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Феанор писал(а):
честно скажу, с кодировками всегда беда была, но тем не менее...

Код:
message=String(encodedBytes); // создать строку из указанного массива байт

вот сюда вставить:
Код:
byte encodedBytes[] = message.getBytes( "UTF-16" );
message=String(encodedBytes); // создать строку из указанного массива байт
SubmitSM msg = new SubmitSM();

Это не поможет.

Надо попробовать сделать:
Код:
msg.setShortMessage(message, "UTF-16BE" );


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

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


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

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


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

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