<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUQNRX88fSp7ImA9WhRXGUs.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838</id><updated>2011-12-26T21:23:14.175-08:00</updated><category term="Adobe Air" /><category term="PackagerUbuntu" /><category term="Jetty" /><category term="Blackberry PlayBook" /><category term="BlazeDS" /><category term="Flex" /><category term="Ubuntu" /><category term="Java" /><category term="Android" /><category term="Red5" /><category term="AMF" /><category term="Funny" /><category term="JInput" /><title>JDesconectado Ria y un poco más</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jdesconectado.blogspot.com/" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/JdesconectadoRiaYUnPocoMs" /><feedburner:info uri="jdesconectadoriayunpocoms" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEYDRXc4eyp7ImA9WhdUFko.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-4993994774387344522</id><published>2011-10-03T12:27:00.000-07:00</published><updated>2011-10-03T14:09:34.933-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T14:09:34.933-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Jetty" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Using Embed Jetty and BlazeDS Remoting with Adobe AIR</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nSnIyJmuOpOyYIA_0ZEI3Qbkpag/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nSnIyJmuOpOyYIA_0ZEI3Qbkpag/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nSnIyJmuOpOyYIA_0ZEI3Qbkpag/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nSnIyJmuOpOyYIA_0ZEI3Qbkpag/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;When we need to communicate with server side data from an Adobe AIR application we usually use HTTP services, Web Services or Remoting this works great, but what&amp;nbsp;happens when we need to create an standalone application? We have options like merapi, flerry and transmission...&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I want to show you how to embed Jetty Server in an Adobe Air application and use BlazeDS for communication. The use case is simple access a MySQL server directly from Adobe AIR but with this option you might experiment and create better use cases for this.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
We need to download the following:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Jetty library (i use jetty-all-7.4.0.RC0.jar)&lt;/li&gt;
&lt;li&gt;Servlet api (i use servlet-api-2.5.jar)&lt;/li&gt;
&lt;li&gt;Mysql Connector&lt;/li&gt;
&lt;li&gt;BlazeDS 4&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Let's coding:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
First we create a simple table for sample purposes:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-z4fSYrTbVgc/Tk3WkfNgFhI/AAAAAAAAAM0/YKexRk4GQWg/s1600/18-08-2011_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-z4fSYrTbVgc/Tk3WkfNgFhI/AAAAAAAAAM0/YKexRk4GQWg/s1600/18-08-2011_01.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Java side:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
First we create a simple Java Project and add the 2 jars in the classpath.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Product.java&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1155959.js"&gt;
 
&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
Here i use plain JDBC but you can use JPA, Hibernate, etc.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;ProductDAO.java&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1155960.js"&gt;
 
&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;ProductServices.java&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1155963.js"&gt;
 
&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
This is a very important class, here we are going to create the Server instance and start it.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Note: I assume that you know something about embedding servers, if you want some background &lt;a href="http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty"&gt;here&lt;/a&gt; you can find a great resource.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;BlazeDSServer.java&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1155965.js"&gt;
 
&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
Now we need to extract the BlazeDS.war content. create a folder called webapp inside your src folder with this content, your project structure should look like this.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-8VMCcPrhnnc/Tk3WmBAtv1I/AAAAAAAAAM4/kCQVxOuE1LY/s1600/18-08-2011_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-8VMCcPrhnnc/Tk3WmBAtv1I/AAAAAAAAAM4/kCQVxOuE1LY/s400/18-08-2011_02.png" width="216" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The last thing you need to do is declare a remote destination on your services-config.xml&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1155968.js"&gt;
 
&lt;/script&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we code the Air side:&lt;/div&gt;
&lt;div&gt;
Fist create an asset folder inside your air src folder and copy all the bin folder from your java project&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-yFI61jWz-nA/TooJMYDq5nI/AAAAAAAAANE/ngnMkm9WN7A/s1600/3-10-2011_EJ.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-yFI61jWz-nA/TooJMYDq5nI/AAAAAAAAANE/ngnMkm9WN7A/s400/3-10-2011_EJ.PNG" width="265" /&gt;&lt;/a&gt;&lt;/div&gt;
As you can see i made the same copy into the bin-debug folder, i don't know why it doesn't export all the files to the bin-debug.&lt;br /&gt;
&lt;br /&gt;
Now let's code the application, first in the descriptor file enable the extended desktop profile so you can use Native Process&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-6_Z5j-iuNS0/TooKdYWuWHI/AAAAAAAAANI/THfzO8IDGWE/s1600/3-10-2011_EJ_02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://4.bp.blogspot.com/-6_Z5j-iuNS0/TooKdYWuWHI/AAAAAAAAANI/THfzO8IDGWE/s640/3-10-2011_EJ_02.PNG" width="640" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Now &amp;nbsp;the code:&lt;br /&gt;
&lt;br /&gt;
EmbedJetty.mxml&lt;/div&gt;
&lt;/div&gt;
&lt;script src="https://gist.github.com/1259961.js"&gt;
 
&lt;/script&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
Now let's take a more closer view to the code:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;First the executable file will be the Java path so it depends on your machine.&lt;/li&gt;
&lt;li&gt;I use NativeProcess to start the embed Jetty instance and a socket to shutdown the embed jetty instance.&lt;/li&gt;
&lt;li&gt;The arguments for the NativeProcessStartupInfo are the necessary classes to make the Java desktop app run. In the application:&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;blockquote&gt;
args.push("-classpath");&lt;/blockquote&gt;
&lt;blockquote&gt;
args.push(".;lib/jetty-all-7.4.0.RC0.jar;lib/servlet-api-2.5.jar;lib/mysql-connector.jar");&lt;/blockquote&gt;
&lt;blockquote&gt;
args.push("BlazeDSServer");&amp;nbsp;&lt;/blockquote&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Once it connects you can use RemoteObjects to make rpc call to your Java code.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;You can use messaging too.&lt;/li&gt;
&lt;/ul&gt;
Before you run check your ip match with the socket connection ip, and verify the JDBC setting in the Java code.&lt;br /&gt;
&lt;br /&gt;
When you click the start server button, in the text area you see the log comming from the server.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-y7JCO2s_gUU/ToodMLWDvsI/AAAAAAAAANM/UZBEQ2CdnTs/s1600/3-10-2011_EJ_03.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="441" src="http://2.bp.blogspot.com/-y7JCO2s_gUU/ToodMLWDvsI/AAAAAAAAANM/UZBEQ2CdnTs/s640/3-10-2011_EJ_03.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;/ul&gt;
Now click the Get Data button and in my case the screen will be the following:&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-u9xAXpveF70/Tood1n49l-I/AAAAAAAAANQ/3w1EFGB3F6g/s1600/3-10-2011_EJ_04.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="441" src="http://1.bp.blogspot.com/-u9xAXpveF70/Tood1n49l-I/AAAAAAAAANQ/3w1EFGB3F6g/s640/3-10-2011_EJ_04.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Stop the server by clicking the Stop Server button.&lt;br /&gt;
&lt;br /&gt;
And that's all, hope this will help you, any question or bug please let me know.&lt;br /&gt;
&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/EmbedJetty_Java.rar?attredirects=0&amp;amp;d=1"&gt;Here is the source code for the Java Project&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/EmbedJetty.rar?attredirects=0&amp;amp;d=1"&gt;Here is the Source code for the Flex Project&lt;/a&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-4993994774387344522?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/b1TzLdozEqE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/4993994774387344522/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2011/10/using-embed-jetty-and-blazeds-remoting.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4993994774387344522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4993994774387344522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/b1TzLdozEqE/using-embed-jetty-and-blazeds-remoting.html" title="Using Embed Jetty and BlazeDS Remoting with Adobe AIR" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-z4fSYrTbVgc/Tk3WkfNgFhI/AAAAAAAAAM0/YKexRk4GQWg/s72-c/18-08-2011_01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2011/10/using-embed-jetty-and-blazeds-remoting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8GSHYzeCp7ImA9WhdUFko.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-5275000080492733907</id><published>2011-08-26T00:37:00.000-07:00</published><updated>2011-10-03T14:20:29.880-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T14:20:29.880-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Using BlazeDS Remote Object and Java to Upload and get Files</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oDU_Gpy2UWQkfzOtFgeeCXEO8is/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDU_Gpy2UWQkfzOtFgeeCXEO8is/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oDU_Gpy2UWQkfzOtFgeeCXEO8is/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDU_Gpy2UWQkfzOtFgeeCXEO8is/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;In a Java/Flex project i have been working on we need to upload and download images, simply task no? Yes... is simple we use the FileReference class and point this to a servlet then simply use the upload method.&lt;br /&gt;
&lt;br /&gt;
Really easy when you run in your local machine but what happens when we run this in a remote machine... let me think... ah! yes the lovely Flash Player Sandbox Security Exception... ok! we can handle it, just use crossdomain.xml file and run your application again and...&amp;nbsp;Flash Player Sandbox Security Exception again (dear this is becoming my best friend), then &lt;a href="http://stackoverflow.com/questions/679952/flex-issue-with-crossdomain-xml-and-filereference-upload"&gt;i read&lt;/a&gt;, to upload a file Flash player uses the socket api and now we need a socket policy file... so i give up and try to do it in another way.&lt;br /&gt;
&lt;br /&gt;
Today i show you how you can do a kind of &amp;nbsp;"upload" and "show" a remote file using Remote Objects and the lovely BlazeDS. So let's start&lt;br /&gt;
&lt;br /&gt;
We use a Java class (not servlet) to manage the upload and the get of a file.&lt;br /&gt;
&lt;br /&gt;
In the Java side we have two methods uploadFile and getFile, the first one uses the name, the directory and the content as an byte array to write a file in the disk using the FileOutputStream class. For the second method we need the full file name (directory + file name) and use the FileInputStream to read it and put the data in a byte array and the send it to Flex.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;FileUtils.java&lt;/b&gt; &amp;nbsp; &lt;br /&gt;
&lt;script src="https://gist.github.com/1172900.js"&gt;
 
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
Don't forget to change your remoting-config.xml :-)&lt;br /&gt;
&lt;br /&gt;
And in the flex side we still use the FileReference but this time only for load the file, and then we use remote objects to send the chunk of data, the file name and the directory to the upload method, for getting the file the java side just send the chunk of data and we manage it with a ByteArray and show it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1172905.js"&gt;
 
&lt;/script&gt;
&lt;br /&gt;
That's all now you can upload a file using a remote object and show this file with this two methods, and remember to secure your endpoints and externalize your server configuration. Any question or mistakes just let me know. Thanks for reading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-5275000080492733907?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/mdE1gl4E3wk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/5275000080492733907/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2011/08/using-blazeds-remote-object-and-java-to.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5275000080492733907?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5275000080492733907?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/mdE1gl4E3wk/using-blazeds-remote-object-and-java-to.html" title="Using BlazeDS Remote Object and Java to Upload and get Files" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2011/08/using-blazeds-remote-object-and-java-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMAQng8fSp7ImA9WhZWFUw.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-7797377487860849679</id><published>2011-05-15T20:38:00.000-07:00</published><updated>2011-05-15T20:44:03.675-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-15T20:44:03.675-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Creating Dynamic Remote Destinations with BlazeDS</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y2ycj2YerVb9eTxEDOQHmm7WjlQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y2ycj2YerVb9eTxEDOQHmm7WjlQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y2ycj2YerVb9eTxEDOQHmm7WjlQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y2ycj2YerVb9eTxEDOQHmm7WjlQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Doing remoting with Flex and BlazeDS is great, you set up your remoting-config.xml with your destinations and them consume this destination with your Flex client, that's good if you have your destinations hardcoded in your xml file, but there are times when you want to create your remoting destinations dynamically, taking &lt;a href="http://quetwo.com/2011/05/15/creating-runtime-remoting-destinations-in-blazeds-and-livecycle-data-services/"&gt;this post&lt;/a&gt;&amp;nbsp;as a base i will show you how to do this with BlazeDS in a simple example.&lt;br /&gt;
&lt;br /&gt;
First we create a class called DestinationHelper this will contain all the classes you want to create at run time, read the comments so you know exactly what are you doing for a&amp;nbsp;deeper&amp;nbsp;explanation&amp;nbsp;please read &lt;a href="http://quetwo.com/2011/05/15/creating-runtime-remoting-destinations-in-blazeds-and-livecycle-data-services/"&gt;this post&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/973854.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I take the great explanations of&amp;nbsp;&lt;a href="http://quetwo.com/"&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', 'Lucida Sans', 'Lucida Sans Unicode', Arial, sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;b&gt;Nick Kwiatkowski&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;and change a little so this can match the example, please all the credits go to him.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The first thing we do is call the createDestination() function&amp;nbsp;on the remoting-service and cast this to a RemotingDestination.&amp;nbsp; This will pass back a reference to the new destination that was created for us with the name we passed in.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Next, we set the source property.&amp;nbsp; Since we are working within Java, this could be the dot-path-name of the Java class we are working with, or * to allow our dynamic destination to talk to&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ANY&lt;/em&gt;&amp;nbsp;Java Class. &amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The next thing we do is set up the Adapter.&amp;nbsp; The adapter is what actually processes the requests from our connected Flex client and sends it over to Java to be worked on.&amp;nbsp; In our case, I am having a Java Adapter do the processing, so I went with the “java-object” adapter.&amp;nbsp; There are a variety of adapters available, and depending on your situation, you may want to choose from a list of adapters, or use the getDefaultAdapter() method&amp;nbsp;to find out what is the default for the service you are working on.&amp;nbsp; Creating an instance of the adapter involves calling the createAdapter() method on the destination.&amp;nbsp; What is returned to you is a reference to the adapter that isn’t initialized yet.&amp;nbsp; When diving through the source code — this is what screwed me up the most, as I was under the impression that the createAdapter() was all I had to call to get things working.&amp;nbsp; If that is all you do, you will get NullPointerException errors when you try to pass data to the destination.&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;In order to initialize the adapter, you need to pass in a property with the type of a&amp;nbsp;ConfigMap.&amp;nbsp; The ConfigMap&amp;nbsp;holds the configuration properties that the adapter is expecting.&amp;nbsp; There are lots of properties that could be set (and if you want to get a general idea of what they are, take a look at the XML config).&amp;nbsp; In theory, you should be able to pass in an empty ConfigMap&amp;nbsp;to the initialize method and it will take all the defaults (which work in my case), but there is a bug in the JavaAdapter (Yes in the Java adapter too) that requires to you set the&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;use-mappings&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;method-access-level&lt;/em&gt;&amp;nbsp;properties to something or you can’t send any data to the destination.&amp;nbsp; These two properties are within a ConfigMap&amp;nbsp;named “access” (again, take a look at the XML in the remoting-config.xml to see how this translates).&amp;nbsp; Finally, in order to initialize the adapter, we pass in the ConfigMap we just setup to the initialize() method and we are set.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Our final steps include binding our newly created adapter instance to the destination by using the setAdapter() method, and setting the channel that the destination will bind to.&amp;nbsp; If I wasn’t making the assumption that the channel “my-amf” already exists, I could call the getChannels() method on the Message Broker to verify that it is one of the ones available.&amp;nbsp; If the channel wasn’t available, I could create using a similar method as above.&amp;nbsp; And finally, we need to start the instance.&amp;nbsp; Call the start() method to start it.&amp;nbsp; If everything is set up right, you should be able to send data to your new destination!&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-7797377487860849679?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/ER6do1ELttY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/7797377487860849679/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2011/05/creating-dynamic-remote-destinations.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7797377487860849679?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7797377487860849679?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/ER6do1ELttY/creating-dynamic-remote-destinations.html" title="Creating Dynamic Remote Destinations with BlazeDS" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2011/05/creating-dynamic-remote-destinations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHR30_fCp7ImA9Wx9VGEg.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-5756440684155189841</id><published>2011-02-03T22:17:00.000-08:00</published><updated>2011-02-04T14:38:56.344-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-04T14:38:56.344-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Red5" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Realtime Data Synchronization between Flex and Air for Android using Red5</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6hgY9IFs_4u_SJ1Nr5bz2NVXJhA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hgY9IFs_4u_SJ1Nr5bz2NVXJhA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6hgY9IFs_4u_SJ1Nr5bz2NVXJhA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hgY9IFs_4u_SJ1Nr5bz2NVXJhA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;After a January break, i going to write more about Air for Android specifically targeting to Realtime data synchronization, in this post i'm going to show you how you can synchronize Adobe Air with Adobe Air for Android in true realtime using Red5 RTMP.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Requirements:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Adobe Flash Builder Burrito Preview.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Flex 4.5 "Hero" (Comes with Flash Builder Burrito)&lt;/li&gt;
&lt;li&gt;Red5 Server.&lt;/li&gt;
&lt;li&gt;Eclipse 3.4+ with Red5 Plugin installed. If you don't know how to install here is a little tutorial.&lt;/li&gt;
&lt;li&gt;Some basic AS3 knowledge is recommended.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Hardware:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Toshiba dualcore laptop 6gb ram running windows 7.&lt;/li&gt;
&lt;li&gt;Google Nexus S smartphone with Air for Android installed. &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;So let's code.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Server Side:&lt;/b&gt;&lt;br /&gt;
If you successfully install Red5 plugin into eclipse, this part will be straightforward. Create a new Dynamic Web Application and call it MoveServer, set the Target Runtime to Red5, in Configuration click the Modify button and make sure &amp;nbsp;that Red5 Application Generation is Selected.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUt5qQqGd7I/AAAAAAAAAIs/fZqcMooa7gs/s1600/img01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUt5qQqGd7I/AAAAAAAAAIs/fZqcMooa7gs/s640/img01.PNG" width="541" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TUt5sNx6UAI/AAAAAAAAAIw/t61rHe8Bjvw/s1600/img02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="566" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TUt5sNx6UAI/AAAAAAAAAIw/t61rHe8Bjvw/s640/img02.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TUt5qQqGd7I/AAAAAAAAAIs/s1600/img01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now click finish and the Red5 Plugin will generate two Projects a Java Dynamic Web Application and a Flex application, delete the flex application. Now one more change, go to the red5-web.properties located in under WebContent/Web-INF and add the ip of your machine in your virtualHosts. You might wondering why do this since there is a localhost well when you try to connect from your phone it will try to connect to localhost and since there is no localhost in the phone it will not work.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;red5-web.properties&lt;/b&gt;&lt;br /&gt;
webapp.contextPath=/MoveServer&lt;br /&gt;
webapp.virtualHosts=localhost, 127.0.0.1, 192.168.1.2, &lt;your ip=""&gt;&lt;br /&gt;
&lt;/your&gt;&lt;br /&gt;
&lt;br /&gt;
Thats all for the server side. Now let's continue with the client side: The application that i will build is pretty simple an image in the screen that uses the phone accelerometer to move around the screen and for the desktop version instead of the accelerometer y use mouse events to move the image this to applications will be synchronize in real time.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Client Side:&lt;/b&gt;&lt;br /&gt;
In Flash Builder Burrito create a new Flex Mobile Project call this BallMovementMobile and Select Hero has your Flex SDK.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUuChT18-II/AAAAAAAAAI0/LEbiEITiLUo/s1600/img03_03-02-2011.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUuChT18-II/AAAAAAAAAI0/LEbiEITiLUo/s400/img03_03-02-2011.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Next target to Google Android, select Blank as the application template and finally uncheck Automatically Reorient, you don't need any server settings so hit finish.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TUuCiJh-XLI/AAAAAAAAAI4/ErRaBieiJ0g/s1600/img04_03-02-2011.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TUuCiJh-XLI/AAAAAAAAAI4/ErRaBieiJ0g/s400/img04_03-02-2011.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Now search for any image and use it, i use a soccer ball. Put the image in a assets folder under the src folder&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUuHBgzgzbI/AAAAAAAAAI8/463gBeup6N8/s1600/img05_03-02-2011.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUuHBgzgzbI/AAAAAAAAAI8/463gBeup6N8/s1600/img05_03-02-2011.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Now add and image component to your mxml file:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;BallMovementMobile.mxml&lt;/b&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/810756.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Now let check if our phone has accelerator and add the event listeners so we can use the accelerometer events, add an creation complete event in your main application tag and add the following:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;BallMovementMobile.mxml&lt;/b&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/810766.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
The next step is add a net connection and a shared object to out application:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;BallMovementMobile.mxml&lt;/b&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/810770.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Some words about the code above:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I put the accelerometer.setRequestUpdateInterval to 50 so i can get a faster update from the accelerometer, here you can play with the values to preserve your battery life.&lt;/li&gt;
&lt;li&gt;In the SharedObject getRemote method i named it "victor" you can put any value you want.&lt;/li&gt;
&lt;li&gt;The Sync event is where all the magic happens, here all the clients are notified that something has change and they must synchronize with that changes.&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;Now let's add the code for sync and accelerometer update events:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;BallMovementMobile.mxml&lt;/b&gt;&lt;br /&gt;
&lt;script src="https://gist.github.com/810781.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Some words about the code:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In the accelerometerUpdate handler i calculate the upper bound and the lower bound for the width and height, then get the x and y values given by the accelerometer, check if the value is not greater than the upper bound or lower than the lower bound and update the image x and y has necessary.&lt;/li&gt;
&lt;li&gt;When i update the shared object i call it "ballCoordinates" again you can use any word here.&lt;/li&gt;
&lt;li&gt;In the sync event i get the shared object data and update the image x and y.&lt;/li&gt;
&lt;li&gt;Finally i add and native deactivate event so the application will not run in the background, again this is for cpu saving. (You can read more Air for Android tips here)&lt;/li&gt;
&lt;/ul&gt;The final step for the mobile application, change the application descriptor properties as follows:&lt;br /&gt;
&lt;script src="https://gist.github.com/810789.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
Now create an Air application (not mobile) use the same image and add the following code:&lt;br /&gt;
&lt;script src="https://gist.github.com/810790.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are a little code differences but it's almost the same application.&lt;br /&gt;
&lt;br /&gt;
Now run both applications and move your phone and the two screens will be synchronized in realtime.&lt;br /&gt;
&lt;br /&gt;
That's all here is the source code for the &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/BallMovementMobile.rar?attredirects=0&amp;amp;d=1"&gt;mobile&lt;/a&gt; the &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/BallMovementDesktop.rar?attredirects=0&amp;amp;d=1"&gt;desktop&lt;/a&gt; and the &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/MoveServer.rar?attredirects=0&amp;amp;d=1"&gt;server application&lt;/a&gt;. Here is a quick demo of the application:&lt;br /&gt;
&lt;br /&gt;
&lt;object width="630" height="380"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jeL7rtq-NF0?hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/jeL7rtq-NF0?hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="630" height="380"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Recommendation: &lt;/b&gt;When you use the source code please make sure you change the parameters according to your system.&lt;br /&gt;
&lt;br /&gt;
If you have any question or found a mistake or bug please let me know. Thanks&lt;br /&gt;
&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-5756440684155189841?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/6jzFOE6aBP0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/5756440684155189841/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2011/02/realtime-data-synchronization-between.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5756440684155189841?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5756440684155189841?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/6jzFOE6aBP0/realtime-data-synchronization-between.html" title="Realtime Data Synchronization between Flex and Air for Android using Red5" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TUt5qQqGd7I/AAAAAAAAAIs/fZqcMooa7gs/s72-c/img01.PNG" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2011/02/realtime-data-synchronization-between.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QBR3c5fCp7ImA9Wx9RF04.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-2229855634067374986</id><published>2010-12-18T22:15:00.000-08:00</published><updated>2010-12-18T22:15:56.924-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-18T22:15:56.924-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Blackberry PlayBook" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Install Blackberry PlayBook Simulator in Ubuntu 10.10</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EX6Hk9-zcu12viDQXCAA_FEi_Ck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EX6Hk9-zcu12viDQXCAA_FEi_Ck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EX6Hk9-zcu12viDQXCAA_FEi_Ck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EX6Hk9-zcu12viDQXCAA_FEi_Ck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2b2oE8kTI/AAAAAAAAAIA/dIlYTxEXqq4/s1600/Imagen08_19_12.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="234" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2b2oE8kTI/AAAAAAAAAIA/dIlYTxEXqq4/s320/Imagen08_19_12.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Today we are going to install the Blackberry Playbook Simulator, so you can create and test applications for this awesome device before running on the real device. This device is awesome, the specifications are very impressive, check all in the blackberry - playbook web page&amp;nbsp;&lt;a href="http://us.blackberry.com/playbook-tablet/"&gt;http://us.blackberry.com/playbook-tablet/&lt;/a&gt;, and like blackberry always say &lt;b&gt;this device is Enterprise Ready&lt;/b&gt; :D.&lt;br /&gt;
&lt;br /&gt;
The good news with the last update of the Blackberry Playbook site is the linux release of both products: the simulator and the sdk (i have been waiting for this!!!). So let's install the Blackberry Playbook Simulator in Ubuntu 10.10.&lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Blackberry Playbook Simulator.&lt;/li&gt;
&lt;li&gt;VMware Player 3.1.3. If you have problems installing VMware Player in Ubuntu 10.10 check &lt;a href="http://blog.mattrudge.net/2010/10/11/vmware-player-on-ubuntu-10-10-maverick-meerkat/"&gt;this&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;The machine that i use for this installation has Ubuntu 10.10 - 64bits installed.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The first we need is to install the Simulator, open the terminal change the directory where you download your installer and run the following command:&lt;/div&gt;&lt;blockquote&gt;&lt;b&gt;chmod +x BlackBerryPlayBookSimulator-Installer-Linux.bin &amp;nbsp;&lt;/b&gt;&lt;/blockquote&gt;This command will give execute permissions to our installer. Now execute the installer:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;./BlackBerryPlayBookSimulator-Installer-Linux.bin &amp;nbsp;&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;
&amp;nbsp;Now you get the installer interface:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2Dd5PgFcI/AAAAAAAAAHE/9gs3VtBGFpo/s1600/Imagen01_18_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2Dd5PgFcI/AAAAAAAAAHE/9gs3VtBGFpo/s1600/Imagen01_18_12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Click next and read the License Agreement, click in the I accept radio button and then click next, the next screen is very important:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQ2Eah2bNrI/AAAAAAAAAHI/hAY5l3Nj7xI/s1600/Imagen02_18_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQ2Eah2bNrI/AAAAAAAAAHI/hAY5l3Nj7xI/s1600/Imagen02_18_12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Select in which folder do you want to install the Simulator, well the only thing you will get is the image for the simulator, click next and review the Pre-Installation Summary.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2FPTsHvhI/AAAAAAAAAHM/d19v5VOPrxM/s1600/Imagen03_18_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2FPTsHvhI/AAAAAAAAAHM/d19v5VOPrxM/s1600/Imagen03_18_12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;Click install, once the installer finish click the Done button, now go to folder where you just install the Simulator, in this folder find the BlackBerryPlayBookSimulator.iso, now we start our VMware Player.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2XYM5rbhI/AAAAAAAAAHo/IX_gW4vkNZY/s1600/Imagen01_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="336" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2XYM5rbhI/AAAAAAAAAHo/IX_gW4vkNZY/s400/Imagen01_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Now create a new virtual machine click the Create a New Virtual &amp;nbsp;Machine button this will show the new Virtual Machine Wizard, &amp;nbsp; click Next and this will bring the following screen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2YBiXmwvI/AAAAAAAAAHs/MP8xFKf0kHY/s1600/Imagen03_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2YBiXmwvI/AAAAAAAAAHs/MP8xFKf0kHY/s400/Imagen03_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Select the Installer from iso and then click Browse and select the&amp;nbsp;BlackBerryPlayBookSimulator.iso image, this will display an alert we fix this later. Now click Next and the following screen appear:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2ZDLD1-ZI/AAAAAAAAAHw/iu87BvPvYXE/s1600/Imagen04_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TQ2ZDLD1-ZI/AAAAAAAAAHw/iu87BvPvYXE/s400/Imagen04_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;Take care about the Operating System and Version options both must be Other and Other then hit Next.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2ZwE3pYeI/AAAAAAAAAH0/VC_6xWOfY1Q/s1600/Imagen05_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="351" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2ZwE3pYeI/AAAAAAAAAH0/VC_6xWOfY1Q/s400/Imagen05_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
In this screen you have to specify the name and the location of the virtual machine then click next.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2aFQjBVbI/AAAAAAAAAH4/W3JSFsXcXs8/s1600/Imagen06_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="353" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2aFQjBVbI/AAAAAAAAAH4/W3JSFsXcXs8/s400/Imagen06_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Here specify the disk size and the type of virtual disk, make sure you select the single file virtual disk and click next.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2bN7wCkUI/AAAAAAAAAH8/uPXryoes_dM/s1600/Imagen07_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="353" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2bN7wCkUI/AAAAAAAAAH8/uPXryoes_dM/s400/Imagen07_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;In this screen click the Customize Hardware button.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2cOSjU4TI/AAAAAAAAAIE/-TIrbRmI03Q/s1600/Imagen09_19_12.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2cOSjU4TI/AAAAAAAAAIE/-TIrbRmI03Q/s400/Imagen09_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Here there are some settings you must check in your virtual machine:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;At least 1 Gb of Ram is&amp;nbsp;recommended.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt;In the Display category check the Accelerate 3D graphics.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
Then click Save and Finish the installation, during the installation a new screen appeared, just say yes:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2eR_jkqLI/AAAAAAAAAII/W7ZTTABVFXo/s1600/Imagen10_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="473" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2eR_jkqLI/AAAAAAAAAII/W7ZTTABVFXo/s640/Imagen10_19_12.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;Now wait a moment.... and the Blackberry PlayBook simulator will be running in your VMware Player :D.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2hbvv7zKI/AAAAAAAAAIM/PjENVqqVVWg/s1600/Imagen11_19_12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQ2hbvv7zKI/AAAAAAAAAIM/PjENVqqVVWg/s400/Imagen11_19_12.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
In my next post i will show you how to install the Blackberry PlayBook SDK and create your first application for this simulator of course in Linux and specifically in Ubuntu. If you have any question about this tutorial let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-2229855634067374986?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/pAvo73UeJ8w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/2229855634067374986/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/12/install-blackberry-playbook-simulator.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/2229855634067374986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/2229855634067374986?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/pAvo73UeJ8w/install-blackberry-playbook-simulator.html" title="Install Blackberry PlayBook Simulator in Ubuntu 10.10" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TQ2b2oE8kTI/AAAAAAAAAIA/dIlYTxEXqq4/s72-c/Imagen08_19_12.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/12/install-blackberry-playbook-simulator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IFRHgycCp7ImA9Wx9RE0s.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-7180749602815592585</id><published>2010-12-14T14:09:00.000-08:00</published><updated>2010-12-14T14:25:15.698-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-14T14:25:15.698-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="AMF" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Java AMF Client: Using AMF with JSP</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Tou3OLLrwW2J32QZOQ_7FRnEiOQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tou3OLLrwW2J32QZOQ_7FRnEiOQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Tou3OLLrwW2J32QZOQ_7FRnEiOQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tou3OLLrwW2J32QZOQ_7FRnEiOQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;In this post i will be posting how to get the efficient AMF connection to work with a Java client specifically JSP, you can use any other java client but for this port i will use JSP.&lt;br /&gt;
&lt;br /&gt;
There are times when you want an efficient protocol to transport data, ok you can use AMF but what about the client... most of people think that since AMF is a protocol created by Adobe you should use a Flash Player client to get this work, the true is that you could use another type of client like Java for example, so let see how can we use this.&lt;br /&gt;
&lt;br /&gt;
BlazeDS has a class called AMFConnection this will help us to get the work done so let get stated:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Requirements:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Eclipse IDE&lt;/li&gt;
&lt;li&gt;BlazeDS: You must have some knowledge in setup BlazeDS, if not check my tutorial About &lt;a href="http://jdesconectado.blogspot.com/2010/07/conectar-blazeds-con-java.html"&gt;Connect BlazeDS with Java&lt;/a&gt;&amp;nbsp;(Spanish) or you can check this good tutorial of Technical Evangelist Sujit Reddy -&amp;nbsp;&lt;a href="http://sujitreddyg.wordpress.com/2009/04/07/setting-up-blazeds/"&gt;Setting up BlazeDS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;MySQL and Mysql Driver.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;So first create a database, call it test_db and a table called person, this table has the following columns:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQfQdMGNS1I/AAAAAAAAAG4/6K3U3vGarBI/s1600/Selecci%25C3%25B3n_004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQfQdMGNS1I/AAAAAAAAAG4/6K3U3vGarBI/s1600/Selecci%25C3%25B3n_004.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Now populate the table with some data, if you work with little amount of data you can't see the real power of AMF, but for this example some records will be&amp;nbsp;enough, &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/Sentencias.sql?attredirects=0&amp;amp;d=1"&gt;here&lt;/a&gt; there is a small Sql script for doing that.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the Eclipse IDE, we need to import our BlazeDS war file and add the Mysql driver, i call the project AMF_Client, the project should look like this.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQfM6R9NC5I/AAAAAAAAAG0/_8t7uEQtRww/s1600/Selecci%25C3%25B3n_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQfM6R9NC5I/AAAAAAAAAG0/_8t7uEQtRww/s400/Selecci%25C3%25B3n_003.png" width="232" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now we create a package hierarchy for our project:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQfV477IZQI/AAAAAAAAAG8/LVaZ3Zv318M/s1600/Selecci%25C3%25B3n_005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQfV477IZQI/AAAAAAAAAG8/LVaZ3Zv318M/s1600/Selecci%25C3%25B3n_005.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In the dto package create a Person class and add the following:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Person.java&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;package dto;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;public class Person {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private int id_person;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private String first_name;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private String last_name;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private double salary;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public int getId_person() {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return id_person;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void setId_person(int idPerson) {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;id_person = idPerson;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public String getFirst_name() {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return first_name;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void setFirst_name(String firstName) {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;first_name = firstName;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public String getLast_name() {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return last_name;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void setLast_name(String lastName) {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;last_name = lastName;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public double getSalary() {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return salary;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void setSalary(double salary) {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;this.salary = salary;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;}&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In our dao package create a DBHelper class for the connection, an interface PersonDAO and a class PersonDAOImp for the implementation.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;DBHelper.java&lt;/b&gt; // There will be a lot of ways to do a database&amp;nbsp;connection&amp;nbsp;but i prefer this.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;package dao;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.Connection;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.DriverManager;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.SQLException;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import com.mysql.jdbc.Driver;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;public class DBHelper {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private static Connection conexion;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private DBHelper(){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public static Connection getConnection() throws SQLException{&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Class driver = Driver.class;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if(conexion == null){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;try{&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db","&lt;user&gt;","&lt;password&gt;");&lt;/password&gt;&lt;/user&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}catch(SQLException ex){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;throw new SQLException(ex.getMessage());&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return conexion;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;}&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;PersonDAO.java&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;package dao;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.SQLException;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.util.List;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import dto.Person;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;public interface PersonDAO {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public List&lt;person&gt; getPeople() throws SQLException;&lt;/person&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;PersonDAOImp.java&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;package dao;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.Connection;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.PreparedStatement;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.ResultSet;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.SQLException;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.util.ArrayList;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.util.List;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import dto.Person;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;public class PersonDAOImp implements PersonDAO{&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private Connection conexion;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;@Override&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public List&lt;person&gt; getPeople() throws SQLException {&lt;/person&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;List&lt;person&gt; people = new ArrayList&lt;person&gt;();&lt;/person&gt;&lt;/person&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;try{&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;conexion = DBHelper.getConnection();&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;PreparedStatement pstmt = conexion.prepareStatement("SELECT * FROM person");&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;ResultSet rs = pstmt.executeQuery();&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;while(rs.next()){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Person person = new Person();&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;person.setId_person(rs.getInt(1));&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;person.setFirst_name(rs.getString(2));&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;person.setLast_name(rs.getString(3));&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;person.setSalary(rs.getDouble(4));&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;people.add(person);&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}catch(SQLException ex){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;throw new SQLException(ex.getMessage());&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return people;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;}&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now create another class in the package services call this PersonService and put the following.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;PersonService.java&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;package services;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.sql.SQLException;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.util.ArrayList;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import java.util.List;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import dao.PersonDAO;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import dao.PersonDAOImp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;import dto.Person;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;public class PersonService {&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;private PersonDAO personDAO = new PersonDAOImp();&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public List&lt;person&gt; getPeople() throws SQLException {&lt;/person&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;List&lt;person&gt; people = new ArrayList&lt;person&gt;();&lt;/person&gt;&lt;/person&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;try{&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;people = personDAO.getPeople();&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}catch(SQLException ex){&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;throw new SQLException(ex.getMessage());&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return people;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;}&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;We need to configure BlazeDS so we can use the Java AMF Client in our JSP page, open the remoting-config.xml located in WebContent/WEB-INF/flex add the following:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;remoting-config.xml&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;lt;service id="remoting-service"&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;class="flex.messaging.services.RemotingService"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;adapters&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/adapters&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;channel ref="my-amf"/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/default-channels&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;destination id="PersonService"&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;properties&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&amp;lt;source&amp;gt;services.PersonService&amp;lt;/source&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;/properties&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/destination&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now we are going to create a JSP page for handling the PersonService result.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;index.jsp &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@ page language="java" contentType="text/html; charset=UTF-8"&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pageEncoding="UTF-8"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="flex.messaging.io.amf.client.AMFConnection"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="flex.messaging.io.amf.client.exceptions.ClientStatusException"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="java.util.List"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="dto.Person"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="java.util.ArrayList"%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;%@page import="flex.messaging.io.amf.client.exceptions.ServerStatusException"%&amp;gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;title&amp;gt;Java AMF Client&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;%&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;AMFConnection amfConexion = new AMFConnection();&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;String amfUrl = "http://localhost:8080/AMF_Client/messagebroker/amf";&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;try{&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;//Make the conexion&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;amfConexion.connect(amfUrl);&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}catch(ClientStatusException ex){&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;out.write("An error has ocurred");&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;//Make the remote call to out service&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;List&amp;lt;Person&amp;gt; people = new ArrayList&amp;lt;Person&amp;gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;try{&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;people = ((ArrayList&amp;lt;Person&amp;gt;)amfConexion.call("PersonService.getPeople"));&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}catch(ClientStatusException ex){&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;out.write("An error has ocurred");&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}catch(ServerStatusException ex){&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;out.write("An error has ocurred");&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;table border="1"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&amp;lt;td&amp;gt;ID&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&amp;lt;td&amp;gt;First Name&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&amp;lt;td&amp;gt;Last Name&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&amp;lt;td&amp;gt;Salary&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;lt;%&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;for(Person p : people){&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;&amp;lt;td&amp;gt;&amp;lt;%out.print(p.getId_person());%&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;&amp;lt;td&amp;gt;&amp;lt;%out.print(p.getFirst_name());%&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;&amp;lt;td&amp;gt;&amp;lt;%out.print(p.getLast_name());%&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;&amp;lt;td&amp;gt;&amp;lt;%out.print(p.getSalary());%&amp;gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;lt;% &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div style="font-weight: bold;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now your run the project and you should have something like this:&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQfn6IMds9I/AAAAAAAAAHA/AifTHnxjm3k/s1600/Selecci%25C3%25B3n_006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TQfn6IMds9I/AAAAAAAAAHA/AifTHnxjm3k/s400/Selecci%25C3%25B3n_006.png" width="400" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That's all you have running a project with Java AMF Client, remember the true power of AMF comes when you deal with large amounts of data, this tutorial only explains the basics with few rows.&lt;b style="font-weight: bold;"&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/AMF_Client.tar.gz?attredirects=0&amp;amp;d=1"&gt;Here&lt;/a&gt; is the complete source code of the Project, any trouble or&amp;nbsp;suggestion let me know.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;b&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-7180749602815592585?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/49-3Pzn5ijA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/7180749602815592585/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/12/java-amf-client-using-amf-with-jsp.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7180749602815592585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7180749602815592585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/49-3Pzn5ijA/java-amf-client-using-amf-with-jsp.html" title="Java AMF Client: Using AMF with JSP" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TQfQdMGNS1I/AAAAAAAAAG4/6K3U3vGarBI/s72-c/Selecci%25C3%25B3n_004.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/12/java-amf-client-using-amf-with-jsp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHRHk_cCp7ImA9Wx9SFU8.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-47164641444782055</id><published>2010-12-04T19:34:00.001-08:00</published><updated>2010-12-04T19:37:15.748-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-04T19:37:15.748-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Red5" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Red5 + BlazeDS = Realtime Video Chat Tutorial Part 4: BlazeDS chat.</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ORgqawh1CgiyFHnJzmI2jC3YdAw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ORgqawh1CgiyFHnJzmI2jC3YdAw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ORgqawh1CgiyFHnJzmI2jC3YdAw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ORgqawh1CgiyFHnJzmI2jC3YdAw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is the last part of the Series Red5 + BlazeDS = Realtime Video Chat. In this part we are going to build a normal chat with BlazeDS so users can chat with al the people connected on the application. To accomplish this we need explore the messaging features in BlazeDS and also see a little about Consumer / Producer in Flex.&lt;/p&gt; &lt;p&gt;First in our server side open the services-config.xml and add the following channel:&lt;/p&gt; &lt;p&gt;services-config.xml&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;endpoint url="&lt;a href="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf&amp;quot;"&gt;http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class="flex.messaging.endpoints.StreamingAMFEndpoint"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;properties&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;idle-timeout-minutes&amp;gt;0&amp;lt;/idle-timeout-minutes&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;max-streaming-clients&amp;gt;10&amp;lt;/max-streaming-clients&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server-to-client-heartbeat-millis&amp;gt;5000&amp;lt;/server-to-client-heartbeat-millis&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/properties&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/channel-definition&amp;gt;&lt;/p&gt; &lt;p&gt;In the code above we define a new StreamingAMF channel called my-streaming-channel now we need to specify that we are going to use this channel in our chat, now open the messaging-config.xml and add:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;destination id="chat"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;channels&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;channel ref="my-streaming-amf"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/channels&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/destination&amp;gt;&lt;/p&gt; &lt;p&gt;We are creating a destination for out chat and specify that our chat will use a Streaming channel. That’s all in our server side, now let’s make an interface for out chat.&lt;/p&gt; &lt;p&gt;Open Red5_BlazeDS_Flex.mxml and add a TextArea and a TextInput inside a form like this:&lt;/p&gt; &lt;p&gt;&amp;lt;s:states&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="login"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="main"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:states&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Place non-visual elements (e.g., services, value objects) here --&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Group verticalCenter="0" horizontalCenter="0" includeIn="login"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Username"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtUsername"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Login" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Group&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup width="100%" height="100%" includeIn="main"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:VGroup width="30%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paddingTop="10"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form width="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Broadcast"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtBroadcast"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnBroadcast" label="Broadcast" click="btnBroadcast_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="outVideoWrapper" width="300" height="200"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Subscribe"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtSubscribe"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnSubscribe" label="Subscribe" click="btnSubscribe_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="inVideoWrapper" width="300" height="200"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:VGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;s:VGroup width="100%" height="80%" paddingBottom="10" paddingLeft="10" paddingTop="10" paddingRight="10"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Form width="100%" height="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem width="100%" height="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtConversation" width="100%" height="100%" editable="false"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem&amp;nbsp; width="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtChat" width="100%" enter="txtChat_enterHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnSend" label="Send" click="btnSend_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:VGroup&amp;gt;&lt;br&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtLog" width="100%" height="100" color="red" bottom="0"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editable="false" includeIn="main"/&amp;gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Now we must add the chat logic as follows:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Add a Producer and Consumer in the declarations tags:&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Producer id="producer" destination="chat"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Consumer id="consumer" destination="chat" message="consumer_messageHandler(event)" fault="consumer_faultHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:DateFormatter id="hourFormatter" formatString="KK:NN:SS"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Create the events handlers for txtChat enter event and for btnSend click event:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnSend_clickHandler(event:MouseEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:AsyncMessage = new AsyncMessage();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.body = txtChat.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.headers.user = txtUsername.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; producer.send(message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtChat.text = "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function consumer_messageHandler(event:MessageEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var hora:Date = new Date();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:String = event.message.body as String;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var usuario:String = event.message.headers.user as String;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtConversation.text += "[" + hourFormatter.format(hora) + "]" + usuario + " says: " + message + "\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function txtChat_enterHandler(event:FlexEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:AsyncMessage = new AsyncMessage();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.headers.user = txtUsername.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.body = txtChat.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; producer.send(message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtChat.text = "";&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function consumer_faultHandler(event:MessageFaultEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += event.faultString + "\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;Now test your application and your application should look like this:&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:51CF81A4-8F44-4a2c-8837-198C090B9994:1422be69-d473-4643-a637-c938738a9ca9" class="wlWriterEditableSmartContent"&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_XoQJjlpP2Zc/TPr_gOKTvPI/AAAAAAAAAGs/-3glHTgwnxE/s72/tut04_Image01.jpg" atomicselection="true"&gt;&lt;img style="border-right: 2px; border-top: 2px; border-left: 2px; border-bottom: 2px" height="297" src="http://lh6.ggpht.com/_XoQJjlpP2Zc/TPr_gOKTvPI/AAAAAAAAAGs/-3glHTgwnxE/s600/tut04_Image01.jpg" width="600"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;Here is the complete Source code:&lt;/p&gt; &lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br&gt;&amp;lt;s:Application xmlns:fx="&lt;a href="http://ns.adobe.com/mxml/2009&amp;quot;"&gt;http://ns.adobe.com/mxml/2009"&lt;/a&gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete="initApp()" width="100%" height="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Script&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.events.FlexEvent;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.managers.PopUpManager;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.messaging.events.MessageEvent;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.messaging.events.MessageFaultEvent;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.messaging.messages.AsyncMessage;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.rpc.events.FaultEvent;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var connection:NetConnection;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var userWindow:UsersWindow;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var timer:Timer;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Streams&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var inStream:NetStream;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var outStream:NetStream;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Devices&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var camera:Camera;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var microphone:Microphone;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Video&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var inVideo:Video;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var outVideo:Video;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function initApp():void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.systemManager.stage.scaleMode = StageScaleMode.NO_SCALE;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnConnect_clickHandler(event:MouseEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(txtUsername.text.length &amp;gt;= 3){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; producer.connect();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; consumer.subscribe();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = new UsersWindow();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer = new Timer(2000);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer.start();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer.addEventListener(TimerEvent.TIMER, onTimerEvent);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentState = "main";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection = new NetConnection();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.connect("rtmp://localhost/Red5_BlazeDS_Java", txtUsername.text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.client = this;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtUsername.errorString = "Enter a valid name";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onTimerEvent(event:TimerEvent):void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.call("getConnectedClients", new Responder(onResult, onFault));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onResult(obj:Object):void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.setUsers(new ArrayCollection(obj as Array));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onFault(obj:Object):void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Error " + obj.fault.message + "\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onConnectionStatus(event:NetStatusEvent):void {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(event.info.code == "NetConnection.Connect.Success"){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP successfully established\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.call("getConnectedClients", new Responder(onResult, onFault));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = UsersWindow(PopUpManager.createPopUp(this, UsersWindow, false));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PopUpManager.centerPopUp(userWindow);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.usuarioActual = txtUsername.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP fail\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnBroadcast_clickHandler(event:MouseEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(txtBroadcast.text.length &amp;gt; 3){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBroadcast.errorString = "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //setup devices&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; camera = Camera.getCamera();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; microphone = Microphone.getMicrophone();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //setup the streams&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outStream = new NetStream(connection);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outStream.attachAudio(microphone);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outStream.attachCamera(camera);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outStream.publish(txtBroadcast.text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //setup out video&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outVideo = new Video(300,200);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outVideo.attachCamera(camera);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outVideoWrapper.addChild(outVideo)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBroadcast.errorString = "Put a valid broadcast name";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnSubscribe_clickHandler(event:MouseEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(txtSubscribe.text.length &amp;gt; 3){&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inStream = new NetStream(connection);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inStream.play(txtSubscribe.text);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inVideo = new Video(300,200);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inVideo.attachNetStream(inStream);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inVideoWrapper.addChild(inVideo);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnSend_clickHandler(event:MouseEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:AsyncMessage = new AsyncMessage();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.body = txtChat.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.headers.user = txtUsername.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; producer.send(message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtChat.text = "";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function consumer_messageHandler(event:MessageEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var hora:Date = new Date();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:String = event.message.body as String;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var usuario:String = event.message.headers.user as String;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtConversation.text += "[" + hourFormatter.format(hora) + "]" + usuario + " says: " + message + "\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function txtChat_enterHandler(event:FlexEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message:AsyncMessage = new AsyncMessage();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.headers.user = txtUsername.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message.body = txtChat.text;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; producer.send(message);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtChat.text = "";&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function consumer_faultHandler(event:MessageFaultEvent):void&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += event.faultString + "\n";&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Script&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:states&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="login"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="main"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:states&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Producer id="producer" destination="chat"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Consumer id="consumer" destination="chat" message="consumer_messageHandler(event)" fault="consumer_faultHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:DateFormatter id="hourFormatter" formatString="KK:NN:SS"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Group verticalCenter="0" horizontalCenter="0" includeIn="login"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Username"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtUsername"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Login" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Group&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup width="100%" height="100%" includeIn="main"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:VGroup width="30%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paddingTop="10"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form width="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Broadcast"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtBroadcast"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnBroadcast" label="Broadcast" click="btnBroadcast_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="outVideoWrapper" width="300" height="200"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Subscribe"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtSubscribe"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnSubscribe" label="Subscribe" click="btnSubscribe_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="inVideoWrapper" width="300" height="200"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:VGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:VGroup width="100%" height="80%" paddingBottom="10" paddingLeft="10" paddingTop="10" paddingRight="10"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Form width="100%" height="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem width="100%" height="100%"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtConversation" width="100%" height="100%" editable="false"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem&amp;nbsp; width="100%" direction="horizontal"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtChat" width="100%" enter="txtChat_enterHandler(event)" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnSend" label="Send" click="btnSend_clickHandler(event)"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:VGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtLog" width="100%" height="100" color="red" bottom="0"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editable="false" includeIn="main"/&amp;gt;&lt;br&gt;&amp;lt;/s:Application&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;Here is the &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/FinalDemo.rar?attredirects=0&amp;amp;d=1" target="_blank"&gt;complete project&lt;/a&gt; and the &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/FinalSourceCode.rar?attredirects=0&amp;amp;d=1" target="_blank"&gt;other project&lt;/a&gt; that I show in the video demo. &lt;/p&gt; &lt;p&gt;So that’s all, this is my first series and I don’t want to be the last. If you found any error or have any suggestion, please let me know. Thanks&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-47164641444782055?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/jnaPMLTZ9D0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/47164641444782055/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/12/red5-blazeds-realtime-video-chat_04.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/47164641444782055?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/47164641444782055?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/jnaPMLTZ9D0/red5-blazeds-realtime-video-chat_04.html" title="Red5 + BlazeDS = Realtime Video Chat Tutorial Part 4: BlazeDS chat." /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_XoQJjlpP2Zc/TPr_gOKTvPI/AAAAAAAAAGs/-3glHTgwnxE/s72-c/tut04_Image01.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/12/red5-blazeds-realtime-video-chat_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMFSH49eyp7ImA9Wx9SFU0.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-2147638780727279434</id><published>2010-12-04T14:33:00.000-08:00</published><updated>2010-12-04T14:40:19.063-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-04T14:40:19.063-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Red5" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Red5 + BlazeDS = Realtime Video Chat Tutorial Part 3: Red5 video streaming</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AWc67-kBSKSY6uMfAQL4xw26fvI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AWc67-kBSKSY6uMfAQL4xw26fvI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AWc67-kBSKSY6uMfAQL4xw26fvI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AWc67-kBSKSY6uMfAQL4xw26fvI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hi, today i will show you how to enhance the application that we build in Tutorial &lt;a href="http://jdesconectado.blogspot.com/2010/10/blazeds-red5-realtime-video-tutorial.html"&gt;part 1&lt;/a&gt; and &lt;a href="http://jdesconectado.blogspot.com/2010/11/red5-blazeds-realtime-video-chat.html"&gt;part 2&lt;/a&gt;, let add some video and voice to make things a little bit interesting. This tutorial continues &lt;a href="http://jdesconectado.blogspot.com/2010/10/blazeds-red5-realtime-video-tutorial.html"&gt;part 1&lt;/a&gt; and &lt;a href="http://jdesconectado.blogspot.com/2010/11/red5-blazeds-realtime-video-chat.html"&gt;part 2&lt;/a&gt; so take this parts first before reading this part.&lt;br /&gt;
&lt;br /&gt;
So let's continue...&lt;br /&gt;
&lt;br /&gt;
First we need to know a little about NetConnection and how to attach video and audio to the RTMP connection that we made in the last part of this tutorial. NetConnection comunicates with the server establishing a full duplex open connection in both the server and the client so it's perfect for use with the RTMP protocol.&lt;br /&gt;
&lt;br /&gt;
Let's make some changes in the UI so we can add our camera, open Red5_BlazeDS_Flex.mxml and change the following (some update are made so we can use Flex 4.5 new components)&lt;br /&gt;
&lt;br /&gt;
Red5_BlazeDS_Flex.mxml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="login"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="main"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Place non-visual elements (e.g., services, value objects) here --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Group verticalCenter="0" horizontalCenter="0" includeIn="login"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Username"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtUsername"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Login" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup width="100%" height="100%" includeIn="main"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:VGroup width="30%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paddingTop="10"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form width="100%"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Broadcast" &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtBroadcast"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnBroadcast" label="Broadcast" click="btnBroadcast_clickHandler(event)"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="outVideoWrapper" width="300" height="200"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem label="Subscribe"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtSubscribe"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnSubscribe" label="Subscribe"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:UIComponent id="inVideoWrapper" width="300" height="200"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:VGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:HGroup&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtLog" width="100%" height="100" color="red" bottom="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editable="false" includeIn="main"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code add to our user interface 2 UIComponent this components will be the video wrappers in our application.&lt;br /&gt;
&lt;br /&gt;
Now let’s attach the video, for make this possible we must do some steps:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Make the&amp;nbsp; connection (done in the last step)&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Create the streams in/out&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Setup&amp;nbsp; the devices&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Create the video.&lt;/li&gt;
&lt;/ol&gt;First we declare the variables:&lt;br /&gt;
&lt;br /&gt;
In our Red5_BlazeDS_Flex.mxml in after the &amp;lt;s:Script&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.managers.PopUpManager;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private var connection:NetConnection; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private var userWindow:UsersWindow;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private var timer:Timer;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;//Streams &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var inStream:NetStream; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var outStream:NetStream; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Devices &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var camera:Camera; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var microphone:Microphone; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Video &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var inVideo:Video; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private var outVideo:Video;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Then we need to add click event to our Broadcast button and then write a click handler function has follow:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;protected function btnBroadcast_clickHandler(event:MouseEvent):void {&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(txtBroadcast.text.length &amp;gt; 3){&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txtBroadcast.errorString = "";&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //setup devices&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; camera = Camera.getCamera();&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; microphone = Microphone.getMicrophone();&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //setup the streams&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outStream = new NetStream(connection);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outStream.attachAudio(microphone);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outStream.attachCamera(camera);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outStream.publish(txtBroadcast.text);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //setup out video&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outVideo = new Video(300,200);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outVideo.attachCamera(camera);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; outVideoWrapper.addChild(outVideo)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }else{&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; txtBroadcast.errorString = "Put a valid broadcast name";&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now add click event to our Subscribe button and then write a click handler function has follow:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;protected function btnSubscribe_clickHandler(event:MouseEvent):void&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(txtSubscribe.text.length &amp;gt; 3)&lt;/b&gt;&lt;b&gt;{&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inStream = new NetStream(connection);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inStream.play(txtSubscribe.text);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inVideo = new Video(300,200);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inVideo.attachNetStream(inStream);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inVideoWrapper.addChild(inVideo);&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now run your application, write a text to Broadcast and then test this in a different browser client open the same application put in the subscribe textinput the name of your broadcast and voila!! you will have the following:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TPq9rETCQuI/AAAAAAAAAGo/nRx6F9YVYjk/s1600/tut03_Image01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TPq9rETCQuI/AAAAAAAAAGo/nRx6F9YVYjk/s640/tut03_Image01.PNG" width="560" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;That's all and of course &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/CompleteSourceCode.rar?attredirects=0&amp;amp;d=1"&gt;here is the complete code&lt;/a&gt;, If you found any error or have any suggestion, please let me know.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-2147638780727279434?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/xRqzdni2gDs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/2147638780727279434/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/12/red5-blazeds-realtime-video-chat.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/2147638780727279434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/2147638780727279434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/xRqzdni2gDs/red5-blazeds-realtime-video-chat.html" title="Red5 + BlazeDS = Realtime Video Chat Tutorial Part 3: Red5 video streaming" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TPq9rETCQuI/AAAAAAAAAGo/nRx6F9YVYjk/s72-c/tut03_Image01.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/12/red5-blazeds-realtime-video-chat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04BQX04fCp7ImA9Wx5aEks.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-4746944899308833459</id><published>2010-11-08T16:19:00.000-08:00</published><updated>2010-11-08T16:19:10.334-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-08T16:19:10.334-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Red5 + BlazeDS = Realtime Video Chat Tutorial Part 2: Tracking all the current users.</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YFlMJtljpDi3WX45aufMcoIKnDQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YFlMJtljpDi3WX45aufMcoIKnDQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YFlMJtljpDi3WX45aufMcoIKnDQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YFlMJtljpDi3WX45aufMcoIKnDQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Ok so here is the second part of the tutorial, I made some changes when I stared to create this tutorial I write this in Ubuntu now because I’m writing my flex thesis and using flash builder burrito I’m using Windows 7 . Ok ok back to the tutorial we are going to keep track of all the current users in our application. This tutorial continues the &lt;a href="http://jdesconectado.blogspot.com/2010/10/blazeds-red5-realtime-video-tutorial.html" target="_blank"&gt;Tutorial Part 1&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So let’s continue:&lt;br /&gt;
&lt;br /&gt;
First in our java side we need to create a class called ClientManager this class will allow us to use SharedObject and use the actual scope of the application for keep track of the current users. The code is commented to read it carefully to understand what each of this classes are doing.&lt;br /&gt;
&lt;br /&gt;
ClientManager.java&lt;br /&gt;
&lt;br /&gt;
package com.jdesconectado;&lt;br /&gt;
import org.red5.server.api.IScope;&lt;br /&gt;
import org.red5.server.api.ScopeUtils;&lt;br /&gt;
import org.red5.server.api.so.ISharedObject;&lt;br /&gt;
import org.red5.server.api.so.ISharedObjectService;&lt;br /&gt;
public class ClientManager {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Stores the name of the SharedObject to use. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String name;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Should the SharedObject be persistent? */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean persistent;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Create a new instance of the client manager.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name of the shared object to use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param persistent&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should the shared object be persistent&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ClientManager(String name, boolean persistent) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.name = name;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.persistent = persistent;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Return the shared object to use for the given scope.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param scope&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the scope to return the shared object for&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the shared object to use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ISharedObject getSharedObject(IScope scope) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISharedObjectService service = (ISharedObjectService) ScopeUtils&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getScopeService(scope,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISharedObjectService.class,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return service.getSharedObject(scope, name, persistent);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A new client connected. This adds the username to&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * the shared object of the passed scope. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param scope&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope the client connected to &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param username&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name of the user that connected&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uid&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the unique id of the user that connected&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void addClient(IScope scope, String username, String uid) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISharedObject so = getSharedObject(scope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so.setAttribute(uid, username);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A client disconnected. This removes the username from&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * the shared object of the passed scope.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param scope&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scope the client disconnected from&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uid&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unique id of the user that disconnected&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return the username of the disconnected user&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String removeClient(IScope scope, String uid) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ISharedObject so = getSharedObject(scope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!so.hasAttribute(uid)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // SharedObject is empty. This happes when the last client&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // disconnects.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String username = so.getStringAttribute(uid);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so.removeAttribute(uid);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return username;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
And in our Application.java class we made some changes. Basically we need a collection to keep the users and instantiate the ClientManager.&lt;br /&gt;
&lt;br /&gt;
Application.java:&lt;br /&gt;
&lt;br /&gt;
package com.jdesconectado;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import org.red5.server.adapter.ApplicationAdapter;&lt;br /&gt;
import org.red5.server.api.IConnection;&lt;br /&gt;
import org.red5.server.api.IScope;&lt;br /&gt;
&lt;blockquote&gt;public class Application extends ApplicationAdapter{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ClientManager clientManager = new ClientManager("userList", false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ArrayList&amp;lt;String&amp;gt; connectedClients = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public synchronized boolean connect(IConnection conn, IScope scope,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object[] params) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Verify is username is in params&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(params == null || params.length == 0){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rejectClient("No username was provided");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!super.connect(conn, scope, params)){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String username = params[0].toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String uid = conn.getClient().getId();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the usename to the collection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connectedClients.add(username);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clientManager.addClient(scope, username, uid);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public synchronized void disconnect(IConnection conn, IScope scope) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String uid = conn.getClient().getId();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String username = clientManager.removeClient(scope, uid);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connectedClients.remove(username);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.disconnect(conn, scope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the current connected clients&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public ArrayList&amp;lt;String&amp;gt; getConnectedClients(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return connectedClients;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/blockquote&gt;This is all we need in our server side. The server side should look like this:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:51CF81A4-8F44-4a2c-8837-198C090B9994:cd6fb53e-1f74-48c9-9b3f-94fa1159ab76" style="display: block; float: none; margin-left: auto; margin-right: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 316px;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNiPRvI4kFI/AAAAAAAAAFw/Hby8fgmONbM/s1600/tut02_Image01.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNiPRvI4kFI/AAAAAAAAAFw/Hby8fgmONbM/s320/tut02_Image01.PNG" width="251" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;In the client side we need to made some changes to the UI so we can made use of our recently changed server side. First we need a custom component to show the current connected users, we call it UsersWindow.mxml and it will be based on a TitleWindow.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:51CF81A4-8F44-4a2c-8837-198C090B9994:d57e737c-08b8-4791-ba83-2c2647ed03fd" style="display: block; float: none; margin-left: auto; margin-right: auto; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 414px;"&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNd_kY6DS8I/AAAAAAAAAEI/pylnS-tXKZc/s1600/Image02.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNd_kY6DS8I/AAAAAAAAAEI/pylnS-tXKZc/s320/Image02.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;In our custom component UsersWindow we write this code, only a Label and List is all we need.&lt;br /&gt;
&lt;br /&gt;
UsersWindow.mxml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s:TitleWindow xmlns:fx="&lt;a href="http://ns.adobe.com/mxml/2009%22"&gt;http://ns.adobe.com/mxml/2009"&lt;/a&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function setUsers(users:ArrayCollection):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.users = users;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:ArrayCollection id="users"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Label text="There is {users.length} users connected"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:List id="lstUsers" dataProvider="{users}"/&amp;gt;&lt;br /&gt;
&amp;lt;/s:TitleWindow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now in our file Red5_BlazeDS_Flex.mxml we change some parts:&lt;br /&gt;
&lt;br /&gt;
Red5_BlazeDS_Flex.mxml&lt;br /&gt;
&lt;blockquote&gt;&amp;lt;s:Application xmlns:fx="&lt;a href="http://ns.adobe.com/mxml/2009%22"&gt;http://ns.adobe.com/mxml/2009"&lt;/a&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minWidth="955" minHeight="600"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.managers.PopUpManager;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var connection:NetConnection;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var userWindow:UsersWindow;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnConnect_clickHandler(event:MouseEvent):void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(txtUsername.text.length &amp;gt;= 3){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = new UsersWindow();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentState = "main";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection = new NetConnection();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.connect("rtmp://localhost/Red5_BlazeDS_Java", txtUsername.text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.client = this;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtUsername.errorString = "Enter a valid name";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onResult(obj:Object):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.setUsers(new ArrayCollection(obj as Array));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onFault(obj:Object):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Error " + obj.fault.message + "\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onConnectionStatus(event:NetStatusEvent):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(event.info.code == "NetConnection.Connect.Success"){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP successfully established\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.call("getConnectedClients", new Responder(onResult, onFault));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = UsersWindow(PopUpManager.createPopUp(this, UsersWindow, false));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.usuarioActual = txtUsername.text;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP fail\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="login"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="main"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Place non-visual elements (e.g., services, value objects) here --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Group verticalCenter="0" horizontalCenter="0" includeIn="login"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem name="Username" direction="ltr"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtUsername"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Login" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtLog" width="100%" height="100" color="red" bottom="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editable="false" includeIn="main"/&amp;gt;&lt;br /&gt;
&amp;lt;/s:Application&amp;gt;&lt;/blockquote&gt;We create two states one login this will handle the username and in the line:&lt;br /&gt;
&lt;blockquote&gt;connection.connect("rtmp://localhost/Red5_BlazeDS_Java", txtUsername.text);&lt;/blockquote&gt;we are passing the user name as a param for our server. Then we simply create a instance of out UserWindow class so we can see all the users available in the chat. There is only one thing to add to our program we need a timer. This timer will allow us to update the connected users in all the clients.&lt;br /&gt;
&lt;br /&gt;
Red5_BlazeDS_Flex.mxml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s:Application xmlns:fx="&lt;a href="http://ns.adobe.com/mxml/2009%22"&gt;http://ns.adobe.com/mxml/2009"&lt;/a&gt; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minWidth="955" minHeight="600"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.managers.PopUpManager;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var connection:NetConnection;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var userWindow:UsersWindow;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var timer:Timer;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnConnect_clickHandler(event:MouseEvent):void&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(txtUsername.text.length &amp;gt;= 3){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = new UsersWindow();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer = new Timer(2000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer.start();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer.addEventListener(TimerEvent.TIMER, onTimerEvent);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentState = "main";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection = new NetConnection();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.connect("rtmp://localhost/Red5_BlazeDS_Java", txtUsername.text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.client = this;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtUsername.errorString = "Enter a valid name";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onTimerEvent(event:TimerEvent):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.call("getConnectedClients", new Responder(onResult, onFault));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onResult(obj:Object):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.setUsers(new ArrayCollection(obj as Array));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onFault(obj:Object):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Error " + obj.fault.message + "\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onConnectionStatus(event:NetStatusEvent):void {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(event.info.code == "NetConnection.Connect.Success"){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP successfully established\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.call("getConnectedClients", new Responder(onResult, onFault));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow = UsersWindow(PopUpManager.createPopUp(this, UsersWindow, false));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; userWindow.usuarioActual = txtUsername.text;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtLog.text += "Connection to RTMP fail\n";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="login"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:State name="main"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:states&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Place non-visual elements (e.g., services, value objects) here --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Declarations&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Group verticalCenter="0" horizontalCenter="0" includeIn="login"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:FormItem name="Username" direction="ltr"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextInput id="txtUsername"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Login" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:FormItem&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Form&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/s:Group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:TextArea id="txtLog" width="100%" height="100" color="red" bottom="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editable="false" includeIn="main"/&amp;gt;&lt;br /&gt;
&amp;lt;/s:Application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The timer is set to 2 seconds, every 2 seconds the application will ask the server who is connected and get it.&lt;br /&gt;
&lt;br /&gt;
Finally run the application in two different browsers and the result must match this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TNeBWNLRmUI/AAAAAAAAAEQ/DYv3hu4HhFM/s1600/tut02_Image03.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TNeBWNLRmUI/AAAAAAAAAEQ/DYv3hu4HhFM/s640/tut02_Image03.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:51CF81A4-8F44-4a2c-8837-198C090B9994:d88359bd-46a9-4f79-8996-aca19df78c8a" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;That’s all and of course &lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/SourceCode.rar?attredirects=0&amp;amp;d=1"&gt;here is the complete code&lt;/a&gt;, If you found any error or have any suggestion, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-4746944899308833459?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/dXXgGv-30BI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/4746944899308833459/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/11/red5-blazeds-realtime-video-chat.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4746944899308833459?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4746944899308833459?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/dXXgGv-30BI/red5-blazeds-realtime-video-chat.html" title="Red5 + BlazeDS = Realtime Video Chat Tutorial Part 2: Tracking all the current users." /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNiPRvI4kFI/AAAAAAAAAFw/Hby8fgmONbM/s72-c/tut02_Image01.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/11/red5-blazeds-realtime-video-chat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ECRXk5cCp7ImA9Wx5aEUQ.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-6083840584446723154</id><published>2010-11-07T21:45:00.000-08:00</published><updated>2010-11-07T21:54:24.728-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T21:54:24.728-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Funny" /><title>Why teachers drink (español)</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hLS77PLsnYr1y_AELW_2MUHNJwU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hLS77PLsnYr1y_AELW_2MUHNJwU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hLS77PLsnYr1y_AELW_2MUHNJwU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hLS77PLsnYr1y_AELW_2MUHNJwU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;El día de hoy me llego un tweet de Tom krcha @tomkrcha, con un post muy divertido el título lo dice todo &lt;a href="http://theforexmom.com/why-teachers-drink/?ref=nf"&gt;Why Teachers drink&lt;/a&gt;&amp;nbsp;esta en inglés y me pareció buena idea compartir la versión en español&amp;nbsp;así&amp;nbsp;que a disfrutar.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCHb9ZlI/AAAAAAAAAFE/qraA0vHMisA/s1600/imagen01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCHb9ZlI/AAAAAAAAAFE/qraA0vHMisA/s400/imagen01.jpg" width="350" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCMFjWYI/AAAAAAAAAFI/zMnFofa21dc/s1600/imagen02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCMFjWYI/AAAAAAAAAFI/zMnFofa21dc/s400/imagen02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCE6esEI/AAAAAAAAAFM/Nz5dgjIWm9o/s1600/imagen03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCE6esEI/AAAAAAAAAFM/Nz5dgjIWm9o/s400/imagen03.jpg" width="247" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCvSLw7I/AAAAAAAAAFQ/9MQgwqY8L0E/s1600/imagen04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCvSLw7I/AAAAAAAAAFQ/9MQgwqY8L0E/s200/imagen04.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCrJPMJI/AAAAAAAAAFU/qIXOFYKpwlM/s1600/imagen05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCrJPMJI/AAAAAAAAAFU/qIXOFYKpwlM/s200/imagen05.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKQg1coI/AAAAAAAAAFY/xVXWTpo6cj0/s1600/imagen06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="149" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKQg1coI/AAAAAAAAAFY/xVXWTpo6cj0/s200/imagen06.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKQJppqI/AAAAAAAAAFg/X_ke_EjVga8/s1600/imagen08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://4.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKQJppqI/AAAAAAAAAFg/X_ke_EjVga8/s200/imagen08.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKXghtQI/AAAAAAAAAFc/u4ZDr4OVNDg/s1600/imagen07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://1.bp.blogspot.com/_XoQJjlpP2Zc/TNeNKXghtQI/AAAAAAAAAFc/u4ZDr4OVNDg/s320/imagen07.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-6083840584446723154?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/uVQH2WI6eXc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/6083840584446723154/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/11/why-teachers-drink-espanol.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/6083840584446723154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/6083840584446723154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/uVQH2WI6eXc/why-teachers-drink-espanol.html" title="Why teachers drink (español)" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_XoQJjlpP2Zc/TNeNCHb9ZlI/AAAAAAAAAFE/qraA0vHMisA/s72-c/imagen01.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/11/why-teachers-drink-espanol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8BQHs7fCp7ImA9WhdUFko.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-631726835540750193</id><published>2010-10-09T20:21:00.001-07:00</published><updated>2011-10-03T14:20:51.504-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T14:20:51.504-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Red5" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><title>Red5 + BlazeDS = Realtime Video Chat Tutorial Part 1: Setting up the environment and making the connection.</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OR-x7iezJdXEVsq-w54hR3D5sZw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OR-x7iezJdXEVsq-w54hR3D5sZw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OR-x7iezJdXEVsq-w54hR3D5sZw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OR-x7iezJdXEVsq-w54hR3D5sZw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
Hi, in this tutorial i will build a complete real time video chat using BlazeDS and Red 5, so i will split this tutorial in 4 parts each of this are:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Setting up the environment and making the connection. &lt;/li&gt;
&lt;li&gt;Tracking all the current users. &lt;/li&gt;
&lt;li&gt;Red5 video streaming. &lt;/li&gt;
&lt;li&gt;BlazeDS chat.&lt;/li&gt;
&lt;/ol&gt;
So let's start.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Requirements:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;BlazeDS &lt;/li&gt;
&lt;li&gt;Flash Builder 4, in this tutorial i use the eclipse plug-in version.&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Red5 server. &lt;/li&gt;
&lt;li&gt;Red5 eclipse plug-in. &lt;/li&gt;
&lt;li&gt;Previous Java and Flex knowledge.&lt;/li&gt;
&lt;/ul&gt;
If you want to know more about BlazeDS and Red5 please read the manuals :D &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Setting up the environment and making the connection:&lt;/b&gt;To get started you need to download and install red5 and the red5 plug-in, for make things easy i found two well explained tutorials:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Install red5 server &lt;a href="http://code.google.com/p/red5/"&gt;http://code.google.com/p/red5/&lt;/a&gt; (Here are the installers for your specific platform it's very easy just download and install)&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Install red5 plug-in &lt;a href="http://red5.org/wiki/Red5Plugin"&gt;http://red5.org/wiki/Red5Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Once you have red5 and red5 plug-in installed, download BlazeDS.&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Note:&lt;/b&gt; If you are not very familiar with BlazeDS read my post &lt;a href="http://jdesconectado.blogspot.com/2010/07/conectar-blazeds-con-java.html" target="_blank"&gt;Connect BlazeDS with Java&lt;/a&gt; (spanish)&lt;br /&gt;
&lt;br /&gt;
In FlashBuilder 4, we need to setup Red5 Server for doing this go to Window -&amp;gt; Preferences go to Server and finally to Server Runtime Environments, click Add and if your installation of Red5 plug-in is ok, your screen should be like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="411" src="http://lh3.ggpht.com/_XoQJjlpP2Zc/TLDhWzU7F-I/AAAAAAAAACc/sffFH3pxu2g/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="395" /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
Select Red 5 Server Runtime and hit Next &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="402" src="http://lh4.ggpht.com/_XoQJjlpP2Zc/TLDiCufFa-I/AAAAAAAAACg/T6X2az1yjUE/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="387" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="left"&gt;
In Runtime Directory select the place where you installed red5 server, click Finish.&lt;br /&gt;
&lt;br /&gt;
Now go to File Import... then under Web select WAR file, click next.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="259" src="http://lh6.ggpht.com/_XoQJjlpP2Zc/TLDjgo5DQxI/AAAAAAAAACo/nUxzpT3Iw9w/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="458" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="left"&gt;
In WAR file -&amp;gt; Select your blazeds.war library&lt;br /&gt;
Web project -&amp;gt; Put he name of your Project.&lt;br /&gt;
Target Runtime -&amp;gt; Don't forget to select Red5 Server Runtime.&lt;br /&gt;
Click finish, this finish the Java side.&lt;br /&gt;
&lt;br /&gt;
Now let's setup the Flex Side.&lt;br /&gt;
Create a new Flex Project, with this settings:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="498" src="http://lh4.ggpht.com/_XoQJjlpP2Zc/TLDk4aC2Q7I/AAAAAAAAACs/b1nuBQE8_Tk/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="597" /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
The click Next, now we are going to configure J2EE Server:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="329" src="http://lh4.ggpht.com/_XoQJjlpP2Zc/TLEBXvQY_yI/AAAAAAAAACw/h-MH_AMPhW0/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="640" /&gt;&lt;br /&gt;
&lt;div align="left"&gt;
Be careful when put the values, in Root folder you must specify the WebContent folder of the Java project you just made in the last step. In Root Url the port must be 5080 (default port of red5), and specify the context name of the Java project in this case Red5_BlazeDS_Java, in the context root put the same context root of the Java application Red5_BlazeDS_Java, click validate and then click finish.&lt;br /&gt;
&lt;br /&gt;
The result will be this:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="332" src="http://lh6.ggpht.com/_XoQJjlpP2Zc/TLEDj68JWNI/AAAAAAAAAC0/o_V9FZJre9M/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="227" /&gt;&lt;/div&gt;
&lt;br /&gt;
Now we must setup the configuration files for Red5, in the Java project under the WEB-INF folder create a new File called red5-web.properties put in this file.&lt;br /&gt;
&lt;small&gt;&lt;br /&gt;webapp.contextPath=/Red5_BlazeDS_Java&lt;br /&gt;webapp.virtualHosts=localhost, 127.0.0.1&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
Create another file now call this red5-web.xml put in this file:&lt;br /&gt;
&lt;small&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;&amp;lt;beans&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="location" value="/WEB-INF/red5-web.properties" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id="web.context" class="org.red5.server.Context" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autowire="byType" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id="web.scope" class="org.red5.server.WebScope"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; init-method="register"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="server" ref="red5.server" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="parent" ref="global.scope" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="context" ref="web.context" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="handler" ref="web.handler" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="contextPath" value="${webapp.contextPath}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="virtualHosts" value="${webapp.virtualHosts}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Defines the web handler which acts as an applications endpoint&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id="web.handler" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class="com.jdesconectado.Application" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; singleton="true" /&amp;gt; &lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;/small&gt;&lt;br /&gt;
In the last part of the document we specify were is the endpoint for the application.&lt;/div&gt;
&lt;/div&gt;
Now we must add some content in out web.xml, note that we have the default web.xml for BlazeDS&lt;br /&gt;
the only thing we have to do is add some red5 specific lines of code &lt;br /&gt;
&lt;small&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&amp;gt;&lt;br /&gt;&amp;lt;web-app&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;display-name&amp;gt;BlazeDS&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;BlazeDS Application&amp;lt;/description&amp;gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;webAppRootKey&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;/Red5_&lt;/b&gt;&lt;/small&gt;&lt;b&gt;&lt;small&gt;BlazeDS_Java&lt;/small&gt;&lt;/b&gt;&lt;small&gt;&lt;b&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/context-param&amp;gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Http Flex Session attribute and binding listener support --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener-class&amp;gt;flex.messaging.HttpFlexSession&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/listener&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- MessageBroker Servlet --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;MessageBrokerServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;display-name&amp;gt;MessageBrokerServlet&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-class&amp;gt;flex.messaging.MessageBrokerServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-name&amp;gt;services.configuration.file&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param-value&amp;gt;/WEB-INF/flex/services-config.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;gateway&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; org.red5.server.net.servlet.AMFGatewayServlet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/servlet&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;gateway&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/gateway&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;servlet-name&amp;gt;MessageBrokerServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/messagebroker/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;welcome-file&amp;gt;index.htm&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-resource-name&amp;gt;Forbidden&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;url-pattern&amp;gt;/streams/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;auth-constraint/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/security-constraint&amp;gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/small&gt;That's all the configuration you need. Now let's code a little.&lt;br /&gt;
&lt;br /&gt;
First create a package in out Java src folder: in my case it will be com.jdesconectado, next create a class called Application.&lt;br /&gt;
&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="509" src="http://lh5.ggpht.com/_XoQJjlpP2Zc/TLEoIvBdYJI/AAAAAAAAAC4/Jnqf0LGr8Qg/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="529" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div align="left"&gt;
Now in this file put the following:&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;package com.jdesconectado;&lt;br /&gt;&lt;br /&gt;import org.red5.server.adapter.ApplicationAdapter;&lt;br /&gt;import org.red5.server.api.IConnection;&lt;br /&gt;import org.red5.server.api.IScope;&lt;br /&gt;&lt;br /&gt;public class Application extends ApplicationAdapter{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public synchronized boolean connect(IConnection conn, IScope scope,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object[] params) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return super.connect(conn, scope, params);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public synchronized void disconnect(IConnection conn, IScope scope) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.disconnect(conn, scope);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
That's all for the server side now let's make the client part.&lt;br /&gt;
&lt;br /&gt;
In the flex project add to the Red5_BlazeDS_Flex.mxml&lt;br /&gt;
&lt;small&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:s="library://ns.adobe.com/flex/spark" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fx:Script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private var connection:NetConnection;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function btnConnect_clickHandler(event:MouseEvent):void&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection = new NetConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.connect("rtmp://localhost/Red5_BlazeDS_Java");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.client = this;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected function onConnectionStatus(event:NetStatusEvent):void {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(event.info.code == "NetConnection.Connect.Success"){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show("Connection is successfully established");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show("Connection fail");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fx:Script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;s:Button id="btnConnect" label="Connect" click="btnConnect_clickHandler(event)"/&amp;gt;&lt;br /&gt;&amp;lt;/s:Application&amp;gt;&lt;/small&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align="left"&gt;
Now run the application and hit the button, your application must display the following:&lt;br /&gt;
&lt;div align="center"&gt;
&lt;img height="229" src="http://lh3.ggpht.com/_XoQJjlpP2Zc/TLEsWdssJFI/AAAAAAAAAC8/5E-JVpPXMnM/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" width="370" /&gt;&lt;br /&gt;
&lt;div align="left"&gt;
&lt;br /&gt;
Congratulations you have configure and run your first Red5 + BlazeDS application. In the next part i will show you how to&amp;nbsp; track the current users in your application. &lt;br /&gt;
&lt;br /&gt;
Here are the complete files for the tutorial, if you are going to use this files, setup it correctly first.&lt;br /&gt;
&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/Red5_Blazeds.tar.gz?attredirects=0&amp;amp;d=1" target="_blank"&gt;Complete source code.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you found any error or have any suggestion, please let me know. &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;
&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=9255b209-35b5-8f14-900f-77487b890848" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-631726835540750193?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/LWkHWWtwhEs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/631726835540750193/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/10/blazeds-red5-realtime-video-tutorial.html#comment-form" title="11 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/631726835540750193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/631726835540750193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/LWkHWWtwhEs/blazeds-red5-realtime-video-tutorial.html" title="Red5 + BlazeDS = Realtime Video Chat Tutorial Part 1: Setting up the environment and making the connection." /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_XoQJjlpP2Zc/TLDhWzU7F-I/AAAAAAAAACc/sffFH3pxu2g/s72-c/%5BUNSET%5D.png?imgmax=800" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/10/blazeds-red5-realtime-video-tutorial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAMQHY5cSp7ImA9Wx5VFUw.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-7006457536578631961</id><published>2010-10-07T22:44:00.001-07:00</published><updated>2010-10-07T23:19:41.829-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-07T23:19:41.829-07:00</app:edited><title>Red5 + BlazeDS = Realtime video chat application</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aKvIoZAVtjTMaoaISvCO195p-CQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aKvIoZAVtjTMaoaISvCO195p-CQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aKvIoZAVtjTMaoaISvCO195p-CQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aKvIoZAVtjTMaoaISvCO195p-CQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-family: arial;"&gt;Hi, 4 days ago i saw a very interesting application made by Adobe Platform Evangeist Michaël Chaize, he uses LCCS and in 10 minutes (wow!!!) he have great and &lt;a href="http://www.riagora.com/2010/09/build-a-chat-with-flex-test/" target="_blank"&gt;complete application&lt;/a&gt;, so i just wondering if i could build part of the functionality of this application using open source products.&lt;br /&gt;
&lt;br /&gt;
So, for made this possible i used Red5 and BlazeDS. I used Red5 RTMP protocol for video streaming and BlazeDS Streaming Channel for the chat, i know that i could use Red5 for the chat too but i feel more comfortable with BlazeDS messaging features, it not takes 5 minutes and of course take a lot more code but it's ok.&lt;br /&gt;
&lt;br /&gt;
I think that use LCCS is the way to go, because it allow you to use &lt;a href="http://en.wikipedia.org/wiki/Real_Time_Media_Flow_Protocol" target="_blank"&gt;Adobe RTMFP&lt;/a&gt; and other cool stuff, if you want to&amp;nbsp; know more about LCCS you can go &lt;a href="http://www.adobe.com/devnet/flashplatform/services/collaboration.html" target="_blank"&gt;here&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Here is the demo, the next post i will try to made a tutorial.&lt;br /&gt;
&lt;br /&gt;
PS: Sorry english is not my native language, i try to do my best.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="youtube-video"&gt;&lt;object height="380" width="630"&gt;&lt;param value='http://www.youtube.com/v/TlgPhvXBf9M&amp;amp;feature=youtube_gdata_player' name='movie'&gt;&lt;/param&gt;&lt;param value='transparent' name='wmode'&gt;&lt;/param&gt;&lt;embed width='630' height='380' wmode='transparent' type='application/x-shockwave-flash' src='http://www.youtube.com/v/TlgPhvXBf9M&amp;amp;feature=youtube_gdata_player'&gt; &lt;/embed&gt;  &lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-7006457536578631961?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/Jcl3qwGimSQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/7006457536578631961/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/10/red5-blazeds-realtime-video-chat.html#comment-form" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7006457536578631961?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7006457536578631961?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/Jcl3qwGimSQ/red5-blazeds-realtime-video-chat.html" title="Red5 + BlazeDS = Realtime video chat application" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/10/red5-blazeds-realtime-video-chat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ANSXk_fyp7ImA9Wx5WE04.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-4245578132183914097</id><published>2010-09-24T07:48:00.000-07:00</published><updated>2010-09-24T07:49:58.747-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-24T07:49:58.747-07:00</app:edited><title>PackagerUbuntu v0.2 released</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JHp-wFMNQ0eMYIRvs1pA3P12_p0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JHp-wFMNQ0eMYIRvs1pA3P12_p0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JHp-wFMNQ0eMYIRvs1pA3P12_p0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JHp-wFMNQ0eMYIRvs1pA3P12_p0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Hi i just finish PackagerUbuntu v0.2, there are some features and minor bug changes. Some of this are:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Now verify if the user password match the user certificate.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Some changes in the UI.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You can store the adt path for later use.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Some minor bugs were changed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Use localization for language problems, spanish and english are available.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The application was tested in Ubuntu 10.10 64 bits, please any bug or idea of how to improve this tool, let me know.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;You may download the application &lt;/span&gt;&lt;/span&gt;&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/PackagerUbuntu_v0.2.deb?attredirects=0&amp;amp;d=1"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;here.&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-4245578132183914097?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/umel4YsIqiM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/4245578132183914097/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/09/packagerubuntu-v02-released.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4245578132183914097?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4245578132183914097?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/umel4YsIqiM/packagerubuntu-v02-released.html" title="PackagerUbuntu v0.2 released" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/09/packagerubuntu-v02-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ENQ3wyfyp7ImA9Wx5XF00.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-1529087391191471910</id><published>2010-09-17T00:44:00.000-07:00</published><updated>2010-09-17T00:48:12.297-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T00:48:12.297-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Real Time Data Collaboration between Flex - AIR and Android with BlazeDS</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vuqu5TayVtbrIup81YB-OgCvCj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vuqu5TayVtbrIup81YB-OgCvCj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vuqu5TayVtbrIup81YB-OgCvCj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vuqu5TayVtbrIup81YB-OgCvCj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Hi to all, today i want to show you a litle demo that i build, this demo shows the collaborations features available with BlazeDS, but i use diferents clients applications: Flex Web , AIR desktop &amp;nbsp;and Android phone.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;For this demo i use&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;BlazeDS&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Tomcat&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Adobe AIR 2.0 for the Desktop client.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Adobe AIR 2.5 for the Android client.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Android Emulator.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for.html"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;PackagerUbuntu&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt; for package my Air applications for native Desktop and Android Emulator &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Here is the demo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;object height="380" width="630"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yhL_fQCEQSw?hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/yhL_fQCEQSw?hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="630" height="380"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-1529087391191471910?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/3jXO86c6Xc8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/1529087391191471910/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/09/real-time-data-collaboration-between.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/1529087391191471910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/1529087391191471910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/3jXO86c6Xc8/real-time-data-collaboration-between.html" title="Real Time Data Collaboration between Flex - AIR and Android with BlazeDS" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/09/real-time-data-collaboration-between.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04BQXk_cCp7ImA9Wx5WE04.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-7876987304907876745</id><published>2010-09-16T01:12:00.000-07:00</published><updated>2010-09-24T07:52:30.748-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-24T07:52:30.748-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PackagerUbuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Package your Air 2 Applications for Android in Ubuntu</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4Z5hUTUirlMxOeDgqQgPK8AU5mc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4Z5hUTUirlMxOeDgqQgPK8AU5mc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4Z5hUTUirlMxOeDgqQgPK8AU5mc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4Z5hUTUirlMxOeDgqQgPK8AU5mc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I talked about PackagerUbuntu &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;a href="http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for.html"&gt;here&lt;/a&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;and today i want to show you the other feature of PackageUbuntu, this feature allow us to generate an Android apk file from an Air 2.5 application.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;So watch the demo:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PKrGMQ3_-xw?hl=es&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PKrGMQ3_-xw?hl=es&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;If you use this application let me know and if you have ideas of how to improve it, i really want to know.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Here is the file:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;a href="https://sites.google.com/site/jdesconectado/mis-archivos/PackagerUbuntu.deb?attredirects=0&amp;amp;d=1"&gt;PackagerUbuntu&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Just finish PackagerUbuntu v0.2 you can see the post &lt;a href="http://jdesconectado.blogspot.com/2010/09/packagerubuntu-v02-released.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-7876987304907876745?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/wR6ChAtcNgM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/7876987304907876745/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for_16.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7876987304907876745?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/7876987304907876745?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/wR6ChAtcNgM/package-your-air-2-applications-for_16.html" title="Package your Air 2 Applications for Android in Ubuntu" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for_16.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYDRHo_eCp7ImA9Wx5WFk8.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-4991981038871466832</id><published>2010-09-15T23:44:00.000-07:00</published><updated>2010-09-27T14:16:15.440-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T14:16:15.440-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PackagerUbuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe Air" /><title>Package your Air 2 Applications for Ubuntu</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3eTKM2no1smwXF2VWbWfShW_EK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3eTKM2no1smwXF2VWbWfShW_EK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3eTKM2no1smwXF2VWbWfShW_EK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3eTKM2no1smwXF2VWbWfShW_EK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;&lt;b&gt;&lt;font color='#ff0000'&gt;Update:&lt;/font&gt;&lt;/b&gt; UbuntuPackager v0.2 is out take a look &lt;a href='http://jdesconectado.blogspot.com/2010/09/packagerubuntu-v02-released.html' target='_blank'&gt;here&lt;/a&gt;&lt;br/&gt;When we develop AIR applications, we see that is very easy to deploy the same application in windows, mac and linux, the only thing we have to do is run the air application. But when air 2 was introduced there were some new features these includes the ability to launch or interact to native process.&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;div&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;You can build native installers with the comand line is not hard but some time you can mess up your installer with wrong arguments and other things. Inspired in Serge Jespers &lt;a href='http://www.webkitchen.be/package-assistant-pro/'&gt;Package Assistant Pro&lt;/a&gt;, i develop a litle air 2 application that generates a native .deb installer for debian based systems and an .apk for android phones with air 2.5 installed. &lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;So watch the demo:&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style='font-family: Arial; font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-size: 13px;' class='Apple-style-span'&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class='youtube-video'&gt;&lt;object style='height: 344px; width: 425px;'&gt;&lt;param value='http://www.youtube.com/v/y0R8leSZ8-0?version=3' name='movie'&gt; &lt;/param&gt;&lt;param value='true' name='allowFullScreen'&gt; &lt;/param&gt;&lt;param value='always' name='allowScriptAccess'&gt; &lt;/param&gt;&lt;embed width='425' height='344' allowscriptaccess='always' allowfullscreen='true' type='application/x-shockwave-flash' src='http://www.youtube.com/v/y0R8leSZ8-0?version=3'&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;Some considerations:&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;This software is still in alpha, but for the most of the cases works.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;It actually work with pkcs12 certificates.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;It works with android too, but i use the -debug flag to it can work in emulators and devices (Sorry but in Peru there is no phone with android 2.2)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;Here is the file&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;    &lt;a href='https://sites.google.com/site/jdesconectado/mis-archivos/PackagerUbuntu.deb?attredirects=0&amp;amp;d=1'&gt;Packager Ubuntu&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;Tell me if this works for you.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style='font-size: small;' class='Apple-style-span'&gt;&lt;span style='font-family: Arial,Helvetica,sans-serif;' class='Apple-style-span'&gt;Sorry for my english is not my native language.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-4991981038871466832?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/OyMmFSFswA0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/4991981038871466832/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4991981038871466832?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/4991981038871466832?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/OyMmFSFswA0/package-your-air-2-applications-for.html" title="Package your Air 2 Applications for Ubuntu" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/09/package-your-air-2-applications-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BR3w_eip7ImA9Wx5TFUw.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-8831673572606989780</id><published>2010-07-30T12:42:00.001-07:00</published><updated>2010-07-30T12:42:36.242-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-30T12:42:36.242-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JInput" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>JInput, usa tus controles de juego en Java. Parte I Detectar los controles</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GR0_zMJZz7Tho7P0Zr9KhU3_tfw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GR0_zMJZz7Tho7P0Zr9KhU3_tfw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GR0_zMJZz7Tho7P0Zr9KhU3_tfw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GR0_zMJZz7Tho7P0Zr9KhU3_tfw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='left'&gt;Cuantas veces cuando creamos un juego o alguna aplicación en Java en la  cual interactúe el usuario, nos vemos en la necesidad de agregar soporte para un control, para dejar de lado el aburrido teclado :).&lt;br/&gt;&lt;/div&gt; &lt;br/&gt;El problema es que nos encontramos con que hay opciones especificas a una plataforma, normalmente a Windows usando DirectX. Como usuario de Linux busque una opción que se adecuara a mis  necesidades, así encontré &lt;a href='https://jinput.dev.java.net/'&gt;JInput&lt;/a&gt; para definirlo usare la misma información que se encuentra en la pagina:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;"The JInput Project hosts an implementation of an API for game controller                     discovery and polled input.  It is part of a suite of open-source technologies                      initiated by the Game Technology Group at Sun Microsystems with intention of                      making the development of high performance games in Java a reality.&lt;/blockquote&gt;&lt;blockquote&gt;                    &lt;p&gt;The API itself is pure Java and presents a platform-neutral 		      completely portable model of controller discovery and polling.                      It can handle arbitrary controllers and returns both human and                      machine understandable descriptions of the inputs available."&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/blockquote&gt;Bueno lo interesante aqui es que es neutral a la plataforma a la que se use para esto usa plugins especificos al Sistema Operativos, sin mas que hablar vamos  a ver como funciona:&lt;br/&gt;&lt;b&gt;&lt;br/&gt;Requerimientos:&lt;/b&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html'&gt;Java JDK 5 o superior&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.eclipse.org/downloads/'&gt;Eclipse 3.5 o superior&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='https://jinput.dev.java.net/servlets/ProjectDocumentView?documentID=59031&amp;amp;showInfo=true'&gt;JInput&lt;/a&gt;&lt;/li&gt;&lt;li&gt;1 Control de Juego&lt;/li&gt;&lt;/ul&gt;Se necesita un conocimiento básico de Java.&lt;br/&gt;&lt;br/&gt;Una vez descargado JInput tendremos una serie de archivos así como se ve en la figura:&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='484' height='175' src='http://lh4.ggpht.com/_XoQJjlpP2Zc/TFMJWoiWfDI/AAAAAAAAABY/5I1sU6B0Znk/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;De todos estos archivos solo nos interesa jinput.jar y las librerias nativas de acuerdo al SO y a la arquitectura del computador que se este usando, en mi caso uso Ubuntu 10.4 de 64 bits asi que usare libjinput-linux64.so si tienes una distribucion de linux de 32 bits usaras libjinput-linux.so&lt;br/&gt;&lt;br/&gt;Vamos a crear un nuevo proyecto en eclipse nos vemos a File &amp;gt;&amp;gt; New &amp;gt;&amp;gt; Java Project, colocamos el nombre de JInputTest a nuetro proyecto, clic en siguiente, ahora vamos a agregar la libreria jinput.jar y libjinput-linux64.so, para esto hacemos clic en la pestaña Libraries, clic en add jar y seleccionamos jinput.jar, luego expandimos la libreria JRE System Library dentro de el encontramos un item que dice Native Library Location, hacemos double clic y colocamos la ruta la carpeta donde se encuentra la libreria libjinput-linux64.so.&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='469' height='519' src='http://lh5.ggpht.com/_XoQJjlpP2Zc/TFMgD2CWNGI/AAAAAAAAABs/UqPdHGMNZHQ/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;Una vez preparado el proyecto vamos a proceder a crear la clase de prueba, la llamaremos JInputTest.java&lt;br/&gt;&lt;br/&gt;&lt;b&gt;JInputTest.java&lt;br/&gt;&lt;br/&gt;&lt;/b&gt;&lt;small&gt;&lt;font face='verdana'&gt;import net.java.games.input.Controller;&lt;br/&gt;import net.java.games.input.ControllerEnvironment;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;public class JInputTest {&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        //Obtenermos los controles que detecta nuestra computadora&lt;br/&gt;        Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();&lt;br/&gt;        for(Controller c : controllers){&lt;br/&gt;            System.out.println("Encontrado el control " + c.getName() + " que es un " + c.getType());&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;/font&gt;&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;El método getControllers() se encargara de detectar todos los controles que tengamos conectados a nuestra PC, con getName() obtenemos el nombre comercial del control y getType() nos dirá que tipo de control es.&lt;br/&gt;&lt;br/&gt;La salida del programa dependerá del control que tengan:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;&lt;font face='verdana'&gt;&lt;small&gt;Encontrado el control DragonRise Inc.   Generic   USB  Joystick   que es un Stick&lt;/small&gt;&lt;/font&gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;Ahora que sabemos cual es nuestro control vamos a ver que componentes tenemos, para esto agregamos:&lt;br/&gt;&lt;b&gt;&lt;br/&gt;JInputTest.java&lt;/b&gt;&lt;br/&gt;&lt;small&gt;&lt;font face='verdana'&gt;&lt;br/&gt;import net.java.games.input.Component;&lt;br/&gt;import net.java.games.input.Controller;&lt;br/&gt;import net.java.games.input.ControllerEnvironment;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;public class JInputTest {&lt;br/&gt;    public static void main(String[] args){&lt;br/&gt;        //Obtenermos los controles que detecta nuestra computadora&lt;br/&gt;        Controller[] controles = ControllerEnvironment.getDefaultEnvironment().getControllers();&lt;br/&gt;        for(Controller c : controles){&lt;br/&gt;            System.out.println("Encontrado el control " + c.getName() + " que es un " + c.getType());&lt;br/&gt;        }&lt;br/&gt;        //Obtenemos nuestro control&lt;br/&gt;        Controller controlActual = controles[0];&lt;br/&gt;        //Obtenemos los componentes del control&lt;br/&gt;        Component[] componentes = controlActual.getComponents();&lt;br/&gt;        int i = 0;&lt;br/&gt;        for(Component c : componentes){&lt;br/&gt;            System.out.println("Componente " + i + " :" +c.getName());&lt;br/&gt;            i++;&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;big&gt;Ejecutamos y tendremos los componentes de nuestro control.&lt;br/&gt;&lt;br/&gt;&lt;small&gt;Componente 0 :Trigger&lt;br/&gt;Componente 1 :Thumb&lt;br/&gt;Componente 2 :Thumb 2&lt;br/&gt;Componente 3 :Top&lt;br/&gt;Componente 4 :Top 2&lt;br/&gt;Componente 5 :Pinkie&lt;br/&gt;Componente 6 :Base&lt;br/&gt;Componente 7 :Base 2&lt;br/&gt;Componente 8 :Base 3&lt;br/&gt;Componente 9 :Base 4&lt;br/&gt;Componente 10 :Base 5&lt;br/&gt;Componente 11 :Base 6&lt;br/&gt;Componente 12 :x&lt;br/&gt;Componente 13 :y&lt;br/&gt;Componente 14 :z&lt;br/&gt;Componente 15 :rx&lt;br/&gt;Componente 16 :rz&lt;br/&gt;Componente 17 :pov&lt;/small&gt;&lt;br/&gt;&lt;/big&gt;&lt;/font&gt;&lt;/small&gt;&lt;br/&gt;Por el momento eso es todo, en la segunda parte de este tutorial veremos como interactuar con nuestro control.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=d3ba2f63-dd4d-8d07-b8e1-19cfac1ef0bc' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-8831673572606989780?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/CQI53bdC7LQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/8831673572606989780/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/07/jinput-usa-tus-controles-de-juego-en.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/8831673572606989780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/8831673572606989780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/CQI53bdC7LQ/jinput-usa-tus-controles-de-juego-en.html" title="JInput, usa tus controles de juego en Java. Parte I Detectar los controles" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_XoQJjlpP2Zc/TFMJWoiWfDI/AAAAAAAAABY/5I1sU6B0Znk/s72-c/%5BUNSET%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/07/jinput-usa-tus-controles-de-juego-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GQ305fyp7ImA9WxFaGE8.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-1928189441992059630</id><published>2010-07-22T10:47:00.001-07:00</published><updated>2010-07-22T10:47:02.327-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-22T10:47:02.327-07:00</app:edited><title>Data Centric Features en FlashBuilder 4</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7y5UPbJw6DgR1NhDyz751vn_DkU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7y5UPbJw6DgR1NhDyz751vn_DkU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7y5UPbJw6DgR1NhDyz751vn_DkU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7y5UPbJw6DgR1NhDyz751vn_DkU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Hola hoy les mostrare un video que realice hace ya algún tiempo para un concurso en &lt;a href='http://www.riagora.com/2010/05/flash-builder-4-contest/' target='_blank'&gt;RIAgora&lt;/a&gt;, en este muestro una de las características de FlashBuilder 4: Data Centric Features.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='youtube-video'&gt;&lt;object width='425' height='355'&gt;&lt;param value='http://www.youtube.com/v/RzHesRsCFsU&amp;amp;feature=youtube_gdata' name='movie'&gt; &lt;/param&gt;&lt;param value='transparent' name='wmode'&gt; &lt;/param&gt;&lt;embed width='425' height='355' wmode='transparent' type='application/x-shockwave-flash' src='http://www.youtube.com/v/RzHesRsCFsU&amp;amp;feature=youtube_gdata'&gt; &lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;br/&gt;Espero sea de su agrado.&lt;br/&gt;DCF Flash Builder 4&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-1928189441992059630?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/9-l9--HOFiY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/1928189441992059630/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/07/data-centric-features-en-flashbuilder-4.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/1928189441992059630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/1928189441992059630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/9-l9--HOFiY/data-centric-features-en-flashbuilder-4.html" title="Data Centric Features en FlashBuilder 4" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/07/data-centric-features-en-flashbuilder-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04ASXs8cSp7ImA9WxFaFUQ.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-8162418758281175678</id><published>2010-07-19T20:19:00.001-07:00</published><updated>2010-07-19T20:19:08.579-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-19T20:19:08.579-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex" /><category scheme="http://www.blogger.com/atom/ns#" term="BlazeDS" /><title>Conectar BlazeDS con Java</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ocJmQsJd1Jh6k8EWall-NhlVeEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ocJmQsJd1Jh6k8EWall-NhlVeEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ocJmQsJd1Jh6k8EWall-NhlVeEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ocJmQsJd1Jh6k8EWall-NhlVeEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Hola hoy día les voy a presentar un pequeño tutorial sobre como conectar BlazeDS con Java.&lt;br/&gt;&lt;br/&gt;Para las personas que usan Adobe flex como front-end y Java como back-end surge la necesidad comunicar estas tecnologías, existen varias opciones entre estas esta usar servicios HTTP, servicios Web u objetos remotos. Todas estas son buenas opciones y cada una de ellas tiene sus pros, sus contras y una forma especial de implementación.&lt;br/&gt;&lt;br/&gt;BlazeDS surgio como una alternativa muy potente para comunicar Java y Adobe Flex  desde que Adobe decidió liberarlo en el 2007 junto con la especificación de AMF, siendo este una de las mas grandes noticias para los desarrolladores de Flex y Java. Bueno sin mas preámbulos vamos a desarrollar el tutorial.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;REQUERIMIENTOS:&lt;/b&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://opensource.adobe.com/wiki/display/blazeds/download+blazeds+4' target='_blank'&gt;BlazeDS&lt;br/&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://java.sun.com/javase/downloads/widget/jdk6.jsp' target='_blank'&gt;Java JDK 5+&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder' target='_blank'&gt;FlashBuilder 4&lt;/a&gt; de preferencia usar la versión plugin, pueden usar el trial de 60 dias.&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;No se necesita grandes conocimientos en Java o Flex solo conocimientos básicos, manos a la obra.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Primero vamos a configurar la parte de Java:&lt;/b&gt;&lt;br/&gt;En Java importamos el war que se encuentra dentro de distribucion BlazeDS:&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='409' height='402' src='http://lh4.ggpht.com/_XoQJjlpP2Zc/TETyKeNiraI/AAAAAAAAAAU/8QYz_1Rcwj0/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;Luego especificamos la ruta en la cual se encuentra el war de BlazeDS y hacemos clic en Terminar:&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='409' height='425' src='http://lh3.ggpht.com/_XoQJjlpP2Zc/TETz11MLpiI/AAAAAAAAAA8/iONBZWW1Of0/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;Una vez que tenemos la configuración de Java creamos un paquete llamado prueba y dentro de el una clase PruebaBlaze.java y escribimos el siguiente método.&lt;br/&gt;&lt;br/&gt;PruebaBlaze.java&lt;br/&gt;&lt;br/&gt;package prueba;&lt;br/&gt;&lt;br/&gt;public class PruebaBlaze {&lt;br/&gt;    public String saludar(String texto){&lt;br/&gt;        return "Hola " + texto + " desde Java";&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;Luego tenemos que decirle a BlazeDS que exponga nuestro método para que pueda ser consumido por Flex, para eso vamos al archivo remoting-config.xml&lt;br/&gt;dentro de la carpeta WebContent/WEB-INF/flex, la estructura de nuestro proyecto quedaría así:&lt;br/&gt; &lt;br/&gt;&lt;div align='center'&gt;&lt;img width='194' height='342' src='http://lh3.ggpht.com/_XoQJjlpP2Zc/TEUBoEABa3I/AAAAAAAAABE/PrtmqgPSWlQ/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;remoting-config.xml&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='left'&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br/&gt;&amp;lt;service id="remoting-service" &lt;br/&gt;    class="flex.messaging.services.RemotingService"&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;adapters&amp;gt;&lt;br/&gt;        &amp;lt;adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/&amp;gt;&lt;br/&gt;    &amp;lt;/adapters&amp;gt;&lt;br/&gt;&lt;br/&gt;    &amp;lt;default-channels&amp;gt;&lt;br/&gt;        &amp;lt;channel ref="my-amf"/&amp;gt;&lt;br/&gt;    &amp;lt;/default-channels&amp;gt;&lt;br/&gt;    &lt;br/&gt;    &amp;lt;destination id="miServicio"&amp;gt;&lt;br/&gt;        &amp;lt;properties&amp;gt;&lt;br/&gt;            &amp;lt;source&amp;gt;prueba.PruebaBlaze&amp;lt;/source&amp;gt;&lt;br/&gt;        &amp;lt;/properties&amp;gt;&lt;br/&gt;    &amp;lt;/destination&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;/service&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;El destino viene a ser el nombre con el cual se expondrá nuestra clase, la cual se encuentra dentro de la etiqueta source. Luego agregamos nuestro proyecto BlazeDS_Java a nuestro servidor de aplicaciones.&lt;br/&gt;&lt;br/&gt; Con este paso finalizamos la parte de Java, ahora vamos por el cliente Flex.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;Configuración de la parte Flex:&lt;br/&gt;&lt;/b&gt;Al usar FlashBuilder 4  la configuración usando ya sea el sdk flex 3 o sdk flex 4 debe de ser la misma. Creamos un nuevo proyecto de Flex con el nombre de BlazeDS_Flex, seleccionamos el tipo de aplicación Web y Servidor J2EE y BlazeDS como se ve en la imagen:&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='422' height='468' src='http://lh6.ggpht.com/_XoQJjlpP2Zc/TEUFDAlsnNI/AAAAAAAAABI/GPjtVkXvax8/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;Presionamos siguiente y configuramos las siguientes opciones:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;En el root folder especificamos la ruta del WebContent de nuestro proyecto BlazeDS_Java.&lt;/li&gt;&lt;li&gt;En root URL agregamos la dirección de nuestro servidor de aplicaciones y agregamos el context root del proyecto BlazeDS_Java.&lt;/li&gt;&lt;li&gt;En context root el context root del proyecto BlazeDS_Java.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img width='431' height='482' src='http://lh3.ggpht.com/_XoQJjlpP2Zc/TEUGXNAx1WI/AAAAAAAAABM/7aBjtVsY_BE/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;Finalizamos y agregamos el siguiente codigo:&lt;br/&gt;&lt;br/&gt;BlazeDS_Flex.mxml&lt;br/&gt;&lt;br/&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br/&gt;&amp;lt;s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" &lt;br/&gt;               xmlns:s="library://ns.adobe.com/flex/spark" &lt;br/&gt;               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"&amp;gt;&lt;br/&gt;    &amp;lt;fx:Script&amp;gt;&lt;br/&gt;        &amp;lt;![CDATA[&lt;br/&gt;            import mx.rpc.events.FaultEvent;&lt;br/&gt;            import mx.rpc.events.ResultEvent;&lt;br/&gt;            import mx.controls.Alert;&lt;br/&gt;&lt;br/&gt;            protected function ServicioRO_faultHandler(event:FaultEvent):void&lt;br/&gt;            {&lt;br/&gt;                txtError.text = event.fault.message;&lt;br/&gt;            }&lt;br/&gt;&lt;br/&gt;            protected function ServicioCR_resultHandler(event:ResultEvent):void&lt;br/&gt;            {&lt;br/&gt;                Alert.show(event.result as String);&lt;br/&gt;            }&lt;br/&gt;&lt;br/&gt;            protected function btnInvocar_clickHandler(event:MouseEvent):void&lt;br/&gt;            {&lt;br/&gt;                ServicioCR.token = ServicioRO.saludar(txtNombre.text);&lt;br/&gt;            }&lt;br/&gt;&lt;br/&gt;        ]]&amp;gt;&lt;br/&gt;    &amp;lt;/fx:Script&amp;gt;&lt;br/&gt;    &amp;lt;fx:Declarations&amp;gt;&lt;br/&gt;        &amp;lt;mx:RemoteObject id="ServicioRO" destination="miServicio" fault="ServicioRO_faultHandler(event)"/&amp;gt;&lt;br/&gt;        &amp;lt;mx:CallResponder id="ServicioCR" result="ServicioCR_resultHandler(event)" fault="ServicioRO_faultHandler(event)"/&amp;gt;&lt;br/&gt;    &amp;lt;/fx:Declarations&amp;gt;&lt;br/&gt;    &amp;lt;s:layout&amp;gt;&lt;br/&gt;        &amp;lt;s:VerticalLayout paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10"/&amp;gt;&lt;br/&gt;    &amp;lt;/s:layout&amp;gt;&lt;br/&gt;    &amp;lt;mx:Form&amp;gt;&lt;br/&gt;        &amp;lt;mx:FormItem label="Nombre"&amp;gt;&lt;br/&gt;            &amp;lt;s:TextInput id="txtNombre"/&amp;gt;&lt;br/&gt;        &amp;lt;/mx:FormItem&amp;gt;&lt;br/&gt;        &amp;lt;mx:FormItem&amp;gt;&lt;br/&gt;            &amp;lt;s:Button id="btnInvocar" label="Invocar Metodo Java" click="btnInvocar_clickHandler(event)"/&amp;gt;&lt;br/&gt;        &amp;lt;/mx:FormItem&amp;gt;&lt;br/&gt;        &amp;lt;mx:FormItem label="Error"&amp;gt;&lt;br/&gt;            &amp;lt;s:TextInput id="txtError" width="100%" color="red"/&amp;gt;&lt;br/&gt;        &amp;lt;/mx:FormItem&amp;gt;&lt;br/&gt;    &amp;lt;/mx:Form&amp;gt;&lt;br/&gt;&amp;lt;/s:Application&amp;gt;&lt;br/&gt;&lt;br/&gt;Algunas cosas que remarcar:&lt;br/&gt;&lt;b&gt;RemoteObject:&lt;/b&gt; Es la clase que nos permite usar objetos remotos dentro de esta tenemos el destino el cual debemos de apuntar a nuestro servicio expuesto en el archivo remoting-config.xml recuerdan? &lt;br/&gt;&lt;br/&gt;&lt;b&gt;CallResponder:&lt;/b&gt; Nos permite manejar los resultados de llamadas asíncronas hechas de servicio basados en RPC.&lt;br/&gt;&lt;br/&gt;Luego ejecutamos nuestra clase en flex y si no sucede ningún problema o error saldria lo siguiente en nuestro navegador&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img src='http://lh6.ggpht.com/_XoQJjlpP2Zc/TEUUWyop1GI/AAAAAAAAABQ/dI08SLUJNcg/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;div align='left'&gt;Colocamos nuestro nombre y hacemos clic en el botón y voila:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img src='http://lh6.ggpht.com/_XoQJjlpP2Zc/TEUU3WHHyPI/AAAAAAAAABU/BXqcFGP1LGc/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='left'&gt;Eso es todo amigos, espero sus sugerencias.&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='left'&gt;&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-8162418758281175678?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/-esFdSp5bso" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/8162418758281175678/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/07/conectar-blazeds-con-java.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/8162418758281175678?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/8162418758281175678?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/-esFdSp5bso/conectar-blazeds-con-java.html" title="Conectar BlazeDS con Java" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_XoQJjlpP2Zc/TETyKeNiraI/AAAAAAAAAAU/8QYz_1Rcwj0/s72-c/%5BUNSET%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/07/conectar-blazeds-con-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCQnc6fSp7ImA9WxFaFEU.&quot;"><id>tag:blogger.com,1999:blog-4168124416840943838.post-5291888807791941775</id><published>2010-07-18T12:05:00.000-07:00</published><updated>2010-07-18T12:09:23.915-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T12:09:23.915-07:00</app:edited><title>!Bienvenido!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H6C6KfNSuZGeC-v9kuo1tYDA1LA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H6C6KfNSuZGeC-v9kuo1tYDA1LA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H6C6KfNSuZGeC-v9kuo1tYDA1LA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H6C6KfNSuZGeC-v9kuo1tYDA1LA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Hola soy Victor y les doy la bienvenida a mi blog, aquí pretenderé crear un espacio de discusión para los  diferentes temas que tengan relación con las tecnologías RIA, programación, base de datos, opensource, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espero que lo que veas aquí sea les sea  de ayuda y de su agrado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4168124416840943838-5291888807791941775?l=jdesconectado.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JdesconectadoRiaYUnPocoMs/~4/I8vEB_51sE4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jdesconectado.blogspot.com/feeds/5291888807791941775/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://jdesconectado.blogspot.com/2010/07/bienvenido.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5291888807791941775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4168124416840943838/posts/default/5291888807791941775?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JdesconectadoRiaYUnPocoMs/~3/I8vEB_51sE4/bienvenido.html" title="!Bienvenido!" /><author><name>Victor Alfredo Muguerza Capristan</name><uri>http://www.blogger.com/profile/12232427948286880338</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="30" height="32" src="http://4.bp.blogspot.com/-rO9W9wprgsE/TiUNEAr8KSI/AAAAAAAAAMI/eh-n85LCX44/s220/foto.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://jdesconectado.blogspot.com/2010/07/bienvenido.html</feedburner:origLink></entry></feed>

