forum.bitel.ru http://forum.bitel.ru/ |
|
ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevice (CRM) http://forum.bitel.ru/viewtopic.php?f=19&t=9514 |
Страница 1 из 1 |
Автор: | weasel [ 30 июл 2014, 18:39 ] |
Заголовок сообщения: | ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevice |
Стоит задача переезда с 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? |
Автор: | Amir [ 30 июл 2014, 19:13 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Недавно произошло разделение дерева устройств на дерево и библиотеку устройств. 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(). |
Автор: | weasel [ 31 июл 2014, 12:32 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
За ответ - спасибо, помогло и в продолжение к теме, Код: 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 |
Автор: | weasel [ 31 июл 2014, 13:30 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Хм, а если для этих опций использовать 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>() ); |
Автор: | Amir [ 31 июл 2014, 15:06 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Да, надо inv. invHost - это host в invDevice. host в inetDevice - это который в редакторе переопределение, т.е. его можно оставить null. Но при этом если вызвать у inetDevice getHost() - если host null - он вернет invHost. Из-за обратной совместимости с ServiceActivator'ами небольшая путаница возникла. |
Автор: | weasel [ 31 июл 2014, 17:37 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Продолжая начатое, есть какие нить изменения в методе 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, но по выдаваемой ошибке идей куда копать нету( |
Автор: | weasel [ 31 июл 2014, 21:10 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Ну или можно перефразировать вопрос, у кого нить есть рабочий пример создания INET сервиса на договоре |
Автор: | weasel [ 01 авг 2014, 10:46 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Вопрос снят, ответ комрада Amir'a из соседней ветки (?f=19&t=6958?f=19&t=6958) решил проблему |
Автор: | Угрюмов Роман [ 11 авг 2014, 16:31 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Господа!!! А у вас из таблицы inv_device_1 удаляется устройство? Я удалил устройство в админке в модуле Inet, перечитал на серверах, а в таблице устройство осталось, соответственно функция List<InvDevice> deviceList = deviceService.deviceList(deviceTypeId); Возвращает удаленное устройство!!! Разобрался, вы новый функционал с библиотеками ввели |
Автор: | Угрюмов Роман [ 11 авг 2014, 17:07 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Господа! Все же странности творятся при создании устройства! Устройство создается в 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 ) |
Автор: | Угрюмов Роман [ 11 авг 2014, 19:12 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Что то после введения библиотеки, авторизация стала работать странно. На договоре я заблокировал сервис и ожидал что будет ошибка 10 "Сервис заблокирован." а у меня сейчас status not active accessCode = 0 ReturnCode = 0 Что самое удивительное, я ожидал что будет Reject, а сработал меъханизм RejectToAcept, поскольку выдался адрес из подсети, назначенной для RejectToAcept. в конфиге стоит: # Коды ошибок, при которых отвечать Access-Accept в состоянии disable (rejectToAccept) radius.disable.accessCodes=1,20 |
Автор: | Amir [ 11 авг 2014, 19:35 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
device - это InvDevice - устройство из Библиотеки. inetDevice - это InetDevice - устойство из дерева. После того как разделили - метод deviceList - возвращает список устройств из библиотеки, а не из дерева. Как получить устройства из дерева я писал выше, если нужно добавим метод inetDeviceList( type ). Добавлять также как раньше, за исключением того, что в InetDevice некоторые поля нужно указывать, например, не в setIdentifier, а в setInvIdentifier. |
Автор: | Amir [ 11 авг 2014, 19:51 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Не уверен, что в этом дело. Это точно был rejectToAccept? В дереве устройств откройте NAS с которого шел Access-Request, где конфигурация - нажмите Текущая и в поиске укажите radius.disable.accessCodes - там тоже 1,20? |
Автор: | Угрюмов Роман [ 11 авг 2014, 20:44 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Amir писал(а): если нужно добавим метод inetDeviceList( type ). Буду несказанно благодарен за этот метод!!! |
Автор: | Amir [ 12 авг 2014, 02:43 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Выкладывается. |
Автор: | Угрюмов Роман [ 12 авг 2014, 13:47 ] |
Заголовок сообщения: | Re: ru.bitel.bgbilling.modules.inet.api.common.bean.InvDevic |
Amir писал(а): Выкладывается. Спасибо! Работает! |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |