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
