<?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>Alex Chiri&#039;s Blog &#187; javaee</title>
	<atom:link href="http://www.alexchiri.ro/index.php/tag/javaee/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexchiri.ro</link>
	<description>A new life</description>
	<lastBuildDate>Mon, 28 Nov 2011 09:00:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Curs scris online de EJB3</title>
		<link>http://www.alexchiri.ro/index.php/2009/10/07/curs-scris-online-de-ejb3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=curs-scris-online-de-ejb3</link>
		<comments>http://www.alexchiri.ro/index.php/2009/10/07/curs-scris-online-de-ejb3/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 07:47:46 +0000</pubDate>
		<dc:creator>Alex Chiri</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[javaee]]></category>

		<guid isPermaLink="false">http://alexchiri.wordpress.com/2009/10/07/curs-scris-online-de-ejb3/</guid>
		<description><![CDATA[În feed-urile urmărite în dimineața asta am dat de cursul ăsta de EJB3. Ce are special? Mi-a placut că este un curs practic care constă în construirea unor aplicații pornindu-se de la niște cerințe concrete. Suportul din partea autorului scade gradual în construirea aplicațiilor. Este interesant că oferă o abordare completă a soluției aplicațiilor, pornind [...]]]></description>
			<content:encoded><![CDATA[<p>În feed-urile urmărite în dimineața asta am dat de cursul <a href="http://www.java-task.com/" target="_blank">ăsta</a> de EJB3. Ce are special? Mi-a placut că este un curs practic care constă în construirea unor aplicații pornindu-se de la niște cerințe concrete. Suportul din partea autorului scade gradual în construirea aplicațiilor. Este interesant că oferă o abordare completă a soluției aplicațiilor, pornind de la diagrame UML, arhitectură și cod.</p>
<p>Este inclusă și o carte electronică gratuită, “Mastering Enterprise JavaBeans 3.0”, ca suport teoretic. Soluțiile complete (proiecte Netbeans) sunt oferite de autor. La o primă vedere, mi se pare un curs util și o abordare care te invață prin practică. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexchiri.ro/index.php/2009/10/07/curs-scris-online-de-ejb3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java EE: despre interceptori</title>
		<link>http://www.alexchiri.ro/index.php/2009/09/27/java-ee-despre-interceptori/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-ee-despre-interceptori</link>
		<comments>http://www.alexchiri.ro/index.php/2009/09/27/java-ee-despre-interceptori/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 10:34:53 +0000</pubDate>
		<dc:creator>Alex Chiri</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[interceptors]]></category>
		<category><![CDATA[javaee]]></category>

		<guid isPermaLink="false">http://alexchiri.wordpress.com/2009/09/27/java-ee-despre-interceptori/</guid>
		<description><![CDATA[Citind cartea despre care v-am vorbit într-un articol anterior, am descoperit niște clase despre care nu mai auzisem până acum: interceptorii. Prezentarea lor începe cu o scurtă introducere despre AOP, noțiune nouă pentru mine. După cum am înțeles, AOP înseamnă să “decorezi” logică refolosibilă, în general, cu diferite funcționalități, fără aduce modificări asupra logicii menționate. [...]]]></description>
			<content:encoded><![CDATA[<p>Citind cartea despre care v-am vorbit într-un <a href="http://alexchiri.ro/index.php/2009/09/22/recomandari-javaee/" target="_blank">articol anterior</a>, am descoperit niște clase despre care nu mai auzisem până acum: interceptorii.</p>
<p>Prezentarea lor începe cu o scurtă introducere despre <a href="http://alexchiri.ro/index.php/2009/09/22/recomandari-javaee/" target="_blank">AOP</a>, noțiune nouă pentru mine. După cum am înțeles, AOP înseamnă să “decorezi” logică refolosibilă, în general, cu diferite funcționalități, fără aduce modificări asupra logicii menționate. De exemplu, AOP ar putea fi transformarea ușoară a unui Session Bean într-un web service sau într-un RESTful service.</p>
<p>În Java EE “aspectele” sunt numite <a href="http://java.sun.com/mailers/techtips/enterprise/2006/TechTips_Oct06_static.html#2" target="_blank" class="broken_link">interceptori</a>. Un interceptor este o clasă cu o metodă adnotată și are controlul complet asupra execuției unei metode. Un interceptor este “atașat” unei clase cu ajutorul adnotării @Interceptors({interceptori}). Între acolade este o listă de clase de interceptori.</p>
<p>Iata un exemplu scurt de interceptor:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> InterceptorDeTest {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>     @AroundInvoke</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>     <span style="color:#0000ff;">public</span> Object interceptM(InvocationContext ic) {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>         <span style="color:#008000;">//fă ceva</span></pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>         <span style="color:#0000ff;">return</span> ic.proceed();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>Și o clasă care are atașat un interceptor:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;line-height:12pt;background-color:#f4f4f4;width:97.5%;font-family:&#39;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:20px 0 10px;padding:4px;" id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> @Stateless</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span> @Interceptors({InterceptorDeTest.<span style="color:#0000ff;">class</span>})</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> ClasaDeTest{</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>     <span style="color:#0000ff;">public</span> String helloWorld() {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>         <span style="color:#0000ff;">return</span> <span style="color:#006080;">&quot;HelloWorld!&quot;</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#39;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>În momentul în care este apelată metoda helloWorld firul execuției va trece mai întâi prin interceptor. Acesta execută prelucrările sale și apelează metoda proceed() care are ca efect trecerea la executarea codului următorului interceptor din listă, dacă există, sau a metodei interceptate (în cazul nostru, metoda helloWorld()).</p>
<p>Interceptorii pot fi folosiți pentru diferite inițializări sau validări înainte sau după execuția unei metode. În cartea lui <a href="http://www.adam-bien.com/roller/abien/" target="_blank">Adam Bien</a> e și un exemplu cu interceptori în care se pot redenumi firele de execuție a unei aplicații în funcție de metoda pe care o execută, pentru o mai bună observare într-un profiler sau într-un dump, scăpând astfel de numele random și lipsite de înțeles date firelor de execuție.</p>
<p>PS: Un articol general <a href="http://www.adam-bien.com/roller/abien/entry/interceptors_ejb_3_for_absolute" target="_blank">despre utilizarea interceptorilor</a> și cel cu <a href="http://www.adam-bien.com/roller/abien/entry/server_independent_thread_tracking_utility" target="_blank">redenumirea thread-urilor</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexchiri.ro/index.php/2009/09/27/java-ee-despre-interceptori/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

