<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flex i AIR &#187; Flex</title>
	<atom:link href="http://flex.imrahil.com/category/flash-platform/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://flex.imrahil.com</link>
	<description>Wiadomości ze świata RIA oraz moje zmagania z programowaniem w Flex/AIR</description>
	<lastBuildDate>Fri, 18 Jun 2010 20:40:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Flex SDK + Flash Player 10</title>
		<link>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/</link>
		<comments>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 11:05:50 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS 3.0]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex SDK]]></category>
		<category><![CDATA[Zapamiętać]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=385</guid>
		<description><![CDATA[Wpis w związku z powtarzającymi się pytaniami na różnych forach. Jak włączyć w Flex Builderze kompilowanie dla Flash Playera 10 (czyli mieć dostęp do klasy Vector i metody &#8222;save&#8221; w klasie FileReference): zakładam, że mamy nowe SDK (najlepiej 3.4) w właściwościach projektu wybieramy zakładkę &#8222;Flex Compiler&#8221; i&#8230; wpisujemy w &#8222;Additional compiler arguments&#8221; -target-player=10.0.0 . LUB [...]]]></description>
			<content:encoded><![CDATA[<p>Wpis w związku z powtarzającymi się pytaniami na różnych forach.</p>
<p><strong>Jak włączyć w <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Builderze kompilowanie dla Flash Playera 10 (czyli mieć dostęp do klasy Vector i metody &#8222;save&#8221; w klasie FileReference):</strong></p>
<ol>
<li>zakładam, że mamy nowe SDK (najlepiej 3.4)</li>
<li>w właściwościach projektu wybieramy zakładkę &#8222;Flex Compiler&#8221; i&#8230;
<ul>
<li>wpisujemy w <em>&#8222;Additional compiler arguments&#8221;</em> <strong>-target-player=10.0.0 </strong><br />
<span style="color: #ffffff;">.</span><br />
<a href="http://flex.imrahil.com/files/2009/10/player10_1.jpg" rel="lightbox[385]"><img class="alignnone size-thumbnail wp-image-387" title="player10_1" src="http://flex.imrahil.com/files/2009/10/player10_1-150x150.jpg" alt="player10_1" width="150" height="150" /></a></li>
</ul>
<p><strong>LUB</strong></p>
<ul>
<li>zaznaczamy <em>&#8222;Require Flash Player version:&#8221;</em> i podajemy wartości: 10 0 0<br />
<span style="color: #ffffff;">.</span><br />
<a href="http://flex.imrahil.com/files/2009/10/player10_2.jpg" rel="lightbox[385]"><img class="alignnone size-thumbnail wp-image-386" title="player10_2" src="http://flex.imrahil.com/files/2009/10/player10_2-150x150.jpg" alt="player10_2" width="150" height="150" /></a></li>
</ul>
</li>
</ol>
<p>Więcej informacji na stronach <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> &#8211; <a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10" target="_blank">Targeting Flash Player 10</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wysyłanie formularzy multipart/form-data</title>
		<link>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/</link>
		<comments>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 13:08:04 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AS 3.0]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=149</guid>
		<description><![CDATA[Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side). Jednak cały kłopot polegał na tym, że: dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML&#8217;u &#8211; czyli niejako miałem się podszyć pod zwykłą stronę www, [...]]]></description>
			<content:encoded><![CDATA[<p>Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side).</p>
<p>Jednak cały kłopot polegał na tym, że:</p>
<ul>
<li> dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML&#8217;u &#8211; czyli niejako miałem się podszyć pod zwykłą stronę www, nie wykorzystując żadnych udogodnień typu AMF, Webservice czy RemoteObject,</li>
<li>chciałem wysłać jednocześnie dane tekstowe (np. dane rejestracyjne) oraz binarne (np. obrazki JPG), bez limitu ilości,</li>
<li>obrazki nie były pobierane z dysku użytkownika przez FileReference.browse, ale tworzone w locie jako zrzuty komponentów przez ImageSnapshot i trzymane w pamięci w zmiennych typu ByteArray.</li>
</ul>
<p>Jedyne co udało mi się znaleźć to <a href="http://www.neerfri.com/2007/12/flex-multipartform-data-post-request.html" target="_blank">artykuł na blogu Neer&#8217;a Friedman&#8217;a</a> i jego <a href="http://code.google.com/p/multipart-loader/" target="_blank">projekt na Google Code</a>. Był to dobry początek do zmian&#8230;<br />
BTW: niejaki Mike Stead, którego komentarz widnieje pod wpisem Neer&#8217;a też zajmował się tym problemem i zdaje się, że nawet go jakoś elegancko rozwiązał, jednak jego stronka padła kompletnie i nie ma jej nawet w Google Cache&#8230;</p>
<p>Wywaliłem kod odpowiedzialny za używanie Socketów zamieniając go na zwykłego URLLoader&#8217;a oraz troche zrefaktoryzowałem kod (uporzadkowałem). Tym sposobem pojawiła się biblioteka MultipartRequestLoader <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://flex.imrahil.com/work/multipart_loader/multipart_loader_example.html" target="_blank">Przykładowa aplikacja</a> (wraz z kodem źródłówym pod prawym klikiem myszki), a tutaj kod biblioteki: <a href="http://flex.imrahil.com/work/multipart_loader/multipart_loader_imrahil.zip" target="_blank">multipart_loader_imrahil.zip</a></p>
<p>Kod przykładowej aplikacji:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;init()&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;mx:Script&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;![CDATA[</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import multipart.MultipartVariables;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import multipart.MultipartRequestLoader;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private var loader:MultipartRequestLoader;</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function init():void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader = new MultipartRequestLoader('http://flex.imrahil.com/work/multipart_loader/upload.php');</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var variables:MultipartVariables = new MultipartVariables();</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var myByteArray:ByteArray = new ByteArray();</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we will create a fake file content here, you should replace this with the binary data you want to upload</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(var i:int=0; i&lt;100;i++) </span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myByteArray.writeUTFBytes(&quot;123by\nAR\r\nRA\x65\x0156&quot;);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;variables.add('file_data', myByteArray, 'filename.bin');</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;variables.add('another_var','extra data');</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.variables = variables;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(Event.COMPLETE, fileUploaded);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function fileUploaded(event:Event):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += 'Result:';</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += MultipartRequestLoader(event.target).responseBody;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function securityErrorHandler(event:SecurityErrorEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &quot;securityErrorHandler: &quot; + event;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function ioErrorHandler(event:IOErrorEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &quot;ioErrorHandler: &quot; + event;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function upload(event:MouseEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.load();</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;]]&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp;&lt;/mx:Script&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;center&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Upload!&quot;</span> click=<span style="color: #ff0000;">&quot;upload(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextArea</span> id=<span style="color: #ff0000;">&quot;outputTxt&quot;</span> width=<span style="color: #ff0000;">&quot;500&quot;</span> height=<span style="color: #ff0000;">&quot;250&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span> <br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex SDK 3.4 &#8211; niespodzianka z wykresami</title>
		<link>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/</link>
		<comments>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 12:30:41 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Wydarzenia]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=332</guid>
		<description><![CDATA[Adobe opublikowało dzisiaj oficjalnie nowe Flex SDK 3.4 (chodzi oczywiście o to ze strony głównej, a nie z opensource.adobe.com gdzie leżało już jakiś czas temu). W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (Flex Data Visualization Component) w tejże wersji. Największe zaskoczenie jednak to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> opublikowało dzisiaj oficjalnie <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk" target="_blank">nowe Flex SDK 3.4</a> (chodzi oczywiście o to ze strony głównej, a nie z <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3" target="_blank">opensource.adobe.com</a> gdzie leżało już jakiś czas temu).</p>
<p>W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (<a href="http://download.macromedia.com/pub/flex/sdk/datavisualization_sdk3.4.zip" target="_blank">Flex Data Visualization Component</a>) w tejże wersji.</p>
<p>Największe zaskoczenie jednak to fakt, że paczka z wykresami zawiera <strong>kod źródłowy</strong> oraz <strong>nie ma klasy odpowiedzialnej za watermarki!</strong> Ok, wcześniej można było rozpakować kod źródłowy posiadając klucz licencyjny do <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Buildera, ale brak watermarków to całkowita nowość. Teraz każdy może robić wykresy czy używać AdvancedDataGrid bez żadnych problemów.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex + Java w jednym projekcie w Flex Builderze &#8211; część II</title>
		<link>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/</link>
		<comments>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 20:41:32 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=260</guid>
		<description><![CDATA[Czas na stworzenie prostej aplikacji wykorzystującej Jave (BlazeDS) i Flex w jednym projekcie Flex Buildera. Będzie to klasyczne &#8222;Hello World&#8221; Wymagane oprogramowanie: Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools, BlazeDS 3.2.0.3978 &#8211; dostępny na stronach [...]]]></description>
			<content:encoded><![CDATA[<p>Czas na stworzenie prostej aplikacji wykorzystującej Jave (<a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"  class="alinks_links" onclick="return alinks_click(this);" title="BlazeDS"  rel="external">BlazeDS</a>) i <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> w jednym projekcie Flex Buildera. Będzie to klasyczne &#8222;Hello World&#8221; <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Wymagane oprogramowanie:</strong></p>
<ul>
<li><strong>Flex Builder 3.0.2</strong> – dostępny do ściągnięcia w wersji trial ze <a href="http://www.adobe.com/go/flex_trial" target="_blank">stron Adobe</a> lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze <a href="https://freeriatools.adobe.com/" target="_blank">strony Free RIA Tools</a>,</li>
<li><strong>BlazeDS 3.2.0.3978</strong> &#8211; dostępny na <a href="http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-bin-3.2.0.3978.zip" target="_blank">stronach Adobe Open Source</a> (jest to wersja z samymi binariami &#8211; dostępna jest także wersja z zintegrowanym Tomcatem) &#8211; rozpakowujemy w dowolne miejsce, np.: <em>C:\Work\BlazeDS</em></li>
<li><strong>Tomcat 6.0.20</strong> &#8211; dostępny na <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">stronach Apache Software Foundation</a> &#8211; rozpakowujemy w dowolne miejsce, np.: <em>C:\apache-tomcat-6.0.20</em></li>
<li><strong>BlazeMonster</strong> &#8211; bardzo przydatne narzędzie do testowania świeżo stworzonych metod BlazeDS &#8211; do ściągnięcia <a href="http://sujitreddyg.wordpress.com/2009/05/07/blazemonster/" target="_blank">z bloga Sujit Reddy G</a>.</li>
</ul>
<p>Do dzieła!</p>
<p><span id="more-260"></span></p>
<p>Po odpaleniu Flex Buildera tworzymy nowy projekt wybierając w sekcji &#8222;Server technology&#8221; opcję &#8222;J2EE&#8221; i zaznaczając &#8222;Create combined <a href="http://java.sun.com/javase/downloads/index.jsp"  class="alinks_links" onclick="return alinks_click(this);" title="Java"  rel="external">Java</a>/Flex project using WTP&#8221;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava01.jpg" rel="lightbox[260]"><img class="size-medium wp-image-268  aligncenter" title="FlexJava01" src="http://flex.imrahil.com/files/2009/07/FlexJava01-300x292.jpg" alt="FlexJava01" width="300" height="292" /></a></p>
<p>Następnym krokiem jest stworzenie lokalnej instancji serwera Tomcat &#8211; wskazujemy katalog z rozpakowanymi binariami Tomcata:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava02.jpg" rel="lightbox[260]"><img class="size-medium wp-image-269  aligncenter" title="FlexJava02" src="http://flex.imrahil.com/files/2009/07/FlexJava02-266x300.jpg" alt="FlexJava02" width="266" height="300" /></a></p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava03.jpg" rel="lightbox[260]"><img class="size-medium wp-image-270  aligncenter" title="FlexJava03" src="http://flex.imrahil.com/files/2009/07/FlexJava03-266x300.jpg" alt="FlexJava03" width="266" height="300" /></a></p>
<p>oraz wskazanie lokalizacji pliku <em>blazeds.war</em>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava04.jpg" rel="lightbox[260]"><img class="size-medium wp-image-271 aligncenter" title="FlexJava04" src="http://flex.imrahil.com/files/2009/07/FlexJava04-300x292.jpg" alt="FlexJava04" width="300" height="292" /></a></p>
<p>Następny ekran i projekt jest już utworzony:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava05.jpg" rel="lightbox[260]"><img class="size-medium wp-image-272 aligncenter" title="FlexJava05" src="http://flex.imrahil.com/files/2009/07/FlexJava05-277x300.jpg" alt="FlexJava05" width="277" height="300" /></a></p>
<p>Struktura nowego projektu powinna przedstawiać się następująco:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava06.jpg" rel="lightbox[260]"><img class="size-full wp-image-267 aligncenter" src="http://flex.imrahil.com/files/2009/07/FlexJava06.jpg" alt="FlexJava06" width="280" height="451" /></a></p>
<p style="text-align: left;">Katalog <em>flex_src</em> to nasz główny katalog ze kodem Flexa, <em>src</em> z kodem Java, a <em>WebContent</em> to nasz lokalny serwer WWW.<br />
Aby upewnić się czy wszystko działa dodajmy do kodu Flexa kawałek prostego kodu:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;Hello World!&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
<p>i odpalmy całą aplikację na serwerze &#8211; klikamy prawym klawiszem myszy na projekcie wybieramy <em>Run</em> -&gt; <em>Run on Server</em>, a następnie Next, Next, Finish:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava07.jpg" rel="lightbox[260]"><img class="size-medium wp-image-284   aligncenter" title="FlexJava07" src="http://flex.imrahil.com/files/2009/07/FlexJava07-292x300.jpg" alt="FlexJava07" width="292" height="300" /></a></p>
<p style="text-align: left;">W oknie konsoli Flex Buildera widzimy logi uruchamianego Tomcata, a na koniec otrzymujemy przepiękny error <em>HTTP Status 404</em> <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Jednak nie ma się co zrażać! Wracamy do Flex Buildera i wciskamy klawisz F11 (<em>Run debug</em>) w efekcie czego otwiera nam się domyślna przeglądarka, a w niej nasza mikro-aplikacja:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava08.jpg" rel="lightbox[260]"><img class="size-medium wp-image-285 aligncenter" src="http://flex.imrahil.com/files/2009/07/FlexJava08-300x252.jpg" alt="FlexJava08" width="300" height="252" /></a></p>
<p>Taadaa! Serwer śmiga aż miło. Czas przystąpić do stworzenia czegoś bardziej konkretnego! Do dzieła!<br />
Na początek tworzymy nową klasę w Javie &#8211; <em>File -&gt; New -&gt; Other -&gt; Class</em>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava09.jpg" rel="lightbox[260]"><img class="size-medium wp-image-298 aligncenter" title="FlexJava09" src="http://flex.imrahil.com/files/2009/07/FlexJava09-250x300.jpg" alt="FlexJava09" width="250" height="300" /></a></p>
<p>i dodajemy do niej dwie metody: <em>helloWorld</em> i <em>repeatAfterMe</em>:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.imrahil.tutorial</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorld <br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> helloWorld<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;Server said: Hello World!&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> repeatAfterMe<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> sayHello<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;You said: &quot;</span> <span style="color: #339933;">+</span> sayHello<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Skompilowana klasa powinna znaleźć się w katalogu<em> <strong>/WebContent/WEB-INF/classes/com/imrahil/tutorial</strong></em>.<br />
Żeby jednak BlazeDS potrafił z niej skorzystać trzeba ją dodać do pliku <strong><em>remoting-config.xml</em></strong>, który powinien wyglądać następująco:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;remoting-service&quot;</span> </span><br />
<span style="color: #009900;"> &nbsp; &nbsp;<span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.services.RemotingService&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adapter-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;java-object&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.services.remoting.adapters.JavaAdapter&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/adapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;default-channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/default-channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;destination</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;HelloWorld&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.imrahil.tutorial.HelloWorld<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/destination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Przy okazji można wywalić pliki: <strong><em>messaging-config.xml</em></strong> oraz <em><strong>proxy-config.xml</strong> </em>bo z tych opcji nie będziemy wogóle korzystać. Trzeba jednak zmodyfikować wtedy plik <strong><em>services-config.xml</em></strong>, który powinien wyglądać tak:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service-include</span> <span style="color: #000066;">file-path</span>=<span style="color: #ff0000;">&quot;remoting-config.xml&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;security<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;login-command</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.security.TomcatLoginCommand&quot;</span> <span style="color: #000066;">server</span>=<span style="color: #ff0000;">&quot;Tomcat&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/security<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.AMFChannel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;http://{server.name}:{server.port}/{context.root}/messagebroker/amf&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.endpoints.AMFEndpoint&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.log.ConsoleTarget&quot;</span> <span style="color: #000066;">level</span>=<span style="color: #ff0000;">&quot;Debug&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>[BlazeDS] <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeCategory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeCategory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Endpoint.*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Service.*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Configuration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;system<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;redeploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;enabled<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/enabled<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/redeploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/system<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Cenną zmianą jest zwłaszcza opcja <strong>target=&#8221;Debug&#8221;</strong> w sekcji <strong>&lt;logging /&gt;</strong> &#8211; pozwoli nam ona obserwować odpowiedzi BlazeDS w konsoli serwera Tomcat.</p>
<p>Czas zatem stworzyć aplikację Flex komunikującą się z nowo stworzonymi metodami Javy.</p>
<p>Tworzymy nową <em>MXML Application</em> i piszemy:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;vertical&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;left&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RemoteObject</span> id=<span style="color: #ff0000;">&quot;myservice&quot;</span> fault=<span style="color: #ff0000;">&quot;faultHandler(event)&quot;</span> showBusyCursor=<span style="color: #ff0000;">&quot;true&quot;</span> destination=<span style="color: #ff0000;">&quot;HelloWorld&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:method</span> name=<span style="color: #ff0000;">&quot;helloWorld&quot;</span> result=<span style="color: #ff0000;">&quot;resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:method</span> name=<span style="color: #ff0000;">&quot;repeatAfterMe&quot;</span> result=<span style="color: #ff0000;">&quot;resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:RemoteObject</span><span style="color: #7400FF;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;mx:Script&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;![CDATA[</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import mx.rpc.events.ResultEvent;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import mx.rpc.events.FaultEvent;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function resultHandler(evt:ResultEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += evt.message.body.toString() + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function faultHandler(fault:FaultEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &nbsp;&quot;Code: &quot; + fault.fault.faultCode + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += &quot;Message: &quot; + fault.fault.faultString + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += &quot;Detail: &quot; + fault.fault.faultDetail + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;]]&gt;</span><br />
<span style="color: #339933;">&nbsp; &nbsp; &lt;/mx:Script&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;Output:&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextArea</span> width=<span style="color: #ff0000;">&quot;500&quot;</span> height=<span style="color: #ff0000;">&quot;100&quot;</span> id=<span style="color: #ff0000;">&quot;outputTxt&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Hello World!&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('helloWorld').send();&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Repeat After Me:&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('repeatAfterMe').send(myText.text);&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;myText&quot;</span> text=<span style="color: #ff0000;">&quot;Sent to Server&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Invoke wrong method&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('wrongMethod').send();&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
<p><strong>Uwaga!</strong> Jeśli po odpaleniu w przeglądarce (klawisz F11 lub CTRL+F11 w Flex Builderze) i wywołaniu metody helloWorld wyskakuje nam błąd <em>Client.Error.MessageSend</em> (a konkretniej: <em>Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: &#8216;http://localhost:8080/WebContent/messagebroker/amf&#8217;</em>) to  prawdopodobnie trzeba zmodyfikować parametr <strong><em>Context root</em></strong> w opcjach projektu: <strong><em>Preferences -&gt; Flex Server -&gt; Context root</em></strong>.<br />
Właściwą wartością jest nazwa projektu, czyli w naszym przypadku: <em>BlazeDS-Hello-World.</em> Trzeba jeszcze zrestartować serwer (lub wyczyścić mu cache: prawy klawisz myszy na serwerze w zakładce <em>Servers</em> i opcja <em>Clean</em>)</p>
<p>Gdy już wszystko ustawimy jak trzeba to pod adresem: <strong><em>http://localhost:8080/BlazeDS-Hello-World/hello_world.html</em></strong> znajdziemy naszą śliczną aplikację:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava10.jpg" rel="lightbox[260]"><img class="size-medium wp-image-301 aligncenter" title="FlexJava10" src="http://flex.imrahil.com/files/2009/07/FlexJava10-300x209.jpg" alt="FlexJava10" width="300" height="209" /></a></p>
<p>Jeśli ktoś nie miał tyle czasu, żeby samemu stworzyć powyższą aplikację ten może <a href="http://flex.imrahil.com/tutorials/flex-java/BlazeDS-Hello-World.zip">ściągnąć pełen kod wraz z plikami projektu Flex Buildera</a>.</p>
<p>ps.: kod Flexowy bazuje w pewnej części na kodzie Wade&#8217;a Arnolda z <a href="http://wadearnold.com/blog/flash/blazeds-worth-figuring-out-helloworld-example" target="_blank">tego wpisu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex + Java w jednym projekcie w Flex Builderze &#8211; część I</title>
		<link>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/</link>
		<comments>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 12:10:39 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=147</guid>
		<description><![CDATA[Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie Flex Builder do kodowania Flex + Java. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych. Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku [...]]]></description>
			<content:encoded><![CDATA[<p>Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Builder do kodowania Flex + <a href="http://java.sun.com/javase/downloads/index.jsp"  class="alinks_links" onclick="return alinks_click(this);" title="Java"  rel="external">Java</a>. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych.</p>
<p>Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku kodowania przez jedną osobę.</p>
<p>Kod Javy będzie docelowo wykorzystywał <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"  class="alinks_links" onclick="return alinks_click(this);" title="BlazeDS"  rel="external">BlazeDS</a>/LiveCycle Data Services &#8211; będzie to jednak zagadnieniem następnego tutoriala.</p>
<p><strong>Wymagane oprogramowanie:</strong> Flex Builder 3.0.2 &#8211; dostępny do ściągnięcia w wersji trial ze <a href="http://www.adobe.com/go/flex_trial" target="_blank">stron Adobe</a> lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze <a href="https://freeriatools.adobe.com/" target="_blank">strony Free RIA Tools</a>.</p>
<p><span id="more-147"></span></p>
<p>Zaczynamy od uruchomienia Flex Buildera:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds00.jpg" rel="lightbox[147]"><img class="size-medium wp-image-222 aligncenter" title="flex_builder_blazeds00" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds00-300x141.jpg" alt="flex_builder_blazeds00" width="300" height="141" /></a></p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds01.jpg" rel="lightbox[147]"><img class="size-medium wp-image-223 aligncenter" title="flex_builder_blazeds01" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds01-300x225.jpg" alt="flex_builder_blazeds01" width="300" height="225" /></a></p>
<p style="text-align: left;">Wybieramy menu <strong>Help -&gt; Software Updates -&gt; Find and Install</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds02.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-237" title="flex_builder_blazeds02" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds02-300x225.jpg" alt="flex_builder_blazeds02" width="300" height="225" /></a></p>
<p style="text-align: left;">Zaznaczamy opcję &#8222;<strong>Search for new features to install</strong>&#8222;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds03.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-238" title="flex_builder_blazeds03" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds03-296x300.jpg" alt="flex_builder_blazeds03" width="296" height="300" /></a></p>
<p style="text-align: left;">Na liście zaznaczamy <strong>Europa Discovery Site</strong> i klikamy <strong>Finish</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds04.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-239" title="flex_builder_blazeds04" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds04-296x300.jpg" alt="flex_builder_blazeds04" width="296" height="300" /></a></p>
<p style="text-align: left;">Po wczytaniu listy aplikacji wybieramy ostatnią pozycję &#8222;<strong>Web and JEE Development</strong>&#8222;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds05.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-227" title="flex_builder_blazeds05" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds05-272x300.jpg" alt="flex_builder_blazeds05" width="272" height="300" /></a></p>
<p style="text-align: left;">oraz wybieramy &#8222;<strong>Select required</strong>&#8222;, żeby dodać wszystkie wymagane zależności:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds06.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-228" title="flex_builder_blazeds06" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds06-272x300.jpg" alt="flex_builder_blazeds06" width="272" height="300" /></a></p>
<p style="text-align: left;">Następny krok to zgoda licencyjna:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds07.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-229" title="flex_builder_blazeds07" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds07-272x300.jpg" alt="flex_builder_blazeds07" width="272" height="300" /></a></p>
<p style="text-align: left;">oraz wybór komponentów opcjonalnych &#8211; wybieramy &#8222;<strong>Select All</strong>&#8221; (lub nie ruszamy nic, jeśli wszystko jest już zaznaczone):</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds08.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-230" title="flex_builder_blazeds08" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds08-272x300.jpg" alt="flex_builder_blazeds08" width="272" height="300" /></a></p>
<p style="text-align: left;">Jeszcze tylko ekran podsumowujący i klikamy <strong>Finish</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds09.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-231" title="flex_builder_blazeds09" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds09-272x300.jpg" alt="flex_builder_blazeds09" width="272" height="300" /></a></p>
<p style="text-align: left;">Chwila czekania, aż wszystkie ściągną się na dysk:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds10.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-236" title="flex_builder_blazeds10" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds10-300x132.jpg" alt="flex_builder_blazeds10" width="300" height="132" /></a></p>
<p style="text-align: left;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds11.jpg" rel="lightbox[147]"><img class="alignleft size-medium wp-image-250" style="display: none;" title="flex_builder_blazeds11" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds11-300x250.jpg" alt="flex_builder_blazeds11" width="300" height="250" /></a></p>
<p style="text-align: left;">Po ściągnięciu plików jeszcze raz zatwierdzamy chęć instalacji wybierając &#8222;<strong>Install all</strong>&#8222;.</p>
<p style="text-align: left;">Po pozytywej i całkowitej instalacji pojawia się monit do restartu Flex Buildera:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds12.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-221" title="flex_builder_blazeds12" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds12-300x99.jpg" alt="flex_builder_blazeds12" width="300" height="99" /></a></p>
<p style="text-align: left;">Efektem powyższych kroków będzie nowa opcja &#8222;<strong>Create combined Flex/Java project using WTP</strong>&#8221; w momencie tworzenia nowego projektu:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds13.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-256" title="flex_builder_blazeds13" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds13-300x292.jpg" alt="flex_builder_blazeds13" width="300" height="292" /></a></p>
<p style="text-align: left;">Czas na Flex + Java w jednym projekcie w Flex Builderze &#8211; część II !</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMF remoting &#8211; co wybrać?</title>
		<link>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/</link>
		<comments>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 09:11:17 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Serwer Side]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=177</guid>
		<description><![CDATA[Co wybrać? AMFPHP, ZendAmf, WebOrb for PHP czy może SabreAMF? A może wogóle język inny niż PHP? Pytanie na które ciężko ostanim czasy znaleźć dobrą odpowiedź. Żeby choć trochę ułatwić sprawę polecam sprawne porównanie istniejących rozwiązań dla PHP opublikowane przez  Mihai Corlan&#8217;a. Dodatkowo dodam, że w dniu dzisiejszym pojawił się update (do wersji 1.7.8) biblioteki [...]]]></description>
			<content:encoded><![CDATA[<p>Co wybrać? AMFPHP, ZendAmf, WebOrb for PHP czy może SabreAMF? A może wogóle język inny niż PHP? <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pytanie na które ciężko ostanim czasy znaleźć dobrą odpowiedź. Żeby choć trochę ułatwić sprawę polecam sprawne <a href="http://corlan.org/2009/03/31/flex-and-remoting-with-php-which-library-is-the-best-zend-amf-amfphp-weborb-for-php-or-sabreamf/" target="_blank">porównanie istniejących rozwiązań dla PHP</a> opublikowane przez  Mihai Corlan&#8217;a.</p>
<p>Dodatkowo dodam, że w dniu dzisiejszym pojawił się update (do wersji 1.7.8) biblioteki ZendAMF &#8211; więcej info na <a href="http://wadearnold.com/blog/?p=248" target="_blank">blogu Wade&#8217;a Arnolda</a>, a kod można ściągnąć ze <a href="http://framework.zend.com/download/amf" target="_blank">stron Zend Frameworka</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe i Facebook &#8211; oficjalne AS3 API</title>
		<link>http://flex.imrahil.com/2009/03/31/adobe-i-facebook-oficjalne-as3-api/</link>
		<comments>http://flex.imrahil.com/2009/03/31/adobe-i-facebook-oficjalne-as3-api/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 09:03:51 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AS 3.0]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=175</guid>
		<description><![CDATA[Adobe i Facebook ogłosiły dzisiaj, że łączą wysiłki w celu ułatwienia deweloperom Flash Platform pracy nad aplikacjami działającymi na Facebook Platform. W tym celu opublikowana została oficjalna biblioteka AS3 umożliwiająca korzystanie z API Facebook&#8217;a z poziomu aplikacji Flex/Flash. Pojawił się także specjalny dział na stronach Adobe Devnet poświęcony temu zagadnieniu. Serwis InsideRIA.com będzie od przyszłego [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> i Facebook ogłosiły dzisiaj, że łączą wysiłki w celu ułatwienia deweloperom Flash Platform pracy nad aplikacjami działającymi na Facebook Platform. W tym celu opublikowana została <a href="http://code.google.com/p/facebook-actionscript-api/" target="_blank">oficjalna biblioteka AS3</a> umożliwiająca korzystanie z API Facebook&#8217;a z poziomu aplikacji <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a>/Flash. Pojawił się także specjalny dział na <a href="http://www.adobe.com/devnet/facebook/" target="_self">stronach Adobe Devnet</a> poświęcony temu zagadnieniu.</p>
<p>Serwis <a href="http://www.insideria.com" target="_blank">InsideRIA.com</a> będzie od przyszłego tygodnia <a href="http://www.insideria.com/2009/03/new-series-covering-facebook-a.html" target="_blank">publikował tutoriale</a> pokazujące w jaki sposób wykorzystać w praktyce nowe facebook&#8217;owe AS3 API.</p>
<p>Edit: Ryan Stewart opublikował <a href="http://blog.digitalbackcountry.com/2009/03/demo-of-the-real-time-social-web-with-the-flash-platform/" target="_blank">niesamowite demo</a> pokazujące możliwości Facebook API oraz Adobe Flash Collaboration Services (AFCS &#8211; dawniej Cocomo)</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/03/31/adobe-i-facebook-oficjalne-as3-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tour de Flex 1.2</title>
		<link>http://flex.imrahil.com/2009/03/31/tour-de-flex-12/</link>
		<comments>http://flex.imrahil.com/2009/03/31/tour-de-flex-12/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 08:56:01 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=172</guid>
		<description><![CDATA[Wyśmienita aplikacja Tour de Flex przedstawiająca możliwości Flex/AIR doczekała się aktualizacji do wersji 1.2. Można ją ściągnąć ze strony http://www.adobe.com/devnet/flex/tourdeflex (uwaga! instalka waży 37MB!) lub wykonać automatyczny update uruchamiając wcześniejszą wersję aplikacji. Więcej informacji o zmianach znajdziecie na stronie Grega Wilsona. Ciekawostką jest także wersja online.]]></description>
			<content:encoded><![CDATA[<p>Wyśmienita aplikacja Tour de <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> przedstawiająca możliwości Flex/<a href="http://www.adobe.com/products/air/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe AIR"  rel="external">AIR</a> doczekała się aktualizacji do wersji 1.2. Można ją ściągnąć ze strony <a href="http://www.adobe.com/devnet/flex/tourdeflex" target="_blank">http://www.adobe.com/devnet/flex/tourdeflex</a> (uwaga! instalka waży 37MB!) lub wykonać automatyczny update uruchamiając wcześniejszą wersję aplikacji. Więcej informacji o zmianach znajdziecie <a href="http://gregsramblings.com/2009/03/30/tour-de-flex-12-released/" target="_blank">na stronie Grega Wilsona</a>.</p>
<p>Ciekawostką jest także <a href="http://www.adobe.com/devnet/flex/tourdeflex/web/" target="_blank">wersja online</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/03/31/tour-de-flex-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relacja z RIA Day 2008</title>
		<link>http://flex.imrahil.com/2008/11/28/relacja-z-ria-day-2008/</link>
		<comments>http://flex.imrahil.com/2008/11/28/relacja-z-ria-day-2008/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 19:08:51 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Wydarzenia]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=115</guid>
		<description><![CDATA[27 listopada 2008 roku firma Janmedia zorganizowała we Wrocławiu spotkanie o nazwie RIA Day 2008 (Flex, AIR , LiveCycle &#38; ColdFusion jam). Oprócz zagadnień zawartych w nazwie odbyło się także wręczenie nagród w konkursie Flex Challenge. Pierwsze wystąpienie miał jeden z głównych Adobe Evangelistów, Ben Forta. [inspic=8,,fullscreen,thumb,:must] [inspic=10,,fullscreen,thumb,:must] [inspic=11,,fullscreen,thumb,:must] [inspic=12,,fullscreen,thumb,:must] [inspic=15,,fullscreen,thumb,:must] Bardzo ciekawie prezentowały się [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">27 listopada 2008 roku firma <a href="http://www.janmedia.pl/" target="_blank">Janmedia</a> zorganizowała we Wrocławiu spotkanie o nazwie <a href="http://www.riaday.pl" target="_blank">RIA Day 2008</a> (<a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a>, <a href="http://www.adobe.com/products/air/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe AIR"  rel="external">AIR</a> , LiveCycle &amp; ColdFusion jam). Oprócz zagadnień zawartych w nazwie odbyło się także wręczenie nagród w konkursie <a href="http://www.flexchallenge.com/pl/" target="_blank">Flex Challenge</a>.</p>
<p style="text-align: left;">Pierwsze wystąpienie miał jeden z głównych <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> Evangelistów, <a href="http://forta.com/" target="_blank">Ben Forta</a>.</p>
<p style="text-align: center;">
<table border="0" width="360" align="center">
<tbody>
<tr>
<td align="center">[inspic=8,,fullscreen,thumb,:must]</td>
<td align="center">[inspic=10,,fullscreen,thumb,:must]</td>
</tr>
<tr>
<td align="center">[inspic=11,,fullscreen,thumb,:must]</td>
<td align="center">[inspic=12,,fullscreen,thumb,:must]</td>
</tr>
<tr>
<td colspan="2" align="center">[inspic=15,,fullscreen,thumb,:must]</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">Bardzo ciekawie prezentowały się plany Adobe na rok 2009, a zwłaszcza kwestia nowych wersji Flash Playera (codename: &#8222;Argo&#8221; i &#8222;Stratos&#8221;) oraz nowego środowiska AIR (codename: &#8222;Athena&#8221;, &#8222;Zephyr&#8221; oraz &#8222;Stratos&#8221;) dla urządzeń innych niż PC (czyli telewizory, smartphone&#8217;y czy low-endowe komórki)</p>
<p style="text-align: center;">
<table border="0" width="360" align="center">
<tbody>
<tr>
<td align="center">[inspic=13,,fullscreen,thumb,:must]</td>
<td align="center">[inspic=14,,fullscreen,thumb,:must]</td>
</tr>
</tbody>
</table>
<p>Bardzo ciekawe było też wystąpienie Piotra Walczyszyna (pierwszy, polski Adobe Evangelist <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) które początkowo miało być na temat tworzenia aplikacji AIR za pomocą Flash CS4, a skończyło się na pokazaniu jak korzystać z Adobe Cocomo oraz frameworka Swiz.</p>
<p style="text-align: center;">[inspic=16,,fullscreen,thumb,:must]</p>
<p>Później techniczną prezentacją na temat Zend + AMF dał Michał Zwoliński, po nim znowu Ben Forta z bardziej deweloperską niż marketingową prezentacją na temat Flex + LiveCycle i mocno marketingowa prezentacja Tadeusza Chełkowskiego o narzędziach z pakietu LiveCycle (wspomaganie decyzji, generowanie PDF&#8217;ów, etc)</p>
<p>Po kolejnej przerwie na regenerację sił i konsumpcję organizatorzy wręczyli nagrody w konkursie Flex Challenge. Gdy nagrody rzeczowe zostały rozdane, swoje prezentacje miało 3 finalistów, z których tylko Mateusz Malczak (pierwsze miejsce za aplikację <a href="http://cartoonair.com/" target="_blank">cartoonair.com</a>) pokazał coś technicznego i konkretnego <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Niestety zawiodłem się na ekipie ArsThanea, która opowiadała o projekcie <a href="http://mydeco.com/" target="_blank">MyDeco.com</a>. Chłopaki nie pokazali nic technicznego, a jedynie same ogólniki (że Cairngorm, że Papervision, etc). Odniosłem też wrażenie, że nie lubią tego projekt (strasznie &#8222;rozstrzelonego&#8221; po świecie &#8211; część ekipy w Londynie, część na Ukrainie, część jeszcze w innej części świata, narzucanych narzędzi pracy)</p>
<p>Ogólnie imprezę oceniam bardzo wysoko. Organizacja była perfekcyjna, poruszane tematy ciekawe, a jedzenie bardzo dobre <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2008/11/28/relacja-z-ria-day-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tour de Flex</title>
		<link>http://flex.imrahil.com/2008/11/17/tour-de-flex/</link>
		<comments>http://flex.imrahil.com/2008/11/17/tour-de-flex/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 10:16:35 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=84</guid>
		<description><![CDATA[Jeśli podobał się wam Flex 3 Component Explorer to nie możecie przejść obojętnie obok tej aplikacji! Tour de Flex to aplikacja AIR umożliwiająca przegląd: komponentów wizualnych Flexa czy AIR&#8217;a, sposobów komunikacji z stroną serwerową (HTTPService, WebService czy Remoting), wykorzystania różnorakich API (np.: Twitter, Ebay, Flickr, etc), zewnętrznych komponentów do generowania wykresów, komponentów do map (Google [...]]]></description>
			<content:encoded><![CDATA[<p>Jeśli podobał się wam <a href="http://examples.adobe.com/flex3/componentexplorer/explorer.html" target="_blank">Flex 3 Component Explorer</a> to nie możecie przejść obojętnie obok tej aplikacji! <a href="http://flex.org/tour" target="_blank">Tour de Flex</a> to aplikacja <a href="http://www.adobe.com/products/air/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe AIR"  rel="external">AIR</a> umożliwiająca przegląd:</p>
<ul>
<li>komponentów wizualnych Flexa czy AIR&#8217;a,</li>
<li>sposobów komunikacji z stroną serwerową (HTTPService, WebService czy Remoting),</li>
<li>wykorzystania różnorakich API (np.: Twitter, Ebay, Flickr, etc),</li>
<li>zewnętrznych komponentów do generowania wykresów,</li>
<li>komponentów do map (Google Maps, Yahoo Maps)</li>
<li>innych komponentów, np.: Degrafa, cała masa od zewnętrznych deweloperów</li>
</ul>
<p>Aktualnie aplikacja posiada 217 przykładów, ale dzięki temu, że posiada wbudowany system aktualizacji liczba ta będzie się prawdopodobnie szybko zwiększać <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Interfejs <a href="http://flex.org/tour" target="_blank">Tour de Flex</a> pozwala nam na podgląd źródła każdego komponentu czy przykładu oraz szybkie podejrzenie specyfikacji w <a href="http://livedocs.adobe.com/flex/3/langref/" target="_blank">Adobe Flex 3 Language Reference</a> (wyświetlanemu dzięki silnikowi WebKit w AIR). Wbudowany jest także system komentarzy.</p>
<p>Dodatkowo ekipa <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> Evangelist Team przygotowała wtyczkę do <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Buildera umożliwiającą przeglądanie przykładów prosto z poziomu Flex IDE!<br />
Instaluje się ją tak jak każdą inną wtyczkę z adresu <a href="http://tourdeflex.adobe.com/eclipse">http://tourdeflex.adobe.com/eclipse</a>. Po instalacji trzeba tylko podać ręcznie ścieżkę do pliku exe zainstalowanej wcześniej aplikacji Tour de Flex.</p>
<p align="center"><iframe width="216" height="182" frameborder=0 scrolling="no" src="http://tourdeflex.adobe.com/badge/"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2008/11/17/tour-de-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
