BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevice
СообщениеДобавлено: 30 июл 2014, 18:39 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
Стоит задача переезда с IPN на Inet, адаптирую скрипт конвертирования IPN-хозяйства в сущности INET и одно место вызывает головную боль:

Код:
ServerContext   context     = ServerContext.get();   
wsDevice    = context.getService( InetDeviceService.class, 13 );
List<InetDevice> inetDevicelist = new ArrayList<InetDevice>();
inetDevicelist.addAll( wsDevice.deviceList( INET_MIKROTIK_DEVICE_TYPE_ID ) );


При сохранении динкода компилятор жалуется, что deviceList возвращает ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevice, вместо InetDevice, по маны/форум и гугл о существовании этого класса (InvDevice) не знают, у кого-нить есть его описание или альтернатива для получения списка InetDevice-ов вместо deviceList?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 30 июл 2014, 19:13 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Недавно произошло разделение дерева устройств на дерево и библиотеку устройств. API изменилось.
На данный момент, если микротики в дереве не являются дочерними друг к другу, то
inetDevicelist.addAll( wsDevice.inetDeviceRoot( null, null, Collections.singleton( INET_MIKROTIK_DEVICE_TYPE_ID ), null, null, null, null, null, null, false, false ).getChildren() );
Если же есть микротик дочерний к другому микротику, то придется еще по листу пробежаться чтобы у каждого InetDevice вытащить его getChildren().


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 31 июл 2014, 12:32 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
За ответ - спасибо, помогло и в продолжение к теме,
Код:
device.setHost( hostPort );         
device.setPassword( gate.getKeyword() );                        
device.setUsername( gateSetup.get( "login", "root" ) );
device.setComment( gate.getComment() );         
device.setDeviceTypeId( INET_MIKROTIK_DEVICE_TYPE_ID );         
device.setParentId( INET_ROOT_DEVICE_ID );
device.setTitle( Device.generateTitle( device, type ) );
device.setIdentifier( gate.getComment() );
device.setSecret( "" );
device.setConfig( config );
device.setDeviceGroupIds( new HashSet<Integer>() );
int id = wsDevice.inetDeviceUpdate( device, false );   


Данный код при выполнении wsDevice.inetDeviceUpdate( device, false ); даёт ошибку
Код:
ru.bitel.bgbilling.common.BGException: Column 'identifier' cannot be null [23000, 1048]

gate.getComment() не пустой, проверял.
Есть сомнения по поводу inetDeviceUpdate (в оригинальном скрипте был deviceUpdate), в чём могут быть грабли?

#ПРИМ: device это экземлпяр InetDevice


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 31 июл 2014, 13:30 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
Хм, а если для этих опций использовать setInv... тогда работает,

Код:
device.setInvHost( hostPort );         
device.setInvDeviceTypeId( INET_MIKROTIK_DEVICE_TYPE_ID );         
device.setInvTitle( Device.generateTitle( device, type ) );
device.setInvIdentifier( gate.getComment() );
device.setInvConfig( config );
device.setInvDeviceGroupIds( new HashSet<Integer>() );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 31 июл 2014, 15:06 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Да, надо inv.
invHost - это host в invDevice.
host в inetDevice - это который в редакторе переопределение, т.е. его можно оставить null.
Но при этом если вызвать у inetDevice getHost() - если host null - он вернет invHost.

Из-за обратной совместимости с ServiceActivator'ами небольшая путаница возникла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 31 июл 2014, 17:37 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
Продолжая начатое, есть какие нить изменения в методе inetServUpdate класса InetServService?

При попытке создать сервис:

Код:
InetServ serv = new InetServ();
serv.setContractId( cid );
serv.setComment( "IMPORT FROM IPN" );
serv.setDateFrom( now.getTime() );
serv.setDateTo( now.getTime() );
serv.setLogin( "" );
serv.setPassword( "" );
serv.setStatus( InetServ.STATUS_ACTIVE );
serv.setTypeId( 1 );
serv.setDeviceId(37);
serv.setAddressFrom( start );
serv.setAddressTo( end );
wsServ.inetServUpdate( serv, new ArrayList<InetServOption>(), false, false, 0 );


в лог сыпется примерно следующее:

Код:
07-31/17:22:26 ERROR [http-bio-0.0.0.0-8080-exec-10] debug - Error while updating  service  for contract 5379:null
java.lang.NullPointerException
   at ru.zebratelecom.inet.dyn.debug.execute(debug.java:164)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at ru.bitel.bgbilling.kernel.dynamic.server.DynamicCodeServiceImpl.run(DynamicCodeServiceImpl.java:329)
   at sun.reflect.GeneratedMethodAccessor373.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at ru.bitel.bgbilling.kernel.container.service.server.ServiceInfo.invoke(ServiceInfo.java:101)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:244)
   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:336)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.security.auth.Subject.doAs(Subject.java:415)
   at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:330)
   at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:356)
   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:388)
   at bitel.billing.server.Executer.doPost(Unknown Source)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:745)


Не исключаю, что что-то не указано в настройках модуля Inet, но по выдаваемой ошибке идей куда копать нету(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 31 июл 2014, 21:10 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
Ну или можно перефразировать вопрос, у кого нить есть рабочий пример создания INET сервиса на договоре


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 01 авг 2014, 10:46 
Не в сети

Зарегистрирован: 25 июн 2014, 10:57
Сообщения: 16
Карма: 0
Вопрос снят, ответ комрада Amir'a из соседней ветки (?f=19&t=6958?f=19&t=6958) решил проблему


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 16:31 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Господа!!! А у вас из таблицы inv_device_1 удаляется устройство? Я удалил устройство в админке в модуле Inet, перечитал на серверах,
а в таблице устройство осталось, соответственно функция
List<InvDevice> deviceList = deviceService.deviceList(deviceTypeId);
Возвращает удаленное устройство!!!
Разобрался, вы новый функционал с библиотеками ввели


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 17:07 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Господа! Все же странности творятся при создании устройства! Устройство создается в inv_device
в таблице inet_device_tree нет записи с созданным устройством
А функция deviceList выдает что оно есть
Как же теперь создать устройство в дереве?
Как же теперь получить ли устройства из дерева?

Код:
ServerContext context = ServerContext.get();
               InetDeviceService deviceService = context.newService( InetDeviceService.class, INET_MODULE_ID ); //(Class, int moduleId)
               InetDeviceType deviceType = deviceService.deviceTypeGet( deviceTypeBillingCode );

               InvDevice device = new InvDevice();
               device.setIdentifier(deviceIdentifier);
               String timeStamp = MakeTimeStamp();
               device.setComment( "Автосоздание " + timeStamp);
               device.setDeviceTypeId(deviceTypeBillingCode);
               device.setHost("");
               device.setUsername("");
               device.setPassword("");   
               device.setSecret("");
               Preferences newProps = new  Preferences();
               device.setConfig( newProps.toString() );
               HashSet groupd = new HashSet( 1, 1 ); //сэт с id групп устройств
               groupd.add(new Integer(2));
               device.setDeviceGroupIds(groupd);
               device.setTitle( Device.generateTitle( device,  deviceType));
               device.setParentId(12);
               deviceId = deviceService.deviceUpdate( device );
               context.getConnectionSet().commit();
               deviceService.deviceReload();
               EventProcessor.getInstance().publish( new InetReloadEvent( INET_MODULE_ID, 0 )); //( moduleId, userId )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 19:12 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Что то после введения библиотеки, авторизация стала работать странно. На договоре я заблокировал сервис и ожидал что будет ошибка 10 "Сервис заблокирован." а у меня сейчас status not active accessCode = 0 ReturnCode = 0
Что самое удивительное, я ожидал что будет Reject, а сработал меъханизм RejectToAcept, поскольку выдался адрес из подсети, назначенной для RejectToAcept.
в конфиге стоит:
# Коды ошибок, при которых отвечать Access-Accept в состоянии disable (rejectToAccept)
radius.disable.accessCodes=1,20


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 19:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
device - это InvDevice - устройство из Библиотеки.
inetDevice - это InetDevice - устойство из дерева.

После того как разделили - метод deviceList - возвращает список устройств из библиотеки, а не из дерева.
Как получить устройства из дерева я писал выше, если нужно добавим метод inetDeviceList( type ).
Добавлять также как раньше, за исключением того, что в InetDevice некоторые поля нужно указывать, например, не в setIdentifier, а в setInvIdentifier.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 19:51 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Не уверен, что в этом дело. Это точно был rejectToAccept?
В дереве устройств откройте NAS с которого шел Access-Request, где конфигурация - нажмите Текущая и в поиске укажите radius.disable.accessCodes - там тоже 1,20?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 11 авг 2014, 20:44 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Amir писал(а):
если нужно добавим метод inetDeviceList( type ).

Буду несказанно благодарен за этот метод!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 12 авг 2014, 02:43 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Выкладывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic
СообщениеДобавлено: 12 авг 2014, 13:47 
Не в сети
Клиент

Зарегистрирован: 30 янв 2013, 11:27
Сообщения: 305
Карма: 0
Amir писал(а):
Выкладывается.

Спасибо! Работает!


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

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


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

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


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

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