Hello,
I am trying to create a simple chat client using the red5 media server, but I seem to be having a slight hiccup. I am creating a shared object on the server side, and it seems to be creating it successfully. However, when I make changes to the object via the client (type a message), the SYNC event fires, but the content within the shared object remains empty. I suspect I am doing something wrong on the java end, any advice? 
Console Results:
Success!
Server Message: clear
Server Message: [object Object]
Local message: asdf
Server Message: change
Server Message: [object Object]
Local message: fdsa
Server Message: change
Server Message: [object Object]
Local message: fewa
Server Message: change
Server Message: [object Object]
Server Side:
    package org.red5.core;
import java.util.List;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
import org.red5.server.api.IScope;
import org.red5.server.api.service.ServiceUtils;
import org.red5.server.api.so.ISharedObject;
// import org.apache.commons.logging.Log;
// import org.apache.commons.logging.LogFactory;
public class Application extends ApplicationAdapter {
    private IScope appScope;
    // private static final Log log = LogFactory.getLog( Application.class );
    /** {@inheritDoc} */
    @Override
    public boolean connect(IConnection conn, IScope scope, Object[] params) {
        appScope = scope;
        createSharedObject(appScope, "generalChat", false); // Creates general chat shared object
    	return true;
    }
    /** {@inheritDoc} */
    @Override
    public void disconnect(IConnection conn, IScope scope) {
    	super.disconnect(conn, scope);
    }  
    public void updateChat(Object[] params)
    {
        ISharedObject so = getSharedObject(appScope, "generalChat"); // Declares and stores general chat data in general chat shared object
        so.setAttribute("point", params[0].toString());
    } 
}
Client Side:
package
{
    import flash.display.MovieClip;
    import flash.events.*;
    import flash.net.*;	
    // This class is going to handle all data to and from from media server
    public class SOConnect extends MovieClip
    {
    	// Variables
    	var nc:NetConnection = null;
    	var so:SharedObject;		
    	public function SOConnect():void
    	{
    	}	
    	public function connect():void
    	{		
    		// Create a NetConnection and connect to red5
    		nc = new NetConnection();
    		nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
    		nc.connect("rtmp://localhost/testChat");
    		// Create a StoredObject for general chat
    		so = SharedObject.getRemote("generalChat", nc.uri, false);			
    		so.connect(nc);
    		so.addEventListener(SyncEvent.SYNC, receiveChat)			
    	}
    	public function sendChat(msg:String)
    	{
    		trace ("Local message: " + msg);
    		nc.call("updateChat", null, msg)					
    	}
    	public function receiveChat(e:SyncEvent):void
    	{			
    		for (var i in e.changeList)
    		{
    			trace ("Server Message: " + e.changeList[i].code)
    			trace ("Server Message: " + e.changeList[i])
    		}						
    	}
    	// Given result, determine successful connection		
    	private function netStatusHandler(e:NetStatusEvent):void
    	{
    		if (e.info.code == "NetConnection.Connect.Success")
    		{
    			trace("Success!");
    		}
    		else 
    		{
    			trace("Failure!\n");	
    			trace(e.info.code);
    		}
    	}
    }
}