null

Порт модуля konference для BigBlueButton

Продолжая работу над портом BigBlueButton, не устаю наступать на грабли. Сейчас это модуль для проведения конференций. Для создания конференций BigBlueButton может использовать два разных модуля Asterisk: meetme и konference. Модуль meetme входит в поставку Asterisk, но требует специальных опций и зависимостей для сборки. Второй модуль, konference распространяется отдельно и входит в комплект BigBlueButton VM. К сожалению, жадные разработчики BigBlueButton предлагают только бинарный вариант этого модуля для 32 и 64-разрядной версии Ubuntu Linux. На все предложения поделиться исходными текстами они дипломатично не отвечают. Непродолжительные поиски привели на страницу проекта с аналогичным названием: konference. Как оказалось, последняя доступная версия 1.5 не работает с BigBlueButton, вызывая ошибки регистрации участников конференций:

2010-11-14 22:58:59,480 [NioProcessor-1] INFO  o.r.s.stream.ClientBroadcastStream - Provider connect
2010-11-14 22:58:59,481 [NioProcessor-1] INFO  o.r.s.stream.ClientBroadcastStream - Stream start
2010-11-14 22:58:59,481 [NioProcessor-1] INFO  o.r.s.stream.ClientBroadcastStream - Provider connect
2010-11-14 22:59:02,326 [Asterisk-Java ManagerConnection-0-Reader-0] WARN  o.a.m.i.ManagerConnectionImpl - Unexpected exception in eventHandler org.bigbluebutton.webconference.voice.asterisk.konference.KonferenceManager
org.springframework.integration.message.MessageHandlingException: Failed to process Message.
        at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:186) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:49) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:100) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:64) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.dispatcher.BroadcastingDispatcher.invokeHandler(BroadcastingDispatcher.java:119) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.dispatcher.BroadcastingDispatcher.dispatch(BroadcastingDispatcher.java:110) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:43) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:180) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:153) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:224) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:181) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.gateway.AbstractMessagingGateway.send(AbstractMessagingGateway.java:126) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:216) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:182) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.0.0.jar:3.0.0.RELEASE]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) [spring-aop-3.0.0.jar:3.0.0.RELEASE]
        at $Proxy6.handleConferenceEvent(Unknown Source) [na:na]
        at org.bigbluebutton.webconference.voice.asterisk.konference.KonferenceEventsTransformer.transform(KonferenceEventsTransformer.java:56) [KonferenceEventsTransformer.class:na]
        at org.bigbluebutton.webconference.voice.asterisk.konference.KonferenceManager.handleConferenceEvent(KonferenceManager.java:66) [KonferenceManager.class:na]
        at org.bigbluebutton.webconference.voice.asterisk.konference.KonferenceManager.onManagerEvent(KonferenceManager.java:101) [KonferenceManager.class:na]
        at org.asteriskjava.manager.internal.ManagerConnectionImpl.fireEvent(ManagerConnectionImpl.java:1245) [asterisk-java-1.0.0.M3.jar:na]
        at org.asteriskjava.manager.internal.ManagerConnectionImpl.dispatchEvent(ManagerConnectionImpl.java:1229) [asterisk-java-1.0.0.M3.jar:na]
        at org.asteriskjava.manager.internal.ManagerReaderImpl.run(ManagerReaderImpl.java:220) [asterisk-java-1.0.0.M3.jar:na]
        at java.lang.Thread.run(Thread.java:636) [na:1.6.0]
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1029E:(pos 8): A problem occurred when trying to execute method 'handleConferenceEvent' on object of type 'org.bigbluebutton.webconference.voice.ConferenceService': 'Problem invoking method: public void org.bigbluebutton.webconference.voice.ConferenceService.handleConferenceEvent(org.bigbluebutton.webconference.voice.events.ConferenceEvent)'
        at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:93) [spring-expression-3.0.0.jar:3.0.0.RELEASE]
        at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:57) [spring-expression-3.0.0.jar:3.0.0.RELEASE]
        at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93) [spring-expression-3.0.0.jar:3.0.0.RELEASE]
        at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:93) [spring-expression-3.0.0.jar:3.0.0.RELEASE]
        at org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:167) [spring-integration-core-2.0.0.M2.jar:2.0.0.M2]
        ... 23 common frames omitted

 

Раскопки с исходных текстах CURRENT версии этого модуля показали на большое количество изменений, необходимых для работы c BigBlueButton. Поэтому для работы конференций Asterisk в связке с BigBlueButton необходимо использовать CURRENT версию модуля konference, либо применить патч в виде diff между 1.5 и GIT CURRENT.

Все эти изыскания я оформил в виде порта net/appkonference, от которого будет зависеть грядущий порт
BigBlueButton.



Не делайте из еды культа!

Очень люблю готовить и вкусно покушать. А чтобы времени на эти увлекательные занятия оставалось как можно больше, я стараюсь автоматизировать любые задачи, которые оказываются в поле моей профессиональной деятельности.
В своем скромном дневнике я буду делиться с Вами рецептами блюд, которые удаются мне особенно хорошо