Hello All,

I have a problem with a SharedObject video conference app I am working on.

The app for RED5 is based on this example:
http://renaun.com/flex2/fms/VideoConferenceWDDJ/FlexVideoMain.html

This is a Flex2 app. I am using the War Version of RED5 and am running the
WAR version in Tomcat 5.5 with Java 1.6.

I have setup a videoconf folder in the server/webapp with an
Application.java that hold the appconnect appJoin and appLeave.

While I see the items below from the logs files where it says I connect I
never see any logs from Application.java file in the
server/webapps/videoconf folder.
This is a bit confusing.

If anyone with Flex and SharedObject Experience would like to take a look at
the java code and the Flex code and see what I am doing wrong,
I would appreciate it very much.

If so, please email me offline and I will make arrangements to get you the
code to review.

Once this is running properly, I would like to donate this to the RED5
examples for other to learn SharedObjects as well.

Would appreciate any help. I have been working on this for a little over a
week and a half.

Thanks,

Lenny

I am using Xpanel for Logging & Tracing in Flex 2 and I see successful
connections in both nc.connection and users_so.connect( nc ).

The problem appears when the following code runs.

public function usersSyncHandler( event:SyncEvent ):void
  {
   Logger.debug( "MAIN:usersSyncHandler" + event.target.data );
   var results:Object = event.target.data;
   var usersArray:Array = new Array();
   for( var a:String in results ) {
    var obj:Object = new Object();
    obj.name = results[ a ];
    obj.identifier = a;
   Logger.debug( "obj.name = "+ a );
    usersArray.push( obj );
   }
   dpUsers = new ArrayCollection( usersArray );
   Logger.debug( "dpUser :"+ dpUsers );
  }

and again when the following runs:

<mx:Tile height="100%" width="100%">
   <mx:Repeater id="rpUsers" dataProvider="{ dpUsers }">
    <VideoPod nc="{ nc }" isSender="{ rpUsers.currentItem.name ==
txtName.text }" userItem="{ rpUsers.currentItem }" />
   </mx:Repeater>
  </mx:Tile>

Now when I use the debugger in Flex 2 I get the following message:

!ENTRY org.eclipse.ui 4 0 2007-05-27 09:33:32.125
!MESSAGE Failed to execute runnable (java.lang.NullPointerException)
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (
java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:2942)
at org.eclipse.swt.SWT.error(SWT.java:2865)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java
:126)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3102)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2761)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java
:367)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
at com.adobe.flexbuilder.standalone.FlexBuilderApplication.run(
FlexBuilderApplication.java:103)
at org.eclipse.core.internal.runtime.PlatformActivator$1.run(
PlatformActivator.java:226)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java
:376)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java
:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
at org.eclipse.core.launcher.Main.run(Main.java:973)
at org.eclipse.core.launcher.Main.main(Main.java:948)
Caused by: java.lang.NullPointerException
at flash.tools.debugger.concrete.PlayerSession.obtainMembers(
PlayerSession.java:1070)
at flash.tools.debugger.concrete.DValue.obtainMembers(DValue.java:231)
at flash.tools.debugger.concrete.DValue.getMembers(DValue.java:192)
at com.adobe.flexbuilder.debug.djapi.wrappers.ThreadSafeValue.getMembers(
ThreadSafeValue.java:108)
at com.adobe.flexbuilder.debug.model.FlexValue$FlexVariableMembers.init(
FlexValue.java:690)
at
com.adobe.flexbuilder.debug.model.FlexValue$FlexVariableMembers.getMembers(
FlexValue.java:674)
at com.adobe.flexbuilder.debug.model.FlexValue.getVariables(FlexValue.java
:288)
at
org.eclipse.debug.internal.ui.views.expression.RemoteExpressionContentManager.mayHaveChildren
(RemoteExpressionContentManager.java:65)
at
org.eclipse.debug.internal.ui.views.variables.RemoteVariablesContentProvider.hasChildren
(RemoteVariablesContentProvider.java:141)
at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(
AbstractTreeViewer.java:1378)
at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(
AbstractTreeViewer.java:1680)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(
AbstractTreeViewer.java:1268)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(
AbstractTreeViewer.java:1245)
at org.eclipse.debug.internal.ui.views.RemoteTreeViewer.access$4(
RemoteTreeViewer.java:1)
at org.eclipse.debug.internal.ui.views.RemoteTreeViewer$3.run(
RemoteTreeViewer.java:415)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(
StructuredViewer.java:1201)
at org.eclipse.debug.internal.ui.views.RemoteTreeViewer.replace(
RemoteTreeViewer.java:392)
at org.eclipse.debug.internal.ui.views.variables.VariablesViewer.replace(
VariablesViewer.java:144)
at
org.eclipse.debug.internal.ui.views.RemoteTreeContentManager$1.runInUIThread
(RemoteTreeContentManager.java:214)
at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:93)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java
:123)
... 18 more



The following are some excerpts from my Tomcat log file regarding The RED5
Video Conference  app.

First is when the app is recognized:

[DEBUG] 11046 Thread-1:( org.red5.server.jmx.JMXAgent.registerMBean )
Register name: WebScope
[DEBUG] 11046 Thread-1:( org.red5.server.Server.addMapping ) Add mapping:
/videoconf => default
[DEBUG] 11046 Thread-1:( org.red5.server.Server.addMapping ) Add mapping:
10.2.0.10/videoconf => default
[DEBUG] 11046 Thread-1:( org.red5.server.Scope.hasChildScope ) Has child
scope? videoconf in [EMAIL PROTECTED] Depth = 0, Path = '', Name =
'default']
[DEBUG] 11046 Thread-1:( org.red5.server.Scope.addChildScope ) Add child
scope: [EMAIL PROTECTED] Depth = 1, Path = '/default', Name = 'videoconf']
to [EMAIL PROTECTED] Depth = 0, Path = '', Name = 'default']
[DEBUG] 11046 Thread-1:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 11062 Thread-1:(
org.red5.server.adapter.ApplicationAdapter.createSharedObject ) This is the
Scope name persistent [EMAIL PROTECTED] Depth = 1, Path = '/default', Name =
'videoconf'] users_so true
[INFO] 11078 Thread-1:( org.red5.server.so.SharedObjectService.getStore )
Created persistence store
[EMAIL PROTECTED] for shared objects.
[DEBUG] 11156 Thread-1:( org.red5.io.object.Deserializer.deserialize )
Datatype: String
[DEBUG] 11187 Thread-1:( org.red5.io.object.Deserializer.deserialize )
Datatype: String
[DEBUG] 11187 Thread-1:( org.red5.io.object.Deserializer.deserialize )
Datatype: List
[DEBUG] 11187 Thread-1:( org.red5.io.amf.Input.readMap ) Read start mixed
array: 0
[DEBUG] 11187 Thread-1:( org.red5.io.amf.Input.hasMoreProperties ) End of
object: ? true
[DEBUG] 11187 Thread-1:(
org.red5.server.persistence.FilePersistence.doLoad) Loaded persistent
object
[EMAIL PROTECTED] from
d:\java\Tomcat55\webapps\red5\persistence\SharedObject\users_so.red5
[DEBUG] 11187 Thread-1:( org.red5.server.Scope.addChildScope ) Add child
scope: Shared Object: users_so to [EMAIL PROTECTED] Depth = 1, Path =
'/default', Name = 'videoconf']

********************************************************************************************************************************************************************************************************
This portion shows where I connect successfully to the Flex Video app when I
enter in the login name.


[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? false
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? false
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.readKeyValues ) property: pageUrl
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.object.Deserializer.deserialize ) Datatype: String
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.readKeyValues ) val:
http://10.2.0.10:8080/red5/FlexVideoMain.html
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? false
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? false
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.readKeyValues ) property: objectEncoding
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.object.Deserializer.deserialize ) Datatype: Number
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.readKeyValues ) val: 3
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? true
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.amf.Input.hasMoreProperties ) End of object: ? true
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.object.Deserializer.deserialize ) Datatype: String
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.io.object.Deserializer.deserialize ) Datatype: String
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeNotifyOrInvoke )
Num params: 2
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeNotifyOrInvoke )  >
0: Lenny  < - Log in Flex app name
[DEBUG] 54812 SocketAcceptorIoProcessor-0.0:(
org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeNotifyOrInvoke )  >
1: Lenny
[DEBUG] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived ) Message received
[DEBUG] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived ) Stream Id:
ChannelId: 3, Timer: 1 (absolute), Size: 336, DateType: 20, StreamId: 0
[DEBUG] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived ) Channel:
[EMAIL PROTECTED]
[DEBUG] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke ) Invoke
[INFO] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke) call: Service: null
Method: connect Num Params: 20: Lenny1: Lenny
[INFO] 54843 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke) --connect
[DEBUG] 54859 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke ) connect
[DEBUG] 54859 pool-3-thread-2:(
org.red5.server.net.rtmp.BaseRTMPHandler.getHostname ) url:
rtmp://10.2.0.10/videoconf
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Server.lookupGlobal ) Check
host and path: 10.2.0.10/videoconf
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Scope.hasChildScope ) Has
child scope? videoconf in [EMAIL PROTECTED] Depth = 0, Path = '', Name =
'default']
[INFO] 54859 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke) Connecting to: [
[EMAIL PROTECTED] Depth = 1, Path = '/default', Name = 'videoconf']
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.CoreHandler.connect )
Connect to core handler ?
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 54859 pool-3-thread-2:(
org.red5.server.jmx.JMXFactory.createObjectName ) Object name:
org.red5.server:type=Client,id=0  < - ClientID from Flex App
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.jmx.JMXAgent.registerMBean )
Register name: Client
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Client.register )
Registering connection for this client
[DEBUG] 54859 pool-3-thread-2:( org.red5.server.Scope.connect ) adding
client
[DEBUG] 54921 pool-3-thread-2:(
org.red5.server.net.rtmp.codec.RTMPProtocolEncoder.encodeNotifyOrInvoke )
This is a pending call, send request
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 54921 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 54921 pool-3-thread-2:(
org.red5.server.net.rtmp.codec.RTMPProtocolEncoder.encodeNotifyOrInvoke )
Writing params
[DEBUG] 54937 pool-3-thread-2:(
org.red5.server.adapter.ApplicationAdapter.getSharedObject ) This is the
Scope being returned [EMAIL PROTECTED] Depth = 1, Path = '/default', Name =
'videoconf'] users_so true
[DEBUG] 54937 pool-3-thread-2:(
org.red5.server.adapter.ApplicationAdapter.getSharedObject ) This is the
Scope being returned [EMAIL PROTECTED] Depth = 1, Path = '/default', Name =
'videoconf'] users_so true
[DEBUG] 54937 pool-3-thread-2:(
org.red5.server.adapter.ApplicationAdapter.appConnect ) appConnect:
RTMPMinaConnection from 10.2.0.10:1416 to 10.2.0.10 (in: 3423, out: 3106)
[DEBUG] 54953 pool-3-thread-2:(
org.red5.server.adapter.ApplicationAdapter.appJoin ) appJoin: Client: 0 >> [
[EMAIL PROTECTED] Depth = 1, Path = '/default', Name = 'videoconf']
[DEBUG] 54953 pool-3-thread-2:( org.red5.server.Scope.connect ) adding
client
[DEBUG] 54953 pool-3-thread-2:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 54953 pool-3-thread-2:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 54968 pool-3-thread-2:(
org.red5.server.jmx.JMXFactory.createObjectName ) Object name:
org.red5.server:type=RTMPMinaConnection,connectionType=persistent,host=
10.2.0.10,port=1935,clientId=0
[DEBUG] 54968 pool-3-thread-2:( org.red5.server.jmx.JMXAgent.registerMBean )
Register name: RTMPMinaConnection
[DEBUG] 54968 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke ) connected
[DEBUG] 54968 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke ) client: Client: 0
[DEBUG] 54968 pool-3-thread-2:( org.red5.server.Scope.getContext ) returning
context
[DEBUG] 55000 pool-3-thread-2:(
org.red5.server.net.rtmp.RTMPHandler.onInvoke ) sending reply
[DEBUG] 55000 pool-3-thread-2:(
org.red5.server.net.rtmp.codec.RTMPProtocolEncoder.encodeNotifyOrInvoke )
Call has been executed, send result
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
serialize
[DEBUG] 55000 pool-3-thread-2:( org.red5.io.object.Serializer.serialize )
write basic
[DEBUG] 55000 pool-3-thread-2:(
org.red5.server.net.rtmp.codec.RTMPProtocolEncoder.encodeNotifyOrInvoke )
Writing result: {objectEncoding=3, application=null, level=status,
description=Connection succeeded., code=NetConnection.Connect.Success}  < -
Successful Connect to Flex app
_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org

Reply via email to