<?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:blogger="http://schemas.google.com/blogger/2008" 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;CkQBRXkycCp7ImA9WhBbEkQ.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020</id><updated>2013-05-11T13:39:14.798-03:00</updated><category term="CXF" /><category term="JavaEE" /><category term="Twitter" /><category term="JBoss" /><category term="Microsoft" /><category term="Seguranca" /><category term="English" /><category term="Lazer" /><category term="ApacheConUS08" /><category term="Heroes" /><category term="JustJava" /><category term="Acer" /><category term="Oracle" /><category term="Java" /><category term="Oi Velox" /><category term="JavaOne" /><category term="Protesto" /><category term="Web" /><category term="CouchDB" /><category term="Tomcat" /><category term="Censura" /><category term="CQC" /><category term="Linux" /><category term="Geral" /><category term="Wicket" /><category term="JAXB" /><category term="Tutoriais" /><category term="Software" /><category term="JSF" /><category term="Camel" /><category term="Apache" /><category term="ApacheCon" /><category term="Android" /><category term="Geek Stuff" /><title>Bruno Borges - Just Blogging </title><subtitle type="html">Blog do Bruno Borges - Tudo sobre Java</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.brunoborges.com.br/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.brunoborges.com.br/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>188</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/BlogDoBrunoBorges" /><feedburner:info uri="blogdobrunoborges" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>BlogDoBrunoBorges</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;D0AESH48fip7ImA9WhBbEk0.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3912074177780328001</id><published>2013-05-10T14:08:00.000-03:00</published><updated>2013-05-10T14:08:29.076-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-10T14:08:29.076-03:00</app:edited><title>Líderes de JUG de Latinoamérica, Oracle quiere ponerse en contacto</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SoUydcSE_W0/UY0IVZYYifI/AAAAAAAAXUQ/AOQqMv3Ltsg/s1600/Hispanos+o+latinos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/-SoUydcSE_W0/UY0IVZYYifI/AAAAAAAAXUQ/AOQqMv3Ltsg/s400/Hispanos+o+latinos.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Hola &lt;b&gt;Comunidad Java de América Latina&lt;/b&gt;! Dentro de un par de meses, voy a empezar una gira por América Latina para llevar a usted las nuevas características de la plataforma &lt;b&gt;Java EE 7&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esta gira comenzará en julio en Brasil, en el &lt;a href="http://www.thedevelopersconference.com.br/"&gt;TDC - The Developers Conference&lt;/a&gt;, en São Paulo. Luego, después de eso, voy a empezar mi viaje a través de varios países. Pero para ayudar a terminar mi agenda, necesito tu ayuda!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Todo lo que necesitas hacer es compartir este artículo con alguien que usted conoce o en su red social. , y por supuesto, &lt;a href="https://docs.google.com/forms/d/1rMAZYSj42jXHu8sXeXE4vSOa-tHIYwDD-ERhE86wiNA/viewform"&gt;proporcionar la información que pido aquí&lt;/a&gt;. Esto me ayudará a ponerme en contacto con los líderes JUG locales en su país, y planear las reuniones.s.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Su ayuda es muy apreciada!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
¡Gracias!&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=j9QdvqYAm6s:zgGc4w3ZknM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=j9QdvqYAm6s:zgGc4w3ZknM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=j9QdvqYAm6s:zgGc4w3ZknM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=j9QdvqYAm6s:zgGc4w3ZknM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=j9QdvqYAm6s:zgGc4w3ZknM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/j9QdvqYAm6s" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3912074177780328001&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3912074177780328001?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3912074177780328001?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/j9QdvqYAm6s/lideres-de-jug-de-latinoamerica-oracle.html" title="Líderes de JUG de Latinoamérica, Oracle quiere ponerse en contacto" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-SoUydcSE_W0/UY0IVZYYifI/AAAAAAAAXUQ/AOQqMv3Ltsg/s72-c/Hispanos+o+latinos.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/05/lideres-de-jug-de-latinoamerica-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMERX07fyp7ImA9WhBbEEw.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-58330213311709681</id><published>2013-05-08T10:06:00.002-03:00</published><updated>2013-05-08T10:06:44.307-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-08T10:06:44.307-03:00</app:edited><title /><content type="html">&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
WebSocket is the new kid on the block when you think about Web Development these days. And it is expected that you want to integrate it with whatever is available in your hands. Java EE 7 is coming with cool things beyond this, for example JMS 2.0. And then you wonder: how can I send asynchronous messages to all WebSocket sessions connected to my website?&amp;nbsp;&lt;strong&gt;Server push; no polling: for real&lt;/strong&gt;!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
The answer is quite simple: CDI. Also know as the Java EE magic glue. CDI enables a developer to build inter-communication between, apparently, distinct parts of your application. Let's go through all the steps to enable your WebSocket application to send and receive messages through JMS.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;strong&gt;1 - Creating the WebSocket Server Endpoint&lt;/strong&gt;&lt;/h3&gt;
&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;First we need to build the WebSocket server endpoint that will receive messages from clients, and to also notify clients asynchronously with a server push, with incoming JMS message payloads:&lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC43" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Named&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC44" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@ServerEndpoint&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="s" style="border: 0px; color: #dd1144; margin: 0px; padding: 0px;"&gt;"/websocket"&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)
&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;class&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="nc" style="border: 0px; color: #445588; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;WebSocketEndpoint&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;implements&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Serializable&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{
    &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;// this object will hold all WebSocket sessions connected to this WebSocket 
    // server endpoint (per JVM)&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;
&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;    private&lt;/span&gt; &lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;static&lt;/span&gt; &lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;final&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Set&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;sessions&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;=&lt;/span&gt; 
&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;                           Collections&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;synchronizedSet&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="k" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;new&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;HashSet&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;gt;());&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Now you must also add three key methods to this WebSocket:&amp;nbsp;&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC55" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@OnOpen&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kt" style="border: 0px; color: #445588; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="nf" style="border: 0px; color: #990000; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;onOpen&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;final&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&amp;nbsp;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;sessions&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;add&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;);&lt;/span&gt; &lt;span style="font-size: 12px;"&gt;&lt;b&gt;}
&lt;/b&gt;&lt;/span&gt;&lt;span class="nd" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;@OnMessage&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kt" style="border: 0px; color: #445588; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="nf" style="border: 0px; color: #990000; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;onMessage&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;final&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;String&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;message&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;final&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;client&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&amp;nbsp;... &lt;span style="font-size: 12px;"&gt;&lt;b&gt;}
&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;@OnClose&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kt" style="border: 0px; color: #445588; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="nf" style="border: 0px; color: #990000; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;onClose&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;final&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&amp;nbsp;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;sessions&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;remove&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;session&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;);&lt;/span&gt; &lt;span style="font-size: 12px;"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: 12px; font-weight: bold;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Notice that on&amp;nbsp;&lt;b&gt;onOpen&amp;nbsp;&lt;/b&gt;and&amp;nbsp;&lt;b&gt;onClose&lt;/b&gt;, we manage all user sessions connected to this endpoint. We will see later how&lt;i&gt;sessions&lt;/i&gt;&amp;nbsp;will be used inside&amp;nbsp;&lt;b&gt;onMessage&lt;/b&gt;. For now, let's create a SessionBean to send messages to a JMS Queue.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;strong&gt;2 - Creating the SessionBean to send JMS messages&lt;/strong&gt;&lt;/h3&gt;
&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;As we cannot create JMS objects directly inside the WebSocket endpoint due to restrictions defined both in the WebSocket and JMS specifications, we must create a&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;SessionBean&lt;/b&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;&amp;nbsp;so we can forward incoming WebSocket messages to a JMS queue. Create a class named&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;QueueSenderSessionBean&lt;/b&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;&amp;nbsp;as it follows:&lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC32" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Named&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC33" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@LocalBean&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC34" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Stateless
&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;class&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="nc" style="border: 0px; color: #445588; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;QueueSenderSessionBean&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&amp;nbsp;... &lt;b style="font-size: 12px;"&gt;}&lt;/b&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
This SessionBean is @Stateless, as well part of the CDI context (@Named), and as it does not have an interface, it is a @LocalBean. Now, let's add a business method to it, called&amp;nbsp;&lt;b&gt;sendMessage&lt;/b&gt;:&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC42" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt; &lt;span class="kt" style="border: 0px; color: #445588; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt; &lt;span class="nf" style="border: 0px; color: #990000; font-weight: bold; margin: 0px; padding: 0px;"&gt;sendMessage&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;String&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;message&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{ ... &lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;}&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Quite straight-forward, isn't? One of the great things about JMS 2.0 is its simplicity to send messages to a destination. To do that, we need to inject two objects:&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC37" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Resource&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;mappedName&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;=&lt;/span&gt; &lt;span class="s" style="border: 0px; color: #dd1144; margin: 0px; padding: 0px;"&gt;"jms/myQueue"&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC38" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;private&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Queue&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;myQueue&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC39" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Inject
&lt;/span&gt;&lt;span class="kd" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;private&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;JMSContext&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;jmsContext&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
JMSContext is one of the new classes added to JMS API, and is&amp;nbsp;&lt;a href="http://jms-spec.java.net/2.0/apidocs/javax/jms/JMSContext.html" style="color: black;"&gt;documented here&lt;/a&gt;. It encapsulates a&amp;nbsp;&lt;a href="https://jms-spec.java.net/2.0/apidocs/javax/jms/Connection.html" style="color: black;"&gt;Connection&lt;/a&gt;&amp;nbsp;and a&lt;a href="https://jms-spec.java.net/2.0/apidocs/javax/jms/Session.html" style="color: black;"&gt;Session&lt;/a&gt;, and makes use of a default&amp;nbsp;&lt;a href="https://jms-spec.java.net/2.0/apidocs/javax/jms/ConnectionFactory.html" style="color: black;"&gt;ConnectionFactory&lt;/a&gt;, now a required resource to be provided by all Java EE 7 certified application servers. Next, all you need is to add the logic to the previously added method:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;  jmsContext&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;createProducer&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;().&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;send&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;myQueue&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;,&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;message&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
And you are done with the SessionBean. Next we will add some glue between the SessionBean and the WebSocket to send messages to the JMS destination.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;3 - Forwarding an incoming WebSocket message to a JMS destination&lt;/b&gt;&lt;/h3&gt;
&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;This is quite simple. All you need to do is to inject the SessionBean into your WebSocket, and call the&lt;/span&gt;&lt;b style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;sendMessage&lt;/b&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;&amp;nbsp;method inside&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;onMessage&lt;/b&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;&amp;nbsp;of your endpoint. Let's start with the injection first, but due to a bug, we must do constructor injection. Open your WebSocket server endpoint class&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;WebSocketEndpoint&lt;/b&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;, and add the following field:&lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;  private&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;QueueSenderSessionBean&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;senderBean&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Now add the following constructor to it:&lt;br /&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp; @Inject&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;nbsp; public&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="nf" style="border: 0px; color: #990000; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;WebSocketEndpoint&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;QueueSenderSessionBean&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;sb&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span class="k" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;this&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;senderBean&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;=&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;sb&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&lt;/span&gt;Next step is to simply call the method inside&amp;nbsp;&lt;b&gt;onMessage&lt;/b&gt;:&lt;br /&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt; senderBean&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;sendMessage&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;message&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
We have finished the first part of this application. With this code, you are now able to send a message from a WebSocket client, to a JMS destination. Next, we will do the opposite. Let's push some data from a JMS queue to all WebSocket clients!&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;4 - Listening to a JMS Destination with a MessageDriven Bean&lt;/b&gt;&lt;/h3&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;i&gt;Funny fact:&lt;/i&gt;&amp;nbsp;some developers have not realized yet, but the&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/6/api/javax/ejb/MessageDriven.html" style="color: black;"&gt;MessageDriven&lt;/a&gt;&amp;nbsp;annotation is not specified by the JMS API. Instead, it is part of the EJB specification, and it can be used not only for JMS, but for many other things.&amp;nbsp;&lt;a href="https://twitter.com/dblevins" style="color: black;"&gt;David Blevins&lt;/a&gt;&amp;nbsp;from the awesome&amp;nbsp;&lt;a href="http://tomee.apache.org/" style="color: black;"&gt;Apache TomEE&lt;/a&gt;&amp;nbsp;realized that, and&amp;nbsp;&lt;a href="https://java.net/jira/browse/EJB_SPEC-60" style="color: black;"&gt;proposed&lt;/a&gt;&amp;nbsp;a small change to the EJB spec, where resource adapters required connectors to provide a&amp;nbsp;&lt;i&gt;messagelistener-type&lt;/i&gt;. His proposal though, suggests that you should be able to use an MDB to listen to different things, and the listener interface should be optional. One example is to listen to&amp;nbsp;&lt;a href="https://github.com/dblevins/mdb-improvements" style="color: black;"&gt;Telnet commands&lt;/a&gt;. Pretty awesome! But let's focus on our use case here, which is specific to JMS.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Now that we can publish messages into a Queue destination from a WebSocket client, we must process them to later forward to somewhere else. Let's start coding our JMS MDB (remember, not all MDBs are implicitly JMS-related!), implementing the&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/6/api/javax/jms/MessageListener.html" style="color: black;"&gt;MessageListener&lt;/a&gt;&amp;nbsp;interface, required by JMS ResourceAdapter connectors:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp; @Named&lt;/span&gt;&lt;span class="nd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&amp;nbsp; @MessageDriven&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;mappedName&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;=&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="s" style="border: 0px; color: #dd1144; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;"jms/myQueue"&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;nbsp; public&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;class&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="nc" style="border: 0px; color: #445588; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;WebSocketMDB&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;implements&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;MessageListener&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&lt;b&gt;{&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: 12px;"&gt;&lt;b&gt;&lt;/b&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;public&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="kt" style="border: 0px; color: #445588; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="nf" style="border: 0px; color: #990000; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;onMessage&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;Message&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;msg&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{ ... }&lt;br /&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
This is the basic code to any JMS MDB. Now let's do some magic...&amp;nbsp;&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;5 - Firing CDI events with the JMS Message payload&lt;/b&gt;&lt;/h3&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Remember when I told that we cannot listen to JMS destinations directly from the WebSocket server endpoint due to specification restrictions? Well. We can actually, but using a different technique. If you haven't heard about&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/6/tutorial/doc/gkhic.html" style="color: black;"&gt;CDI Events&lt;/a&gt;, you&amp;nbsp;&lt;a href="https://netbeans.org/kb/docs/javaee/cdi-events.html" style="color: black;"&gt;should read&lt;/a&gt;&amp;nbsp;&lt;a href="https://weblogs.java.net/blog/jjviana/archive/2010/04/14/decoupling-event-producers-and-event-consumers-java-ee-6-using-cdi-a" style="color: black;"&gt;about it&lt;/a&gt;&amp;nbsp;before continuing this tutorial. Done? Ok, let's go. First thing we need is an Event qualifier. Create the&amp;nbsp;&lt;b&gt;WSJMSMessage&lt;/b&gt;&amp;nbsp;annotation inside your project:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp; @Qualifier&lt;/span&gt;&lt;span class="nd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&amp;nbsp; @Retention&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;RetentionPolicy&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;RUNTIME&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span class="nd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;&amp;nbsp; @Target&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;({&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;ElementType&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;METHOD&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;ElementType&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;FIELD&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;ElementType&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;PARAMETER&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;ElementType&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;TYPE&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;})&lt;/span&gt;&lt;span class="kd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;nbsp; public&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="nd" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;@interface&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;WSJMSMessage&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;With a defined qualifier, CDI will be able to connect the firing event with the observer object. Go back to the WebSocketMDB and add an&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/6/api/javax/enterprise/event/Event.html" style="color: black;"&gt;Event&lt;/a&gt;&amp;nbsp;dispatcher to it, with the qualifier we created above:&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC38" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Inject&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC39" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@WSJMSMessage
&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Event&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;Message&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: 12px;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; font-size: 12px; margin: 0px; padding: 0px;"&gt;jmsEvent&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;Now let's add the logic to the&amp;nbsp;&lt;b&gt;onMessage&lt;/b&gt;&amp;nbsp;method:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;jmsEvent&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;fire&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;msg&lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;6 - Listening to CDI events within the WebSocket server endpoint&lt;/b&gt;&lt;/h3&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
This is the last server-side part of this article, then next you will see how to code Javascript on the client-side. Let's listen to CDI events fired by the MDB, with the Message payload. Open again your&amp;nbsp;&lt;b&gt;WebSocketEndpoint&lt;/b&gt;&amp;nbsp;class, and add the following method to it:&lt;/div&gt;
&lt;pre style="background-color: white; border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 17.98611068725586px; padding: 0px;"&gt;&lt;div class="line" id="LC92" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&lt;span class="kd" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;    public&lt;/span&gt; &lt;span class="kt" style="border: 0px; color: #445588; font-weight: bold; margin: 0px; padding: 0px;"&gt;void&lt;/span&gt; &lt;span class="nf" style="border: 0px; color: #990000; font-weight: bold; margin: 0px; padding: 0px;"&gt;onJMSMessage&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@Observes&lt;/span&gt; &lt;span class="nd" style="border: 0px; margin: 0px; padding: 0px;"&gt;@WSJMSMessage&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Message&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;msg&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC94" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;try&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC95" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&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;span class="k" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;for&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Session&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;s&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;:&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;sessions&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC96" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&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;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;s&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;getBasicRemote&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;().&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;sendText&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="s" style="border: 0px; color: #dd1144; margin: 0px; padding: 0px;"&gt;"message from JMS: "&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;+&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;msg&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;getBody&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;String&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;class&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;));&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC97" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&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;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC98" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;}&lt;/span&gt; &lt;span class="k" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;catch&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;IOException&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;|&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;JMSException&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;ex&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;)&lt;/span&gt; &lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC99" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&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;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Logger&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;getLogger&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;WebSocketEndpoint&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;class&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;getName&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;()).&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;log&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;(&lt;/span&gt;&lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;Level&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;.&lt;/span&gt;&lt;span class="na" style="border: 0px; color: teal; margin: 0px; padding: 0px;"&gt;SEVERE&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt; &lt;span class="kc" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;null&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;,&lt;/span&gt; &lt;span class="n" style="border: 0px; margin: 0px; padding: 0px;"&gt;ex&lt;/span&gt;&lt;span class="o" style="border: 0px; font-weight: bold; margin: 0px; padding: 0px;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div class="line" id="LC100" style="border: 0px; margin: 0px; padding: 0px 0px 0px 10px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="o" style="border: 0px; margin: 0px; padding: 0px;"&gt;&lt;span style="font-weight: bold;"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 12px;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="o" style="border: 0px; font-size: 12px; font-weight: bold; margin: 0px; padding: 0px;"&gt;}&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Observe the&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/6/api/javax/enterprise/event/Observes.html" style="color: black; font-weight: bold;"&gt;@Observes&lt;/a&gt;&amp;nbsp;and the qualifier&amp;nbsp;&lt;span style="font-weight: bold;"&gt;@WSJMSMessage&lt;/span&gt;&amp;nbsp;we defined previously. This is what tells CDI to listen to the fired events by the MDB.&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;7 - Client-side Javascript to connect with the WebSocket server endpoint&lt;/b&gt;&lt;/h3&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
This has been floating around the Internet for a while as it is not Java nor Java EE specific, but anyway it is basically this:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span class="nx" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;// note the final path is the same defined inside WebSocketEndpoint class at @ServerEndpoint
websocketSession&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;=&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="k" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;new&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="nx" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;WebSocket&lt;/span&gt;&lt;span class="p" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;(&lt;/span&gt;&lt;span class="s1" style="border: 0px; color: #dd1144; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;'ws://'&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;+&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="nb" style="border: 0px; color: #0086b3; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;document&lt;/span&gt;&lt;span class="p" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;.&lt;/span&gt;&lt;span class="nx" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;location&lt;/span&gt;&lt;span class="p" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;.&lt;/span&gt;&lt;span class="nx" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;host&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="o" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-weight: bold; margin: 0px; padding: 0px; white-space: pre;"&gt;+&lt;/span&gt;&lt;span style="color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="s1" style="border: 0px; color: #dd1144; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;'/your-app-context-root/websocket'&lt;/span&gt;&lt;span class="p" style="border: 0px; color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; margin: 0px; padding: 0px; white-space: pre;"&gt;); &lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;a href="https://github.com/brunoborges/javaee7-jms-websocket-example/blob/master/src/main/webapp/myapp.js" style="color: black;"&gt;Here is the final Javascript&lt;/a&gt;&amp;nbsp;used by this example, as well&amp;nbsp;&lt;a href="https://github.com/brunoborges/javaee7-jms-websocket-example/blob/master/src/main/webapp/index.html" style="color: black;"&gt;the HTML interface&lt;/a&gt;.&lt;/div&gt;
&lt;h3 style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;/h3&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
I hope you have found this article useful to begin your development with Java EE 7, and what are the possibilities of integrating CDI, WebSockets, JMS, and EJB. These are the main points about this article:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ul style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin: 10px 0px 10px 17px; padding: 0px;"&gt;
&lt;li style="margin-left: 15px;"&gt;ability to asynchronously communicate with WebSocket clients (although you can also use&lt;b&gt;session.getAsyncRemote()&lt;/b&gt;&amp;nbsp;to send messages asynchronously)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;ability to do a server push to WebSocket clients at any point in your application&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;b&gt;ability to scale server-pushed communication to WebSocket client sessions across a cluster using JMS Topics&lt;/b&gt;&lt;br /&gt;This is perhaps one of the most interesting thing about this setup. If you use a Topic instead of a Queue, you will be able to push data to all WebSocket sessions connected to your application across a cluster. There's a know limit of roughly 64k client sessions per web server, and in this example we use a static synchronized Set to hold a reference to them. Imagine now a cluster. We change this to a Topic clustered subscriber, and we are able to scale up server pushed data :-)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;
The source code of this project is available at&amp;nbsp;&lt;a href="https://github.com/brunoborges/" style="color: black;"&gt;my GitHub&lt;/a&gt;&amp;nbsp;repository&amp;nbsp;&lt;a href="https://github.com/brunoborges/javaee7-jms-websocket-example/" style="color: black;"&gt;javaee7-jms-websocket-example&lt;/a&gt;. I hope you liked the article!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;
&lt;a href="https://blogs.oracle.com/brunoborges/entry/integrating_websockets_and_jms_with"&gt;Originally posted here&lt;/a&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=kwtuMSVUjoc:8oUyq113zXo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=kwtuMSVUjoc:8oUyq113zXo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=kwtuMSVUjoc:8oUyq113zXo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=kwtuMSVUjoc:8oUyq113zXo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=kwtuMSVUjoc:8oUyq113zXo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/kwtuMSVUjoc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=58330213311709681&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/58330213311709681?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/58330213311709681?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/kwtuMSVUjoc/websocket-is-new-kid-on-block-when-you.html" title="" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/05/websocket-is-new-kid-on-block-when-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGQX8-cCp7ImA9WhBbEEw.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-5916739009820416436</id><published>2013-05-08T09:57:00.000-03:00</published><updated>2013-05-08T10:03:40.158-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-08T10:03:40.158-03:00</app:edited><title>What's new in Java EE 7 at JUDCon Brazil 2013</title><content type="html">&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
This weekend I talked about&amp;nbsp;&lt;strong&gt;Java EE 7&lt;/strong&gt;&amp;nbsp;at&amp;nbsp;&lt;strong&gt;JUDCon Brazil 2013&lt;/strong&gt;, the session "&lt;a href="http://www.slideshare.net/brunoborges/jud-con-presentationbrazilwhatsnewjavaee7html5jms2" style="color: black;"&gt;What's new in Java EE 7? From HTML5 to JMS 2.0&lt;/a&gt;". What a great honour to be at JBoss Users and Developers Conference to share with attendees the great work that Oracle, Red Hat, and many others are doing for this platform. Room was packed, with people standing, and so much interest to hear all the cool stuff to come, such as WebSockets, JMS, JAX-RS, JSF and even more. To add some value to this talk, and as I'm a fan of Game of Thrones, I thought that a few images would fit right at this talk :-)&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px; text-align: center;"&gt;
&lt;img height="320" src="https://blogs.oracle.com/brunoborges/resource/javaee7-is-coming.png" style="border: none;" width="219" /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;img height="320" src="https://blogs.oracle.com/brunoborges/resource/3tsopd.jpg" style="border: none; text-align: start;" width="213" /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;strong&gt;Slides here!&lt;/strong&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;iframe frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/19566251" style="border-style: solid;" width="427"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 5px;"&gt;
&lt;strong&gt;&lt;a href="http://www.slideshare.net/brunoborges/jud-con-presentationbrazilwhatsnewjavaee7html5jms2" style="color: black;" target="_blank" title="What's new in Java EE 7? From HTML5 to JMS 2.0"&gt;What's new in Java EE 7? From HTML5 to JMS 2.0&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;from&amp;nbsp;&lt;strong&gt;&lt;a href="http://www.slideshare.net/brunoborges" style="color: black;" target="_blank"&gt;Bruno Borges&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 5px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 5px;"&gt;
&lt;a href="https://blogs.oracle.com/brunoborges/entry/what_s_new_in_java"&gt;Originally posted here&lt;/a&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=okDrldTklJs:ifAgKQwT8Mk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=okDrldTklJs:ifAgKQwT8Mk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=okDrldTklJs:ifAgKQwT8Mk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=okDrldTklJs:ifAgKQwT8Mk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=okDrldTklJs:ifAgKQwT8Mk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/okDrldTklJs" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=5916739009820416436&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/5916739009820416436?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/5916739009820416436?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/okDrldTklJs/whats-new-in-java-ee-7-at-judcon-brazil.html" title="What's new in Java EE 7 at JUDCon Brazil 2013" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/05/whats-new-in-java-ee-7-at-judcon-brazil.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cBQXo4cSp7ImA9WhBVGEg.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3636593380292720041</id><published>2013-04-24T23:38:00.001-03:00</published><updated>2013-04-25T00:04:10.439-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-25T00:04:10.439-03:00</app:edited><title>Coup d'état Brazil 2013: how to ruin a democracy</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-3hY8knTiVq0/UXiRqI87NKI/AAAAAAAAWto/LMg-N2Jf67M/s1600/lula-348.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-3hY8knTiVq0/UXiRqI87NKI/AAAAAAAAWto/LMg-N2Jf67M/s1600/lula-348.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
The year of 2013 will be remembered in the history of Brazil as the beginning of a Democracy Regression: a &lt;i style="font-weight: bold;"&gt;coup d'état&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Back in January, the outcome of the &lt;a href="http://en.wikipedia.org/wiki/Mensal%C3%A3o_scandal"&gt;"Mensalão" Scandal&lt;/a&gt; called attention of the media, specially &lt;i&gt;The Economist&lt;/i&gt;&amp;nbsp;with a great article titled&amp;nbsp;&lt;i&gt;&lt;a href="http://www.economist.com/news/americas/21571896-despite-serial-corruption-allegations-old-guard-just-keeps-coming-back-unstoppable"&gt;Brazil's zombie polititcans: Unstoppable?&lt;/a&gt;&lt;/i&gt;.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: #4a4a4a; font-family: Arial, sans-serif; font-size: 15.555556297302246px; line-height: 22.986112594604492px;"&gt;&lt;i&gt;"In total, a third of Brazil’s lawmakers have either been convicted or are being investigated for crimes ranging from vote-buying to theft to slave-holding."&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;
The article mentions cases where politicians like José Genoino, Francisco Tenório, Renan Calheiros, and others, even though found guilty of bribery and some under investigation of murder, replaced other congressmen who stepepd down to become mayors. In the case of Mr. Calheiros, he became the President of Senate, on February 1st. &amp;nbsp;Some of these politicians were found guilty after judged by STF (Superior Tribunal Federal - &lt;i&gt;Supreme Court&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Now today, April 24th of 2013, &lt;a href="http://pt.wikipedia.org/wiki/Jos%C3%A9_Genoino"&gt;José Genoino&lt;/a&gt; who is, ironically, a member of CCJ (Comissão de Constituição e Justiça - &lt;i&gt;Judiciary and Constitution Committee&lt;/i&gt;), has approved a constitution ammendment that&amp;nbsp;intends to submit to Congress court decisions declaring laws unconstitutional. Also it will increase the minimum votes of judges in decisions, from 6 to 9, lowering of course, the power of supreme court.&lt;br /&gt;
&lt;br /&gt;
Basically, deputies and senators who will decide, ultimately, whether or not it is worth what they themselves approved. In such cases, judges are themselves - at the expense of individual rights and guarantees of citizens, whose guarantee is Justice.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The amendment proposes more atrocities, including:&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style="border: 0px; list-style: none; margin-bottom: 10px; outline: 0px; padding: 0px;"&gt;
&lt;/div&gt;
&lt;ul style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
&lt;li&gt;Go up to four-fifths quorum for the Supreme declare a law unconstitutional.&lt;/li&gt;
&lt;li&gt;Prohibits ministers Supreme grant injunctions in an injunction to suspend - until the final judgment by the Court - the effectiveness of constitutional amendments.&lt;/li&gt;
&lt;li&gt;Determines the binding precedents of jurisprudence (edited by STF mechanism that must be followed by all instances of the judiciary on the basis of decisions adopted by repeatedly cutting - mechanism to expedite justice)) will also be submitted to the scrutiny of Congress before enter into force.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
&lt;b&gt;PT: Partido dos Trabalhadores /&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;i&gt;Workes Party&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
We must not forget PT, led by Lula (Luiz Inacio Lula da Silva), where activelly supported all politicians involved in the Mensalão Scandal, and that also suppports this ammendment. The author is also a member of PT, Congressman Nazareno Fontenele, a ghost never seen before, probably a disposable politician to be used in this move, and someone who will certainly be blamed and forgotten, for such an absurd proposal.&lt;/div&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
This is with no doubt, a House of Cards, and a tentative coup of Brazil's Democracy.&lt;/div&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;
&lt;b&gt;Referenced article - source&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: #333333; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: 14.44444465637207px; line-height: 17.98611068725586px;"&gt;Portuguese: "&lt;/span&gt;&lt;/span&gt;&lt;a href="http://veja.abril.com.br/blog/ricardo-setti/politica-cia/que-absurdo-a-camara-aprovou-hoje-um-golpe-de-estado-nada-menos-do-que-isso/"&gt;QUE ABSURDO! A Câmara aprovou hoje um golpe de Estado! Nada menos do que isso!&lt;/a&gt;"&lt;/div&gt;
&lt;div&gt;
English: "&lt;a href="http://translate.google.com/translate?sl=pt&amp;amp;tl=en&amp;amp;js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;eotf=1&amp;amp;u=http%3A%2F%2Fveja.abril.com.br%2Fblog%2Fricardo-setti%2Fpolitica-cia%2Fque-absurdo-a-camara-aprovou-hoje-um-golpe-de-estado-nada-menos-do-que-isso%2F"&gt;WHAT NONSENSE!&amp;nbsp;The House today approved a coup!No less than that!&lt;/a&gt;"&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=bGnC5yo8ik8:0n6ajd0VaXY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=bGnC5yo8ik8:0n6ajd0VaXY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=bGnC5yo8ik8:0n6ajd0VaXY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=bGnC5yo8ik8:0n6ajd0VaXY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=bGnC5yo8ik8:0n6ajd0VaXY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/bGnC5yo8ik8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3636593380292720041&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3636593380292720041?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3636593380292720041?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/bGnC5yo8ik8/coup-detat-brazil-2013-how-to-ruin.html" title="Coup d'état Brazil 2013: how to ruin a democracy" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-3hY8knTiVq0/UXiRqI87NKI/AAAAAAAAWto/LMg-N2Jf67M/s72-c/lula-348.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/04/coup-detat-brazil-2013-how-to-ruin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8MQHY6fyp7ImA9WhBVF0U.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-5147931803653214821</id><published>2013-04-24T02:54:00.002-03:00</published><updated>2013-04-24T02:54:41.817-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-24T02:54:41.817-03:00</app:edited><title>Redeploy de aplicações em produção no WebLogic</title><content type="html">&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
O WebLogic oferece uma função que permite você atualizar aplicações em ambiente de produção, com&amp;nbsp;&lt;i&gt;zero-downtime&lt;/i&gt;. Funciona assim: usuários que estão conectados na sua aplicação, continuarão conectados na versão antiga, mas quem se conectar depois do deploy da nova versão, será direcionado para o novo deploy. Assim, nenhum usuário sofrerá com um erro 404 (conteúdo inexistente), ou será prejudicado no meio de um processo (por exemplo, consultas ou relatórios). Isso permite roll-out de novas versões em horário comercial, sem necessidade de uma janela de atualização, para por exemplo, corrigir falhas no sistema que afetam somente uma parte da aplicação.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;img src="http://docs.oracle.com/cd/E24329_01/web.1211/e24443/img/prod_redeploy.gif" style="border: none;" /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
Agora para que isso seja possível, é necessário configurar o que chamamos de&amp;nbsp;&lt;b&gt;Application Version Identifier&lt;/b&gt;. Esta informação pode ser passada de duas formas:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Por linha de comando:&lt;br /&gt;&lt;pre class="oac_no_warn" style="font-size: 12px; margin-bottom: 10px; margin-top: 10px;" xml:space="preserve"&gt;java weblogic.Deployer -adminurl http://localhost:7001 -user weblogic
     -password weblogic -deploy -name myTestDeployment 
     -source /myDeployments/myApplication/91Beta
     -targets myCluster -stage &lt;span class="bold" style="font-weight: bold;"&gt;-appversion&lt;/span&gt; .91Beta&lt;/pre&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Configurado no MANIFEST.MF do pacote (EAR/WAR) da aplicação&lt;br /&gt;&lt;pre class="oac_no_warn" style="font-size: 12px; margin-bottom: 10px; margin-top: 10px;" xml:space="preserve"&gt;Manifest-Version: 1.0
     Created-By: 1.4.1_05-b01 (Sun Microsystems Inc.)
     Weblogic-Application-Version: v920.beta&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12.222222328186035px; line-height: 17.98611068725586px;"&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Apache Maven&lt;/b&gt;Se você utiliza Maven para criar o pacote da aplicação, basta configurar no plugin (war ou ear), o parâmetro do Manifest:&lt;/div&gt;
&lt;pre style="border: 0px; color: #51555c; font-size: 12px; line-height: 18px; margin-bottom: 18px; outline: 0px; overflow: auto; padding: 0px; vertical-align: baseline;"&gt;&amp;lt;plugin&amp;gt;
  &amp;lt;artifactId&amp;gt;maven-ear-plugin&amp;lt;/artifactId&amp;gt;
  &amp;lt;configuration&amp;gt;
    &amp;lt;archive&amp;gt;
      &amp;lt;manifestEntries&amp;gt;
        &amp;lt;WebLogic-Application-Version&amp;gt;${project.version}&amp;lt;/WebLogic-Application-Version&amp;gt;
      &amp;lt;/manifestEntries&amp;gt;
    &amp;lt;/archive&amp;gt;
  ...&amp;nbsp;
&amp;lt;/plugin&amp;gt;&lt;/pre&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Deu erro na versão nova? Rollback!&lt;/b&gt;Se aconteceu alguma coisa com a versão nova, é só reativar a versão antiga para que novos usuários sejam direcionados a ela. Em seguida remova a versão nova.&amp;nbsp;&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Removendo a versão antiga&lt;/b&gt;Depois de ter a versão nova no ar, o WebLogic vai monitorar as sessões ainda abertas na versão antiga. Quando todas as sessões finalizarem (via&amp;nbsp;&lt;i&gt;timeout&lt;/i&gt;), a aplicação irá para o status&amp;nbsp;&lt;i&gt;retired&lt;/i&gt;. Caso isso demore para acontecer devido a sessões longas (usuário que esqueceu o navegador aberto em uma tela com função&amp;nbsp;&lt;i&gt;auto-refresh&lt;/i&gt;), você pode forçar esta etapa pelo console administrativo.&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Se precisar de maiores informações, consulte a&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24443/redeploy.htm" style="color: black;"&gt;documentação do WebLogic 12c&lt;/a&gt;.&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;a href="https://blogs.oracle.com/brunoborges/entry/pt_br_redeploy_de_aplica%C3%A7%C3%B5es"&gt;Originalmente publicado aqui&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=3RUWobroz1U:ovMs-8B5usE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=3RUWobroz1U:ovMs-8B5usE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=3RUWobroz1U:ovMs-8B5usE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=3RUWobroz1U:ovMs-8B5usE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=3RUWobroz1U:ovMs-8B5usE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/3RUWobroz1U" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=5147931803653214821&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/5147931803653214821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/5147931803653214821?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/3RUWobroz1U/redeploy-de-aplicacoes-em-producao-no.html" title="Redeploy de aplicações em produção no WebLogic" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/04/redeploy-de-aplicacoes-em-producao-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkECSXk9eip7ImA9WhBVFkk.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-1736735474954382910</id><published>2013-04-22T11:24:00.001-03:00</published><updated>2013-04-22T11:24:28.762-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-22T11:24:28.762-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>What's new in Java EE 7 at JUDCon Brazil 2013</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;This weekend I talked about &lt;strong&gt;Java EE 7&lt;/strong&gt; at &lt;strong&gt;JUDCon Brazil 2013&lt;/strong&gt;, the session "&lt;a href='http://www.slideshare.net/brunoborges/jud-con-presentationbrazilwhatsnewjavaee7html5jms2'&gt;What's new in Java EE 7? From HTML5 to JMS 2.0&lt;/a&gt;". What a great honour to be at JBoss Users and Developers Conference to share with attendees the great work that Oracle, Red Hat, and many others are doing for this platform. Room was packed, with people standing, and so much interest to hear all the cool stuff to come, such as WebSockets, JMS, JAX-RS, JSF and even more. To add some value to this talk, and as I'm a fan of Game of Thrones, I thought that a few images would fit right at this talk :-)&lt;/p&gt;&lt;br /&gt;&lt;p style='text-align: center;'&gt;&lt;img src='https://blogs.oracle.com/brunoborges/resource/javaee7-is-coming.png'/&gt;&lt;br/&gt;&lt;br /&gt;&lt;img style='text-align: start;' src='https://blogs.oracle.com/brunoborges/resource/3tsopd.jpg'/&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Slides here!&lt;/strong&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;iframe style='border-style: solid;' scrolling='no' marginheight='0' marginwidth='0' frameborder='0' height='356' width='427' src='http://www.slideshare.net/slideshow/embed_code/19566251'&gt;&amp;lt;/span&amp;gt; border-color: #cccccc; border-width: 1px 1px 0px; margin-bottom: 5px;"&amp;gt;&lt;/iframe&gt; &lt;/p&gt;&lt;br /&gt;&lt;div style='margin-bottom: 5px;'&gt;&lt;strong&gt;&lt;a target='_blank' title='What&amp;apos;s new in Java EE 7? From HTML5 to JMS 2.0' href='http://www.slideshare.net/brunoborges/jud-con-presentationbrazilwhatsnewjavaee7html5jms2'&gt;What's new in Java EE 7? From HTML5 to JMS 2.0&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a target='_blank' href='http://www.slideshare.net/brunoborges'&gt;Bruno Borges&lt;/a&gt; &lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;via Java and everything https://blogs.oracle.com/brunoborges/entry/what_s_new_in_java&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=OMqpvIW9Bfg:iCgJxdQyd5w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=OMqpvIW9Bfg:iCgJxdQyd5w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=OMqpvIW9Bfg:iCgJxdQyd5w:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=OMqpvIW9Bfg:iCgJxdQyd5w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=OMqpvIW9Bfg:iCgJxdQyd5w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/OMqpvIW9Bfg" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=1736735474954382910&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/1736735474954382910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/1736735474954382910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/OMqpvIW9Bfg/what-new-in-java-ee-7-at-judcon-brazil.html" title="What&amp;#39;s new in Java EE 7 at JUDCon Brazil 2013" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/04/what-new-in-java-ee-7-at-judcon-brazil.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BQ3gyeyp7ImA9WhBXE08.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-8940778782861905913</id><published>2013-03-26T15:00:00.001-03:00</published><updated>2013-03-26T15:00:52.693-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-26T15:00:52.693-03:00</app:edited><title>OHS and APK files</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
In case you are trying to provide users a download link to an APK file hosted in your server, remember to add the MIME Type to your OHS (Oracle HTTP Server) configuration. The&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E23943_01/web.1111/e10144/getstart.htm#BEHEHJFC" style="color: black;"&gt;steps to add a MIME Type&lt;/a&gt;&amp;nbsp;are well documented, and all you need to do is to specify the correcty definition:&lt;/div&gt;
&lt;h5 class="sect4" style="background-color: white; color: #555555; display: inline; font-family: Tahoma, sans-serif; font-size: 15px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span class="secnum"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;(step-by-step on OHS 11g)&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;4.4.2.1.1&lt;/span&gt;&amp;nbsp;Using Fusion Middleware Control to Configure MIME Types&lt;/h5&gt;
&lt;span style="background-color: white; color: #555555; font-family: Tahoma, sans-serif; font-size: x-small; line-height: 18px;"&gt;&lt;/span&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;div style="background-color: white; color: #555555; font-family: Tahoma, sans-serif; font-size: small; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
To configure a MIME type using Fusion Middleware Control, do the following:&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Tahoma, sans-serif; font-size: small; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Select&amp;nbsp;&lt;span class="bold" style="font-weight: bold;"&gt;Administration&lt;/span&gt;&amp;nbsp;from the Oracle HTTP Server menu.&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Select&amp;nbsp;&lt;span class="bold" style="font-weight: bold;"&gt;MIME Configuration&lt;/span&gt;&amp;nbsp;from the Administration menu. The MIME configuration page appears.&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Click&amp;nbsp;&lt;span class="bold" style="font-weight: bold;"&gt;Add Row&lt;/span&gt;&amp;nbsp;in MIME Configuration region. A new, blank row is added to the list.&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Enter the MIME type. ---&amp;gt;&amp;nbsp;&lt;i style="font-family: 'Times New Roman'; font-size: medium;"&gt;application/vnd.android.package-archive&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Enter the file extension.&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Review the settings. If the settings are correct, click&amp;nbsp;&lt;span class="bold" style="font-weight: bold;"&gt;Apply&lt;/span&gt;&amp;nbsp;to apply the changes. If the settings are incorrect, or you decide to not apply the changes, click&amp;nbsp;&lt;span class="bold" style="font-weight: bold;"&gt;Revert&lt;/span&gt;&amp;nbsp;to return to the original settings.&lt;/div&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Restart Oracle HTTP Server, as described in&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E23943_01/web.1111/e10144/getstart.htm#BEHEEBHC" style="background-attachment: inherit; background-clip: inherit; background-color: inherit; background-image: inherit; background-origin: inherit; background-size: inherit; color: #72007c;"&gt;Section 4.1.4&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;APK MIME Type&lt;/b&gt;&lt;/div&gt;
&lt;blockquote style="background-color: white; border: none; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 0px 0px 0px 40px; padding: 0px;"&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;i&gt;application/vnd.android.package-archive&lt;/i&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
That's all!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Originally posted on &lt;a href="https://blogs.oracle.com/brunoborges/entry/ohs_and_apk_files"&gt;my Oracle Blog&lt;/a&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=KRKpflDybf8:je8-oFiv9_0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=KRKpflDybf8:je8-oFiv9_0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=KRKpflDybf8:je8-oFiv9_0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=KRKpflDybf8:je8-oFiv9_0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=KRKpflDybf8:je8-oFiv9_0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/KRKpflDybf8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=8940778782861905913&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8940778782861905913?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8940778782861905913?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/KRKpflDybf8/ohs-and-apk-files.html" title="OHS and APK files" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/03/ohs-and-apk-files.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8MSXg8cCp7ImA9WhBSFUg.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-6840044523653030696</id><published>2013-02-22T14:08:00.001-03:00</published><updated>2013-02-22T14:08:08.678-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-22T14:08:08.678-03:00</app:edited><title>Encontro SouJava na Oracle (JMS e Cache Distribuido)</title><content type="html">No dia 21 de Fevereiro estreamos o novo escritório da Oracle abrindo as portas para o &lt;a href="http://www.soujava.org.br/"&gt;grupo de usuários do SouJava&lt;/a&gt;. Com a presença do &lt;a href="http://www.twitter.com/brjavaman"&gt;Bruno Souza&lt;/a&gt;, &lt;a href="http://www.twitter.com/jricardoferreir"&gt;Ricardo Ferreira&lt;/a&gt;, &lt;a href="http://www.twitter.com/jedgarsilva"&gt;Edgar Silva&lt;/a&gt;, &lt;a href="http://www.twitter.com/vsenger"&gt;Vinicius Senger&lt;/a&gt;, &lt;a href="http://www.twitter.com/maltron"&gt;Mauricio Leal&lt;/a&gt; e muitos outros, tivemos a participação ao todo de 26 pessoas.&lt;br /&gt;
&lt;br /&gt;
Durante a reunião, apresentei &lt;a href="http://www.slideshare.net/brunoborges/as-novidades-do-jms-20"&gt;As Novidades do JMS 2.0&lt;/a&gt;, parte importante do Java EE 7 e que teve votação do Public Review no dia 19/02. O SouJava votou a favor, não só pela qualidade mas também pela transparência da especificação.&lt;br /&gt;
&lt;br /&gt;
A outra apresentação foi do Ricardo Ferreira, falando sobre&amp;nbsp;&lt;a href="http://www.slideshare.net/jricardoferreira/processamento-de-dados-em-memria-usando-elastic-data-grid-inmemory-computing-16699085"&gt;Processamento de Dados em Memória usando Elastic Data Grid (In-Memory Computing)&lt;/a&gt;, que demonstrou a importância do uso de cache distribuído em arquiteturas altamente escaláveis, com o &lt;a href="http://bit.ly/OraCoherence"&gt;Oracle Coherence&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
No final, os participantes conheceram o novo escritório da Oracle e ainda foram muito bem recebidos com muita pizza. &lt;a href="https://plus.google.com/events/cclpaj86g5oprsbq8u47heajugo"&gt;Confira as fotos do evento!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="270" src="http://www.youtube.com/embed/mY_3py02P3g" width="480"&gt;&lt;/iframe&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=YIsW5lP8pvQ:oBuplKTXguo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=YIsW5lP8pvQ:oBuplKTXguo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=YIsW5lP8pvQ:oBuplKTXguo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=YIsW5lP8pvQ:oBuplKTXguo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=YIsW5lP8pvQ:oBuplKTXguo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/YIsW5lP8pvQ" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=6840044523653030696&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6840044523653030696?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6840044523653030696?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/YIsW5lP8pvQ/encontro-soujava-na-oracle-jms-e-cache.html" title="Encontro SouJava na Oracle (JMS e Cache Distribuido)" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/mY_3py02P3g/default.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/02/encontro-soujava-na-oracle-jms-e-cache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEARHw7eCp7ImA9WhNaE0Q.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3821609896767805260</id><published>2013-01-28T16:10:00.002-02:00</published><updated>2013-01-28T16:10:45.200-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-28T16:10:45.200-02:00</app:edited><title>BlocoDroid Premium 2013</title><content type="html">Viu que lancei a versão &lt;a href="http://blog.brunoborges.com.br/2013/01/blocodroid-2013-carnaval-e-blocos-de-rua.html"&gt;&lt;b&gt;2013&lt;/b&gt; do &lt;b&gt;BlocoDroid&lt;/b&gt;&lt;/a&gt;? O melhor aplicativo do gênero para acompanhar os &lt;b&gt;Blocos de Rua&lt;/b&gt; do Rio de Janeiro?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Várias pessoas já adquiriram o&lt;b&gt; BlocoDroid Premium&lt;/b&gt;. Custa só &lt;b&gt;R$ 2,50&lt;/b&gt;, o preço de uma cerveja na rua. Instale o BlocoDroid, veja onde tem bloco no Rio de Janeiro com o melhor aplicativo do gênero, e ajude um amigo a ficar bêbado neste Carnaval... eu!&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/-HG28bQCVjE0/UQYSkPxX4TI/AAAAAAAATug/kJyDfzR8uMk/s1600/Screenshot_2013-01-27-21-38-26.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-HG28bQCVjE0/UQYSkPxX4TI/AAAAAAAATug/kJyDfzR8uMk/s400/Screenshot_2013-01-27-21-38-26.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="http://apps.blocosderua.com.br/android"&gt;http://apps.blocosderua.com.br/android&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=95f_m2ghz3Q:ExWz1dRqDwU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=95f_m2ghz3Q:ExWz1dRqDwU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=95f_m2ghz3Q:ExWz1dRqDwU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=95f_m2ghz3Q:ExWz1dRqDwU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=95f_m2ghz3Q:ExWz1dRqDwU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/95f_m2ghz3Q" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3821609896767805260&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3821609896767805260?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3821609896767805260?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/95f_m2ghz3Q/blocodroid-premium-2013.html" title="BlocoDroid Premium 2013" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-HG28bQCVjE0/UQYSkPxX4TI/AAAAAAAATug/kJyDfzR8uMk/s72-c/Screenshot_2013-01-27-21-38-26.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/blocodroid-premium-2013.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkENRn08fyp7ImA9WhNaE0g.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-595151349021281300</id><published>2013-01-28T04:31:00.002-02:00</published><updated>2013-01-28T04:31:37.377-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-28T04:31:37.377-02:00</app:edited><title>BlocoDroid 2013: Carnaval e Blocos de Rua</title><content type="html">&lt;a href="http://4.bp.blogspot.com/-SVAm6cz7EUQ/UQYXfgFmVsI/AAAAAAAATuw/UVjx-1GUIHk/s1600/promo_180_120.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-SVAm6cz7EUQ/UQYXfgFmVsI/AAAAAAAATuw/UVjx-1GUIHk/s1600/promo_180_120.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/-gTVggBwGhmg/UQYSltGci1I/AAAAAAAATug/w_BF8yIf6uU/s1600/Screenshot_2013-01-27-21-44-57.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;br /&gt;&lt;/a&gt;
&lt;a href="http://4.bp.blogspot.com/-gTVggBwGhmg/UQYSltGci1I/AAAAAAAATug/w_BF8yIf6uU/s1600/Screenshot_2013-01-27-21-44-57.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;br /&gt;&lt;/a&gt;
Atualizei o &lt;a href="http://apps.blocosderua.com.br/android/"&gt;&lt;b&gt;BlocoDroid&lt;/b&gt;&lt;/a&gt; para a programação oficial do &lt;b&gt;Carnaval de Rua 2013&lt;/b&gt; da Prefeitura do Rio de Janeiro. O que vocês acham? Tem forma melhor para acompanhar os &lt;b&gt;Blocos de Rua&lt;/b&gt;? :-)&lt;br /&gt;
&lt;a href="https://developer.android.com/images/brand/pt-br_generic_rgb_wo_60.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;
&lt;br /&gt;
Agora as funções mais legais são do pacote Premium. A idéia é desenvolver para 2014 um serviço completo, para mais cidades.&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Algumas screenshots&lt;/b&gt;&lt;/div&gt;
&lt;table style="border-spacing: 20px 10px; margin: 0 auto; text-align: center; text-align: center; width: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="http://1.bp.blogspot.com/-wIdsWDIDwz4/UQYSiNG6McI/AAAAAAAATug/2vHrzepBrw4/s1600/Screenshot_2013-01-27-21-37-55.png" imageanchor="1"&gt;
&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-wIdsWDIDwz4/UQYSiNG6McI/AAAAAAAATug/2vHrzepBrw4/s320/Screenshot_2013-01-27-21-37-55.png" width="192" /&gt;
&lt;/a&gt;
&lt;/td&gt;&lt;td&gt;&lt;a href="http://3.bp.blogspot.com/-yCEh3pTLxus/UQYSlrt9H2I/AAAAAAAATug/c8opC-lnH-4/s1600/Screenshot_2013-01-27-21-44-50.png" imageanchor="1"&gt;
&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-yCEh3pTLxus/UQYSlrt9H2I/AAAAAAAATug/c8opC-lnH-4/s320/Screenshot_2013-01-27-21-44-50.png" width="192" /&gt;
&lt;/a&gt;

&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="https://developer.android.com/images/brand/pt-br_generic_rgb_wo_60.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: 1em; text-align: start;"&gt;&lt;img alt="Get it on Google Play" border="0" src="https://developer.android.com/images/brand/pt-br_generic_rgb_wo_60.png" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
PS: tem pra &lt;a href="http://apps.blocosderua.com.br/iphone/"&gt;iPhone&lt;/a&gt; também :-)&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=0wout30snSI:fx82hOyRgCo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=0wout30snSI:fx82hOyRgCo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=0wout30snSI:fx82hOyRgCo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=0wout30snSI:fx82hOyRgCo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=0wout30snSI:fx82hOyRgCo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/0wout30snSI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=595151349021281300&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/595151349021281300?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/595151349021281300?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/0wout30snSI/blocodroid-2013-carnaval-e-blocos-de-rua.html" title="BlocoDroid 2013: Carnaval e Blocos de Rua" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-SVAm6cz7EUQ/UQYXfgFmVsI/AAAAAAAATuw/UVjx-1GUIHk/s72-c/promo_180_120.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/blocodroid-2013-carnaval-e-blocos-de-rua.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUCSHwyeCp7ImA9WhNUFUQ.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-6880757484036079811</id><published>2013-01-07T18:24:00.003-02:00</published><updated>2013-01-07T18:24:29.290-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-07T18:24:29.290-02:00</app:edited><title>Reasons to why I'm reconsidering JSF</title><content type="html">In December 2010, I wrote a blog post entitled "&lt;a href="http://blog.brunoborges.com.br/2010/12/top-10-reasons-why-i-dont-like-jsf.html"&gt;Top 10 reasons why I don't like JSF&lt;/a&gt;", and I would guess that 50% agreed with me, the other 50% did not. No surprise, it's like religion.&lt;br /&gt;
&lt;br /&gt;
I always liked to research products, projects, frameworks and Java technologies in general, but specially in the Web Development area. In 2001, I started coding JSP and Servlets, just a few months after I learned how to program in Java and do OOP . Did my first web application connecting to an Oracle DB with pure JDBC. Learned from the basics, on my own and succeeded.&lt;br /&gt;
&lt;br /&gt;
Later I got a new job, thanks to my experience in Web Development, but my employer was using &lt;a href="http://struts.apache.org/"&gt;Apache Struts&lt;/a&gt;. I knew about that upfront so I studied it before my interview. Got hired. Struts back then, wasn't that hard for someone already with knowledge about HTTP request/response architecture and the Servlet specification. Then came JSF 1.0. I didn't like it. Complex. Way too much. Struts was much simplier. JSF 1.1? Same thing. Small improvements only.&lt;br /&gt;
&lt;br /&gt;
So I moved to something different. In 2007, I heard about &lt;a href="http://wicket.apache.org/"&gt;Apache Wicket&lt;/a&gt;. Then I became an independent evangelist. I gave &lt;a href="http://www.slideshare.net/brunoborges/tag/wicket"&gt;several talks&lt;/a&gt; in Brazil, for years, spreading my word about Wicket, at every conference my talk was approved. I even created a community, &lt;a href="https://groups.google.com/forum/#!forum/wicket-ptbr"&gt;Wicket em Português&lt;/a&gt;, for Portuguese speakers. I also offered an &lt;a href="http://www.cursodewicket.com/"&gt;online training&lt;/a&gt; for it. I was offered a job proposal just because I knew Wicket, in Rio de Janeiro in 2010.&lt;br /&gt;
&lt;br /&gt;
Now, the reason I told you all this is to show you that I'm used to choose what works best for me, at a certain time. I do change my opinion over things. It's something like, readaptation. We all should readapt. Every time. Just to demonstrate: I was born in an island, &lt;a href="https://www.google.com/search?q=Florian%C3%B3polis&amp;amp;hl=en&amp;amp;tbo=u&amp;amp;tbm=isch&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=XtDqUNuSEYWWiAKXp4DICw&amp;amp;ved=0CEsQsAQ&amp;amp;biw=1600&amp;amp;bih=753"&gt;Florianópolis&lt;/a&gt;, then I moved to &lt;a href="https://www.google.com/search?q=S%C3%A3o+Paulo+City&amp;amp;hl=en&amp;amp;tbo=u&amp;amp;authuser=0&amp;amp;tbm=isch&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=odDqUMbVJYK4iwKCoICADg&amp;amp;ved=0CEAQsAQ&amp;amp;biw=1600&amp;amp;bih=753"&gt;São Paulo&lt;/a&gt;, later I moved to &lt;a href="https://www.google.com/search?q=Rio+de+Janeiro+City&amp;amp;hl=en&amp;amp;tbo=u&amp;amp;tbm=isch&amp;amp;source=univ&amp;amp;sa=X&amp;amp;ei=wNDqUJzsK8-02AWHjIH4Cg&amp;amp;ved=0CEAQsAQ&amp;amp;biw=1600&amp;amp;bih=753"&gt;Rio de Janeiro&lt;/a&gt;. Now I'm back to São Paulo. My accent changed, thanks both because I like to talk like others to make jokes, but also to feel like a local. By the way, I'm a &lt;a href="http://www.couchsurfing.org/profile.html?id=3KCU8WK"&gt;CouchSurfer&lt;/a&gt;. I enjoy traveling and being with, and like, locals.&lt;br /&gt;
&lt;br /&gt;
Now let's get to the real thing: &lt;b&gt;Java Server Faces 2.2&lt;/b&gt;. The version that is leading me to readaption.&lt;br /&gt;
&lt;br /&gt;
Before start, I should point that I now work at Oracle and I advocate in favor of Java EE. I'm friend of Arun Gupta, Reza Rahman, Ed Burns and several other folks who are Java EE advocates, also some who are not Oracle employees.&lt;br /&gt;
&lt;br /&gt;
When I wrote about the things I didn't like in JSF, some were technical, others were related to its ecosystem and the market. Things that change, that evolve. And they did.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Pure HTML&lt;/b&gt;&lt;br /&gt;
I talked to Ed Burns several times about the way we design pages in JSF, with tag libraries. At the first opportunity, years before joining Oracle, I told him: "Hey, why don't you make it look like Wicket?". Facelets came at some point between that day and later. Now, &lt;a href="http://weblogs.java.net/blog/edburns/archive/2012/11/01/html5-friendly-markup-jsf-22"&gt;in JSF 2.2 it's possible to define a page using pure HTML&lt;/a&gt;, letting the browser do the preview without much hassle. Something I enjoy a lot in Wicket and other frameworks. &lt;a href="http://www.slideshare.net/brunoborges/how-scala-wicket-and-java-ee-can-improve-web-development/5"&gt;Something I talked a lot at my presentations&lt;/a&gt;. So here it is, the community (represented by myself and many others), influencing change in an specification.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Implementations&lt;/b&gt;&lt;br /&gt;
I think that relying on whatever is running on your application server (Mojarra or MyFaces) is better. If you are considering JSF, you should choose a Java EE certificated app server and just use whatever comes within. Life will be much easier this way.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Creating custom components&lt;/b&gt;&lt;br /&gt;
In JSF 1.x, creating a custom component was more difficult than creating YAJWF. Now is a one-file-in-a-directory only. It's very easy to compose a custom, reusable component. &lt;a href="http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/#composite-components"&gt;This post will give you an idea&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. Documentation&lt;/b&gt;&lt;br /&gt;
I used to complain about JSF documentation (fragmentation). Apparently, documentation got a lot better. The&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/"&gt;Java EE 6&lt;/a&gt;&amp;nbsp;&lt;a href="http://docs.oracle.com/javaee/"&gt;homepage&lt;/a&gt; at Oracle offers hundreds of pages of documentation. Of course you can always look somewhere else for docs, but I would go to these first, as these are the "official" docs, much like when you go to SpringSource for Spring MVC documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5. Tooling Support&lt;/b&gt;&lt;br /&gt;
I've been playing with NetBeans for quite a while and it is a good IDE for Web development. But if you are really into HTML5, then you will like JSF inside NetBeans. The IDE now provides a feature, from &lt;b&gt;&lt;a href="http://wiki.netbeans.org/HTML5"&gt;Project Easel&lt;/a&gt;&lt;/b&gt;, that integrates with your browser and provides debugging and many other features. Good for someone doing HTML5 development with JSF 2.2 and JAX-RS. By the way, there is some work going on, &lt;a href="http://blog.ringerc.id.au/2011/03/javaserver-faces-jsf2-and-jax-rs.html?showComment=1311108525628#c7517312166220007273"&gt;according to Ed Burns&lt;/a&gt;, on integrating JSF 2.2 and JAX-RS 2.0. So let's keep an eye on that.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;6. Other new features&lt;/b&gt;&lt;br /&gt;
Some otther &lt;a href="http://jdevelopment.nl/jsf-22/"&gt;new features&lt;/a&gt; are about to come as well. Here are some&amp;nbsp;&lt;a href="http://java.net/jira/secure/IssueNavigator.jspa?mode=hide&amp;amp;requestId=11471"&gt;tickets in JIRA&lt;/a&gt; that are being prioritized, like:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Loading Facelets through ResourceLoader&lt;/li&gt;
&lt;li&gt;Ajax File Upload component&lt;/li&gt;
&lt;li&gt;Cross Site Request Forgery Protection&lt;/li&gt;
&lt;li&gt;Faces flows&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;99. Java EE advocate&lt;/b&gt;&lt;br /&gt;
I always was an advocate of the platform though never of all of its specs. And one of the reasons I took the job at Oracle as Product Manager, was because I have been working with Java EE since... ever. Not with JSF specifically I confess, not always, but I was already considering it since it turned 2.0. And facing the challenges of teaching developers to do non-Java EE development the right way, I had been thinking of adopting it fully, simply because it's easier to find skilled developers of the platform. This is a great deal for employers when their time-to-market is important.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Still... some gaps&lt;/b&gt;&lt;br /&gt;
If there's something that I still think that happens, is the compatibility between implementations. The TCK does not cover everything, because of gaps in the spec. So it's not guaranteed to say that a project running with PrimeFaces or RichFaces on top of Mojarra will run just fine if you move it to an application server running MyFaces. But this is something that can be fixed, and I'm sure it's being addressed by all parties (JSF EG, myfaces-devs and mojarra-devs).&lt;br /&gt;
&lt;br /&gt;
Also, it would be nice to see more things like server-side UI programming, as it happens with Apache Wicket. Maybe even having support for different languages? It would be nice to have the server-side UI logic in Javascript, for example. :-)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Java EE 7 and the future&lt;/b&gt;&lt;br /&gt;
Non standard frameworks are good for innovation. Some may not agree, but JCP and standards are not that slow anymore. Of course they still are if you compare to stuff like Node.js, Wicket, Liftweb, Play!, Rails and other great alternatives for web development. But look at JSF 2.2 and Java EE 7. We are about to see the new version of Java EE about the same time as HTML5 comes to a final version. In old days, it could be like having Java EE supporting HTML5 in... what? 2018? Not anymore.&lt;br /&gt;
&lt;br /&gt;
Also, if you want to use JSF with CDI, you should really consider an application server with at least Java EE Web Profile, like Apache TomEE. Oracle GlassFish and JBoss are another option if you are looking for open source solutions. The reason to choose a compliant Java EE app server is that they already offer (and test) these kinds of integrations (e.g. JSF with CDI).&lt;br /&gt;
&lt;br /&gt;
So yes, I look forward to &lt;b&gt;Java EE Platform 7.0&lt;/b&gt;, not only as an advocate, but specially as a developer. I'm seeing its value, its improvements, and its readaption to the market.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Openness to Change&lt;/b&gt;&lt;br /&gt;
Let's not forget, the &lt;a href="http://glassfish.java.net/adoptajsr/"&gt;&lt;b&gt;Adopt-a-JSR&lt;/b&gt;&lt;/a&gt; program offers the community, a great opportunity to participate, speed up, and improve even more the platform and all of its specifications. So here's your chance to ... why not, fill the gaps? :-)&lt;br /&gt;
&lt;br /&gt;
Cheers!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=dMce_Fr1raY:093LTPDaGO4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=dMce_Fr1raY:093LTPDaGO4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=dMce_Fr1raY:093LTPDaGO4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=dMce_Fr1raY:093LTPDaGO4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=dMce_Fr1raY:093LTPDaGO4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/dMce_Fr1raY" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=6880757484036079811&amp;isPopup=true" title="5 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6880757484036079811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6880757484036079811?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/dMce_Fr1raY/reasons-to-why-im-reconsidering-jsf.html" title="Reasons to why I'm reconsidering JSF" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>5</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/reasons-to-why-im-reconsidering-jsf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMARHczeSp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3661881482516837879</id><published>2013-01-04T13:30:00.005-02:00</published><updated>2013-01-04T13:30:45.981-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:30:45.981-02:00</app:edited><title>WebFX: Running JavaFX as web page</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
This weekend I wanted to learn&amp;nbsp;&lt;strong&gt;JavaFX&lt;/strong&gt;, so I decided to code an idea I had a few years ago when I first saw JavaFX Script. So I started coding a web browser that runs HTML with the awesome, HTML5 supported WebView. But this browser also offers one extra feature: it loads FXML files as if they were HTML. So instead of defining your web page with HTML and running with WebKit, you can define a web page with FXML+CSS+JS and run as a JavaFX application.&lt;br /&gt;&lt;br /&gt;The project is called&amp;nbsp;&lt;strong&gt;WebFX&lt;/strong&gt;&amp;nbsp;and already has a prototype on&amp;nbsp;&lt;a href="https://github.com/brunoborges/webfx" style="color: black;"&gt;GitHub&lt;/a&gt;. I also uploaded a video on&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=5yatMypNrTA" style="color: black;"&gt;YouTube&lt;/a&gt;demonstrating the idea.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="480" src="http://www.youtube.com/embed/5yatMypNrTA?rel=0" width="640"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
What do you think about using JavaFX in the future for web pages, instead of HTML?&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/webfx_running_javafx_as_web&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=EWwsvZOBXLI:uXPwjV67pcc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=EWwsvZOBXLI:uXPwjV67pcc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=EWwsvZOBXLI:uXPwjV67pcc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=EWwsvZOBXLI:uXPwjV67pcc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=EWwsvZOBXLI:uXPwjV67pcc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/EWwsvZOBXLI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3661881482516837879&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3661881482516837879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3661881482516837879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/EWwsvZOBXLI/webfx-running-javafx-as-web-page.html" title="WebFX: Running JavaFX as web page" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/5yatMypNrTA/default.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/webfx-running-javafx-as-web-page.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMESH07eyp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-8216786452408873719</id><published>2013-01-04T13:30:00.001-02:00</published><updated>2013-01-04T13:30:09.303-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:30:09.303-02:00</app:edited><title>7 reasons you had to be at JavaOne Latin America 2012</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Yesterday was 12/12/12, and everybody went crazy on&amp;nbsp;&lt;a href="https://twitter.com/search/realtime?q=12%2F12%2F12" style="color: black;"&gt;Twitter&lt;/a&gt;&amp;nbsp;with cool memes like&amp;nbsp;&lt;a href="https://twitter.com/MMAELITEBRAND/status/279035331293110272" style="color: black;"&gt;this one&lt;/a&gt;. And maybe you are now wondering why I mentioned 7 (seven) on the blog title. Because I want to play numbers? Yes! Today is 7 days after JavaOne Latin America 2012 is over (... and I had to figure out an excuse for taking so long to blog about it...).&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; text-align: center;"&gt;
&lt;img src="https://blogs.oracle.com/reza/resource/glassfish_logo_brazil_flag.png" style="border: none;" /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
So unless you were at JavaOne Latin America this year, here are 7 things you missed:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;OTN Lounge mini-theatre&lt;/strong&gt;&lt;br /&gt;There was a mini-theatre holding several lightning talks. We had people from&amp;nbsp;&lt;strong&gt;SouJava JUG, GoJava JUG, Globalcode,&amp;nbsp;&lt;/strong&gt;and several other Java gurus and companies running demos, talks, and even more. For example,&amp;nbsp;&lt;a href="http://twitter.com/drspockbr" style="color: black;"&gt;@drspockbr&lt;/a&gt;&amp;nbsp;&lt;a href="https://twitter.com/drspockbr/status/276396637339938816" style="color: black;"&gt;talked about&lt;/a&gt;&amp;nbsp;the&amp;nbsp;&lt;a href="http://netbeans.org/kb/samples/scrum-toys.html" style="color: black;"&gt;ScrumToys&lt;/a&gt;&amp;nbsp;project, that demonstrates the power of JSF.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/A9b5HQ7CAAAnI_x.jpg" style="border: none;" /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Hands On Lab for JAX-RS and WebSockets&lt;/strong&gt;&lt;br /&gt;One of the cool things to do during JavaOne is to come to these Hands On labs and really do something using new technologies with the help of experts. This one in particular, was covered by me, Arun Gupta, and Reza Rahman. The HOL had more people than laptops (and we had 48 laptops!) interested on understanding and learning about the new stuff that is coming within&amp;nbsp;&lt;strong&gt;Java EE 7&lt;/strong&gt;. Things like JAX-RS, Server-sent Events and WebSockets. Hey,&amp;nbsp;if you want to try this HOL by yourself, it is&amp;nbsp;&lt;a href="https://github.com/jersey/hol-sse-websocket" style="color: black;"&gt;available on Github&lt;/a&gt;, so go for it! If you have questions, just let me know!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/rUo0LDVI9qcY6RsK5yQJctMTjNZETYmyPJy0liipFm0?feat=embedwebsite" style="color: black;"&gt;&lt;img height="300" src="https://lh3.googleusercontent.com/-kVJ3jrzRaDk/UMIUbIGMrjI/AAAAAAAAR_8/NwzoYJQ60J8/s400/IMG_20121206_111723.jpg" style="border: none;" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Java Community Keynote&lt;/strong&gt;This keynote presented a lot of cool things like startups using Java in their projects, the Duke Awards, SouJava winning the JCP Outstanding Award, the&amp;nbsp;&lt;a href="https://twitter.com/cesarnogCPS/status/277240926722744320" style="color: black;"&gt;Java Band&lt;/a&gt;, and even more! It was really a space where the Java community could present what they are doing and what they want to do. There's a lot of interest on the&amp;nbsp;&lt;a href="http://java.net/projects/adoptajsr/pages/Home" style="color: black;"&gt;Adopt-a-JSR&lt;/a&gt;&amp;nbsp;program and the&amp;nbsp;&lt;a href="http://java.net/projects/adoptopenjdk/" style="color: black;"&gt;Adopt-OpenJDK&lt;/a&gt;. There's also an&amp;nbsp;&lt;a href="http://glassfish.java.net/adoptajsr/" style="color: black;"&gt;Adopt-a-JavaEE-JSR&lt;/a&gt;program! Take a look if you want to participate and&amp;nbsp;&lt;strong&gt;Make the Future Java&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/steveonjava/8264511189/" style="color: black;" title="DSC_1572.JPG by steveonjava, on Flickr"&gt;&lt;img alt="DSC_1572.JPG" height="333" src="https://farm9.staticflickr.com/8351/8264511189_0dc42a942b.jpg" style="border: none;" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Java EE (JMS, JAX-RS) sessions from&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;Reza Rahman, the HeavyMetal guy&lt;/strong&gt;&lt;br /&gt;Reza is a well know professional and Java EE enthusiast from the communitty who just joined Oracle this year. His sessions were very well attended, perhaps because of a high interest on the new things coming to&amp;nbsp;&lt;strong&gt;Java EE 7&lt;/strong&gt;&amp;nbsp;like&amp;nbsp;&lt;a href="http://www.slideshare.net/reza_rahman/whats-new-in-java-message-service-2" style="color: black;"&gt;JMS 2.0&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://www.slideshare.net/reza_rahman/jaxrs2" style="color: black;"&gt;JAX-RS 2.0&lt;/a&gt;. If you want to look at what he did at this JavaOne edition,&amp;nbsp;&lt;a href="https://blogs.oracle.com/reza/entry/javaone_latin_america_2012_trip" style="color: black;"&gt;read his blog post&lt;/a&gt;. By the way, if you like Java and heavymetal, you should&amp;nbsp;&lt;a href="https://twitter.com/reza_rahman" style="color: black;"&gt;follow him&lt;/a&gt;&amp;nbsp;on Twitter as well! :-)&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Java EE (WebSockets, HTML5) sessions from Arun Gupta, the GlassFish guy&lt;/strong&gt;&lt;br /&gt;If you don't know Arun Gupta, no worries. You will have time to know about him while you read his&amp;nbsp;&lt;a href="http://shop.oreilly.com/product/0636920026464.do" style="color: black;"&gt;Java EE 6 Pocket Guide&lt;/a&gt;. Arun has been evangelizing Java EE for a long time, and is now spreading his word about the new upcoming version Java EE 7. He gave one talk about&amp;nbsp;&lt;a href="http://www.slideshare.net/arungupta1/the-java-ee-7-platform-productivity-html5-at-javaone-latin-america-2012" style="color: black;"&gt;HTML5 Productivity on the Java EE 7 platform&lt;/a&gt;, and another one on&amp;nbsp;&lt;a href="http://www.slideshare.net/arungupta1/building-html5-websocket-apps-in-java" style="color: black;"&gt;building web apps with WebSockets&lt;/a&gt;. Pretty neat! Arun blogged about JavaOne Latin America as well.&amp;nbsp;&lt;a href="https://blogs.oracle.com/arungupta/entry/javaone_latin_america_2012_is" style="color: black;"&gt;Read it here&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Java Embedded and JavaFX&lt;/strong&gt;&lt;br /&gt;If there are two things that are really trending in the Java World right now besides Java EE 7, certainly they are&amp;nbsp;&lt;b&gt;JavaFX&lt;/b&gt;&amp;nbsp;and&amp;nbsp;&lt;b&gt;Java Embedded&lt;/b&gt;. There were 14 talks covering Java Embedded, from Java Cards to Raspberry.pi, from Java ME to Java on your TV with Ginga-J. The&amp;nbsp;&lt;em&gt;Internet of Things&lt;/em&gt;&amp;nbsp;is becoming true, and Java is the only platform today that can connect it all in an standardized and concise way. JavaFX gained a lot of attention too. There were 8 sessions covering what the platform has to offer in terms of Rich User Experience. The JavaFX Scene Builder is an awesome tool to start playing designing an UI, and coding for JavaFX is like coding Swing with 8 hands, one holding your coffee cup. You can achieve a lot, with your two hands (unless, you really have 8 hands, then you can achieve 4 times more :-). If you want to read more about JavaFX, go to&amp;nbsp;&lt;a href="https://blogs.oracle.com/brunoborges/javafx.steveonjava.com/javaone-latin-america-wrap-up/" style="color: black;"&gt;Stephen Chin's blog post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/steveonjava/8264453629/" style="color: black;" title="DSC_1533.JPG by steveonjava, on Flickr"&gt;&lt;img alt="DSC_1533.JPG" height="333" src="https://farm9.staticflickr.com/8495/8264453629_06a90844f9.jpg" style="border: none;" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;GlassFish and Friends Party, 1st edition at JavaOne Lating America&lt;/strong&gt;&lt;br /&gt;This is probably the thing that I'm most proud. We brought to Brasil the tradition&amp;nbsp;of holding a happy hour for all GlassFish, Java EE friends. This party started almost 7 years ago in San Francisco, and it was about time to bring it to Brazil! The party happened on Tuesday night, right after JavaOne General Keynote, at the Tribeca Pub. We had about 80 attendees and met a lot of&amp;nbsp;&lt;strong&gt;Java EE&lt;/strong&gt;&amp;nbsp;developers there! People from JUGs, Oracle, Locaweb and Red Hat showed up too, including some execs from Oracle that didn't resist and could not miss a party like this one.&lt;br /&gt;&lt;br /&gt;Lots of caipirinhas, beer and food to everyone, some cool music... even&amp;nbsp;&lt;a href="https://www.facebook.com/the.fish.00" style="color: black;"&gt;The Fish&lt;/a&gt;&amp;nbsp;walking around the party with&amp;nbsp;&lt;a href="https://twitter.com/thejavafinch" style="color: black;"&gt;Juggy&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/742VPLRE_6yMOjOpck22PNMTjNZETYmyPJy0liipFm0?feat=embedwebsite" style="color: black;"&gt;&lt;img height="255" src="https://lh5.googleusercontent.com/-FOahzma7sSU/UMY1m01rqVI/AAAAAAAASMk/RZccZ_jo6z0/s400/IMG_1609.JPG" style="border: none;" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see more&amp;nbsp;&lt;a href="https://plus.google.com/112626245189993000679/posts/HEzHzqWxk8t" style="color: black;"&gt;photos from the party&lt;/a&gt;&amp;nbsp;on an album I shared with the recently created&amp;nbsp;&lt;strong&gt;&lt;a href="https://plus.google.com/communities/109358639593044445029/stream/bd5ef488-d173-4632-8e7f-6bde2ec89943" style="color: black;"&gt;GlassFish Brasil&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;community on Google+&amp;nbsp;&lt;a href="https://plus.google.com/112626245189993000679/posts/HEzHzqWxk8t" style="color: black;"&gt;here&lt;/a&gt;&amp;nbsp;(but you may be more interested in joining the&amp;nbsp;&lt;a href="https://plus.google.com/communities/106098646151660933759?banner=pwa" style="color: black;"&gt;GlassFish english community&lt;/a&gt;). There's also more pictures that Arun took and&amp;nbsp;&lt;a href="https://plus.google.com/photos/101195212405190467512/albums/5820375439092700961?banner=pwa" style="color: black;"&gt;shared on this link&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white;"&gt;
&lt;div style="color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
So now you may want to consider coming to Brazil next year! Java EE 7 is on its way, and Brazil is happily and patiently waiting for it, with a lot of enthusiasm.&lt;/div&gt;
&lt;div style="color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
By the way,&amp;nbsp;&lt;a href="https://blogs.oracle.com/theaquarium/entry/happy_birthday_java_ee_6" style="color: black;"&gt;GlassFish and Java EE 6 just celebrated a Happy Birthday&lt;/a&gt;!&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/7_reasons_you_had_to&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=QN0wkkGniT8:3eB4uEwRee8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=QN0wkkGniT8:3eB4uEwRee8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=QN0wkkGniT8:3eB4uEwRee8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=QN0wkkGniT8:3eB4uEwRee8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=QN0wkkGniT8:3eB4uEwRee8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/QN0wkkGniT8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=8216786452408873719&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8216786452408873719?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8216786452408873719?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/QN0wkkGniT8/7-reasons-you-had-to-be-at-javaone.html" title="7 reasons you had to be at JavaOne Latin America 2012" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-kVJ3jrzRaDk/UMIUbIGMrjI/AAAAAAAAR_8/NwzoYJQ60J8/s72-c/IMG_20121206_111723.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/7-reasons-you-had-to-be-at-javaone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQDRHwzfip7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3387311833125697170</id><published>2013-01-04T13:29:00.004-02:00</published><updated>2013-01-04T13:29:35.286-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:29:35.286-02:00</app:edited><title>GlassFish and Friends Party, 1st Edition at JavaOne Brasil</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; text-align: center;"&gt;
&lt;img src="https://blogs.oracle.com/brunoborges/resource/Glassfish_logo-brazil-v4-small.jpg" style="border: none;" /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Estamos muito contentes em anunciar que iremos realizar a primeira edição da tradicional &amp;nbsp;&lt;a href="https://blogs.oracle.com/roller-ui/authoring/glassfish-party12-br.eventbrite.com" style="color: black;"&gt;GlassFish and Friends Party neste JavaOne in Brasil&lt;/a&gt;. &lt;br /&gt;O problema é que os ingressos já esgotaram!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Então decidimos realizar um concurso para dar mais 5 ingressos para a comunidade! Aqui estão as regras:&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Escreva um post no seu blog sobre o&amp;nbsp;&lt;a href="http://www.glassfish.org/" style="color: black;"&gt;GlassFish&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&amp;nbsp;Poste no Twitter o título e o link do seu post com a hashtag #GlassFish para que possamos saber do seu post&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Os 5 melhores posts serão selecionados e anunciados aqui no dia 3 de Dezembro às 19:00 (GMT-3)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Selecionaremos um post de cada autor&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Cada autor receberá um ingresso para a festa&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Agora corre para a sua plataforma de blog e escreva sobre o&amp;nbsp;&lt;b&gt;GlassFish&lt;/b&gt;!&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
------------- en_US ---------------&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
We are very happy to announce that we are going to host the first edition of the traditional&amp;nbsp;&lt;a href="https://blogs.oracle.com/brunoborges/glassfish-party12-br.eventbrite.com" style="color: black;"&gt;GlassFish and Friends Party at this JavaOne in Brasil&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
The problem is: tickets are already SOLD OUT!&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;So we decided to run a simple contest to give away 5 more tickets to the community!&lt;/b&gt;&amp;nbsp;&lt;b&gt;Here are the rules:&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Blog about&amp;nbsp;&lt;a href="http://www.glassfish.org/" style="color: black;"&gt;GlassFish&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Tweet the title and link of your blog post with the hashtag #GlassFish so we can know about your blog post&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;The best 5 blog posts will be selected and announced here on December 3th at 7pm (GMT-3)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;We will select one blog post per author&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Each author will get one ticket&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;
Now run to your blog platform and write about&amp;nbsp;&lt;b&gt;GlassFish!&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;&lt;b&gt;https://blogs.oracle.com/brunoborges/entry/glassfish_and_friends_party_1st&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Wfz2zCoU9qw:aJNyyBwNoUM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Wfz2zCoU9qw:aJNyyBwNoUM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Wfz2zCoU9qw:aJNyyBwNoUM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Wfz2zCoU9qw:aJNyyBwNoUM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=Wfz2zCoU9qw:aJNyyBwNoUM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/Wfz2zCoU9qw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3387311833125697170&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3387311833125697170?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3387311833125697170?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/Wfz2zCoU9qw/glassfish-and-friends-party-1st-edition.html" title="GlassFish and Friends Party, 1st Edition at JavaOne Brasil" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/glassfish-and-friends-party-1st-edition.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQARXg7cSp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-7601784209496758212</id><published>2013-01-04T13:29:00.001-02:00</published><updated>2013-01-04T13:29:04.609-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:29:04.609-02:00</app:edited><title>First steps with Oracle ADF Mobile for iOS and Android</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;Oracle&lt;/b&gt;&amp;nbsp;&lt;a href="http://www.oracle.com/us/corporate/press/1866754" style="color: black;"&gt;announced recently&lt;/a&gt;&amp;nbsp;its new Mobile development platform, called&amp;nbsp;&lt;strong&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/adf/overview/adf-mobile-096323.html" style="color: black;"&gt;Oracle ADF Mobile&lt;/a&gt;&lt;/strong&gt;. With it, you can build truly Java applications, deploy and run real Java code on both&amp;nbsp;&lt;strong&gt;Android&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;iOS&lt;/strong&gt;&amp;nbsp;with its self-contained Java runtime.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; text-align: center;"&gt;
&lt;img src="http://www.oracle.com/technetwork/developer-tools/adf/html5-java-ios-android-1864261.png" style="border: none;" /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
It also comes with&amp;nbsp;&lt;i&gt;PhoneGap&lt;/i&gt;. which allows you to use any feature your phone offers, like sensors and camera. It's probably the most complete solution for mobile development out there, simply because with&amp;nbsp;&lt;strong&gt;Oracle ADF Mobile&lt;/strong&gt;, you can write&amp;nbsp;&lt;em&gt;Native&lt;/em&gt;,&amp;nbsp;&lt;em&gt;Hybrid&lt;/em&gt;&amp;nbsp;or&amp;nbsp;&lt;em&gt;Web&lt;/em&gt;&amp;nbsp;applications for your smartphone and tablet.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Do you want to take a quick look on what can be done with it?&amp;nbsp;&lt;a href="http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/adfmobiledemo/adfmobiledemo.html" style="color: black;"&gt;Check out this video&lt;/a&gt;!&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Now, to start with&amp;nbsp;&lt;strong&gt;Oracle ADF Mobile&lt;/strong&gt;, here are the first steps you will have to go through.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Download Oracle JDeveloper&lt;/strong&gt;&lt;br /&gt;Go to&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html" style="color: black;"&gt;this link&lt;/a&gt;&amp;nbsp;and download the install file for your environment (Windows, Linux-32bit or Generic)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Install JDeveloper (of course)&lt;/strong&gt;&lt;br /&gt;If you need help on this, look at the&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html" style="color: black;"&gt;documentation&lt;/a&gt;&amp;nbsp;(if you've downloaded 11gR2,&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E35521_01/install.111230/e17074/ojdig.htm#BDCJDDFE" style="color: black;"&gt;click here&lt;/a&gt;)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Download Oracle ADF Mobile Bundle&lt;/strong&gt;&lt;br /&gt;This is the&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/developer-tools/adf/downloads/index.html#mobile" style="color: black;"&gt;download page&lt;/a&gt;&amp;nbsp;for Oracle ADF Mobile. Accept the license as usual at the top, and follow with the Download button. It will take you to another page, where you will see a table containing a download link. Click on it and it will start downloading a ZIP file.&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Start JDeveloper&lt;/strong&gt;&lt;br /&gt;Start Oracle JDev. It may self update. Restart the IDE if you are asked to.&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Go to Help &amp;gt; Check for updates&lt;/strong&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Click Next and make sure you are at the "Source" tab&lt;/strong&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Select "Install From Local File"&lt;/strong&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Select the Oracle ADF Mobile ZIP you downloaded on step 3&lt;/strong&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;strong&gt;Finish the process&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Now you have JDeveloper with Oracle ADF Mobile sucessfully installed!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
There are two great tutorials to start coding with ADF Mobile. Just choose your platform!&lt;/div&gt;
&lt;ul style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px; padding: 0px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;a href="http://docs.oracle.com/cd/E18941_01/tutorials/MobileTutorial/jdtut_11r2_54_2.html" style="color: black;"&gt;Android Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;a href="http://docs.oracle.com/cd/E18941_01/tutorials/MobileTutorial/jdtut_11r2_54_1.html" style="color: black;"&gt;iOS Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
And have fun! :-)&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/first_steps_with_oracle_adf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=c45a962EBJ0:12AvWoRTqi8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=c45a962EBJ0:12AvWoRTqi8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=c45a962EBJ0:12AvWoRTqi8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=c45a962EBJ0:12AvWoRTqi8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=c45a962EBJ0:12AvWoRTqi8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/c45a962EBJ0" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=7601784209496758212&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/7601784209496758212?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/7601784209496758212?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/c45a962EBJ0/first-steps-with-oracle-adf-mobile-for.html" title="First steps with Oracle ADF Mobile for iOS and Android" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/first-steps-with-oracle-adf-mobile-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGRX04fyp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3947041689703588710</id><published>2013-01-04T13:28:00.002-02:00</published><updated>2013-01-04T13:28:44.337-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:28:44.337-02:00</app:edited><title>Using Coherence API to get POF bytes</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Someone raised the question on how to use the&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E26853_01/coh.371/e22843/index.html" style="color: black;"&gt;Coherence API&lt;/a&gt;&amp;nbsp;to get the bytes of an object in POF (&lt;a href="http://docs.oracle.com/cd/E24290_01/coh.371/e22837/api_pof.htm" style="color: black;"&gt;Portable Object Format&lt;/a&gt;) programatically. So I came up with this small code that shows the very cool API simple usage :-)&lt;/div&gt;
&lt;pre style="background-color: white; color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt; &amp;nbsp; SimplePofContext spc = new SimplePofContext();
&amp;nbsp;&amp;nbsp; spc.registerUserType(0, User.class, new UserSerializer());&amp;nbsp;
 &amp;nbsp; // consider UserSerializer as an implementation of &lt;a href="http://docs.oracle.com/cd/E26853_01/coh.371/e22843/com/tangosol/io/pof/PofSerializer.html" style="color: black;" target="" title=""&gt;PofSerializer&lt;/a&gt;
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; User u = new User();
&amp;nbsp;&amp;nbsp; u.setId(21);
&amp;nbsp;&amp;nbsp; u.setName("Some Name");
&amp;nbsp;&amp;nbsp; u.setEmail("some.name@domain.com");
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; ByteArrayOutputStream baos = new ByteArrayOutputStream();
&amp;nbsp;&amp;nbsp; DataOutput dataOutput = new DataOutputStream(baos);
&amp;nbsp;&amp;nbsp; BufferOutput bufferOutput = new WrapperBufferOutput(dataOutput);
&amp;nbsp;&amp;nbsp; spc.serialize(bufferOutput, u);
    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; byte[] byteArray = baos.toByteArray();
&amp;nbsp;&amp;nbsp; System.out.println(Arrays.toString(byteArray));&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;Easy, isn't?&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
It can be easier with this line:&amp;nbsp;&lt;span style="background-color: #ededed;"&gt;ExternalizableHelper.toByteArray(Object, PofContext)&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/coherence_pof_for_raw_byte&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=TYBzRPnFl2s:DpqsJRZbqh8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=TYBzRPnFl2s:DpqsJRZbqh8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=TYBzRPnFl2s:DpqsJRZbqh8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=TYBzRPnFl2s:DpqsJRZbqh8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=TYBzRPnFl2s:DpqsJRZbqh8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/TYBzRPnFl2s" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3947041689703588710&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3947041689703588710?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3947041689703588710?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/TYBzRPnFl2s/using-coherence-api-to-get-pof-bytes.html" title="Using Coherence API to get POF bytes" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/using-coherence-api-to-get-pof-bytes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUCQn09eCp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-8444199508385335337</id><published>2013-01-04T13:27:00.004-02:00</published><updated>2013-01-04T13:27:43.360-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:27:43.360-02:00</app:edited><title>JavaOne 2012: Camel, Twitter, Coherence, Wicket and GlassFish</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Before joining Oracle as Product Manager for WebLogic and GlassFish for Latin America, at the beggining of this year I proposed two talks to JavaOne USA that I had been presenting in Brazil for quite a while.&amp;nbsp;&lt;a href="http://na11.apachecon.com/talks/24008" style="color: black;"&gt;One of them&lt;/a&gt;&amp;nbsp;I presented last year at ApacheCon in Vancouver, Canada as well in JavaOne Brazil. In June I got the news that they were accepted as Alternate Sessions. Surprisingly enough, few weeks later and at the same time I joined Oracle, I received the news that they were officially accepted and put on schedule.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Tomorrow I'll be flying to San Francisco, to my first JavaOne in the United States, and I wanted to share with you what I'm going to present there.&lt;br /&gt;My two sessions are these ones:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Wed, 10/03, 4:30pm -&amp;nbsp;&lt;a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=2989" style="color: black;"&gt;CON2989 Leverage Enterprise Integration Patterns with Apache Camel and Twitter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On this one, you will be introducted to the&amp;nbsp;&lt;a href="http://camel.apache.org/" style="color: black;"&gt;Apache Camel&lt;/a&gt;&amp;nbsp;framework that I had been talking about in Brazil at conferences, before joining&amp;nbsp;&lt;a href="http://www.oracle.com/" style="color: black;"&gt;Oracle&lt;/a&gt;, and to a&amp;nbsp;&lt;a href="http://camel.apache.org/twitter.html" style="color: black;"&gt;component&lt;/a&gt;&amp;nbsp;I contributed to integrate with&amp;nbsp;&lt;a href="http://www.twitter.com/" style="color: black;"&gt;Twitter&lt;/a&gt;. Also, you will have a preview of a new component I've been working on to integrate Camel with the&lt;a href="http://www.oracle.com/technetwork/middleware/coherence/overview/index.html" style="color: black;"&gt;Oracle Coherence distributed cache&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Thu, 10/04, 3:30pm -&amp;nbsp;&lt;a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=3395" style="color: black;"&gt;CON3395 How Scala, Wicket, and Java EE Can Improve Web Development&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This one I've been working on for quite a while. It was based on an idea to have an architecture that could be as agile as frameworks and technologies such as Ruby on Rails, PHP or Python, for rapid&amp;nbsp;web development. You will be introduced to the&amp;nbsp;&lt;a href="http://wicket.apache.org/" style="color: black;"&gt;Apache Wicket&lt;/a&gt;&amp;nbsp;framework, another Apache project I enjoy working with and gave lots of talks at Brazilian conferences, including JavaOne Brazil, JustJava, QCon SP, and The Developers Conference. You will also be introduced to the&amp;nbsp;&lt;a href="http://www.scala-lang.org/" style="color: black;"&gt;Scala&lt;/a&gt;&amp;nbsp;language and how to create nice DSLs to boost productiveness. And last but not least, the Java EE 6 platform, that offers an awesome improvement from previous versions with its CDI, JPA, EJB3 and JAX-RS features for web development.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Other events I will be participating during my stay in SF:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;a href="http://sfgeekbikeride.eventbrite.com/" style="color: black;"&gt;Geeks Bike Ride&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;a href="http://glassfish-event12.eventbrite.com/" style="color: black;"&gt;GlassFish Community Event&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&lt;a href="http://glassfish-party12.eventbrite.com/" style="color: black;"&gt;GlassFish and Friends Party&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
If you have any other event to suggest, please do suggest! It's my first JavaOne and I'm really looking forward to enjoying everything.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
See you guys in a few days!!&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/javaone_2012_camel_twitter_coherence&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=WQyvYMsiBY0:ly9BHBuZZwY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=WQyvYMsiBY0:ly9BHBuZZwY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=WQyvYMsiBY0:ly9BHBuZZwY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=WQyvYMsiBY0:ly9BHBuZZwY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=WQyvYMsiBY0:ly9BHBuZZwY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/WQyvYMsiBY0" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=8444199508385335337&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8444199508385335337?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8444199508385335337?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/WQyvYMsiBY0/javaone-2012-camel-twitter-coherence.html" title="JavaOne 2012: Camel, Twitter, Coherence, Wicket and GlassFish" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/javaone-2012-camel-twitter-coherence.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUAQ38_fyp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-2305794804909659555</id><published>2013-01-04T13:27:00.002-02:00</published><updated>2013-01-04T13:27:22.147-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:27:22.147-02:00</app:edited><title>WebLogic Application Server: free for developers!</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Great news! Oracle WebLogic Server is now free for developers! What does this mean for you? That you as a developer are permited to:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;i&gt;"[...]&amp;nbsp;deploy the programs only on your single developer desktop computer (of any type, including physical, virtual or remote virtual), to be used and accessed by only (1) named developer."&lt;/i&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
But the most interesting part of the license change is this one:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;i&gt;"You may continue to develop, test, prototype and demonstrate your application with the programs under this license after you have deployed the application for any internal data processing, commercial or production purposes" (&lt;b&gt;Read the&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/licenses/wls-dev-license-1703567.html" style="color: black;"&gt;full license agreement here&lt;/a&gt;&lt;/b&gt;)&lt;/i&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
If you want to take advantage of this licensing change and start developing Java EE applications with the #1 Application Server in the world, read now the previous post,&amp;nbsp;&lt;b&gt;&lt;a href="https://blogs.oracle.com/brunoborges/entry/how_to_install_weblogic_12c" style="color: black;"&gt;How To Install WebLogic Zip on Linux!&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/weblogic_server_free_for_developers&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=7qiMe9FKJGM:Yvs-pNnOq1I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=7qiMe9FKJGM:Yvs-pNnOq1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=7qiMe9FKJGM:Yvs-pNnOq1I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=7qiMe9FKJGM:Yvs-pNnOq1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=7qiMe9FKJGM:Yvs-pNnOq1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/7qiMe9FKJGM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=2305794804909659555&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/2305794804909659555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/2305794804909659555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/7qiMe9FKJGM/weblogic-application-server-free-for.html" title="WebLogic Application Server: free for developers!" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/weblogic-application-server-free-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUFSHg7eip7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-6945100127838244559</id><published>2013-01-04T13:26:00.005-02:00</published><updated>2013-01-04T13:26:59.602-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:26:59.602-02:00</app:edited><title>How to Install WebLogic 12c ZIP on Linux</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
I knew that&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html" style="color: black;"&gt;&lt;b&gt;WebLogic&lt;/b&gt;&lt;/a&gt;&amp;nbsp;had this small&amp;nbsp;&lt;b&gt;ZIP distribution&lt;/b&gt;, of only&amp;nbsp;&lt;b&gt;184M&lt;/b&gt;, but what I didn't know was that it is so easy to install it on&amp;nbsp;&lt;b&gt;Linux&lt;/b&gt;&amp;nbsp;machines, specially for development purposes, that I thought I had to blog about it.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
You may want to check&amp;nbsp;&lt;a href="http://blog.whitehorses.nl/2011/12/10/running-weblogic-12c-as-it-is-meant-to-be-in-the-cloud/" style="color: black;"&gt;this blog&lt;/a&gt;, where I found the missing part on this how to, but I'm blogging this again because I wanted to put it in a simpler way, straight to the point. And if you are looking for a how to for Mac, check&amp;nbsp;&lt;a href="https://blogs.oracle.com/arungupta/entry/get_started_with_oracle_weblogic" style="color: black;"&gt;Arun Gupta's post&lt;/a&gt;.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;So, here's the step-by-step:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
1 - Download the&amp;nbsp;&lt;a href="http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html" style="color: black;"&gt;ZIP distribution&lt;/a&gt;&amp;nbsp;(don't worry if your system is x86_64)&lt;br /&gt;&lt;em&gt;&lt;span style="font-size: x-small;"&gt;Don't forget to accept the&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.blogger.com/blogger.g?blogID=9203187650123315020" style="color: black; font-size: small;"&gt;OTN Free Developer License Agreement&lt;/a&gt;!&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
2 - Choose where to install your WebLogic server and your domain, and set as your MW_HOME environment variable&lt;br /&gt;&lt;em&gt;I will use&amp;nbsp;&lt;strong&gt;/opt/middleware/weblogic&lt;/strong&gt;&amp;nbsp;for this how to&lt;/em&gt;&lt;/div&gt;
&lt;pre style="background-color: white; color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;em&gt;export MW_HOME=/opt/middleware/weblogic&lt;/em&gt;&lt;/pre&gt;
&lt;em style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;Make sure this path exists in your system. 'mydomains' will be used to keep your WebLogic domain.&lt;/em&gt;&lt;span style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;pre style="background-color: white; color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;em&gt;mkdir -p $MW_HOME/mydomain&lt;/em&gt;&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
3 - If you don't have your&amp;nbsp;&lt;em&gt;JAVA_HOME&lt;/em&gt;&amp;nbsp;environment variable still configured, do it. Point it to where your JDK is installed.&lt;/div&gt;
&lt;pre style="background-color: white; color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;em&gt;export&amp;nbsp;JAVA_HOME=/usr/lib/jvm/default-java&lt;/em&gt;&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
4 - Unzip the downloaded file into&amp;nbsp;&lt;em&gt;MW_HOME&lt;/em&gt;&lt;/div&gt;
&lt;pre style="background-color: white; color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;em&gt;unzip wls1211_dev.zip -d $MW_HOME&lt;/em&gt;&lt;/pre&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
5 - Go to that directory and run&amp;nbsp;&lt;em&gt;configure.sh&lt;/em&gt;&lt;/div&gt;
&lt;pre style="background-color: white; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;em style="color: #555555; font-size: 12px; line-height: 18px;"&gt;cd $MW_HOME
&lt;/em&gt;&lt;em style="color: #555555; font-size: 12px; line-height: 18px;"&gt;./configure.sh&lt;/em&gt;&lt;span style="color: #555555;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;6 - Call the setEnvs.sh script&lt;/span&gt;&lt;/div&gt;
&lt;pre style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;&lt;i&gt;. $MW_HOME/wlserver/server/bin/setWLSEnv.sh&lt;/i&gt;&lt;/pre&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: 'Times New Roman';" xinhaeditingpostion="xinhaeditingpostion"&gt;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;7 - Create your development domain. It will ask you for username and password. I like to use&amp;nbsp;&lt;i&gt;weblogic / welcome1&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;i&gt;cd $MW_HOME/mydomain
$JAVA_HOME/bin/java $JAVA_OPTIONS -Xmx1024m \
-Dweblogic.management.allowPasswordEcho=true weblogic.Server&lt;/i&gt;&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;8 - Start WebLogic and access its web console&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
(sh startWebLogic.sh &amp;amp;); sleep 10; firefox http://localhost:7001/console&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;Usually, it takes only 10 seconds to start a domain, and 5 more to deploy the Administration Console (on my laptop). :-)&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #555555; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: 'Times New Roman'; white-space: normal;"&gt;Enjoy!&lt;/span&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Times New Roman;"&gt;&lt;span style="font-size: 12px; line-height: 18px; white-space: normal;"&gt;https://blogs.oracle.com/brunoborges/entry/how_to_install_weblogic_12c&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=5zyR6iqIUOM:KqZhO3FgVD4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=5zyR6iqIUOM:KqZhO3FgVD4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=5zyR6iqIUOM:KqZhO3FgVD4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=5zyR6iqIUOM:KqZhO3FgVD4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=5zyR6iqIUOM:KqZhO3FgVD4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/5zyR6iqIUOM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=6945100127838244559&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6945100127838244559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6945100127838244559?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/5zyR6iqIUOM/how-to-install-weblogic-12c-zip-on-linux.html" title="How to Install WebLogic 12c ZIP on Linux" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/how-to-install-weblogic-12c-zip-on-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYMRX08fip7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-8352675194429683473</id><published>2013-01-04T13:26:00.001-02:00</published><updated>2013-01-04T13:26:24.376-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:26:24.376-02:00</app:edited><title>WebLogic 12c Overview - OTN Tour 2012</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
I had the pleasure to be part of the OTN Tour 2012 Latin America, that is going on right now (August 2012) and to know some folks from Oracle HQ, but more importantly, to present architects, administrators, DBAs and software developers a little bit of Oracle WebLogic 12c and its great integrations with other Oracle products, specially Oracle RAC with its Active GridLink, Coherence Data Grid and of course, Oracle Exalogic.&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
If you couldn't come to the OTN Tour in Buenos Aires and Montevideo, don't worry. The slides are right here! :-)&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/13937608" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/brunoborges/introducing-weblogic-12c-otn-tour-2012" title="Introducing WebLogic 12c OTN Tour 2012" target="_blank"&gt;Introducing WebLogic 12c OTN Tour 2012&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/brunoborges" target="_blank"&gt;Bruno Borges&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=yXe7Rbxe9tw:TWlEoK8wmmY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=yXe7Rbxe9tw:TWlEoK8wmmY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=yXe7Rbxe9tw:TWlEoK8wmmY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=yXe7Rbxe9tw:TWlEoK8wmmY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=yXe7Rbxe9tw:TWlEoK8wmmY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/yXe7Rbxe9tw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=8352675194429683473&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8352675194429683473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/8352675194429683473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/yXe7Rbxe9tw/weblogic-12c-overview-otn-tour-2012.html" title="WebLogic 12c Overview - OTN Tour 2012" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/weblogic-12c-overview-otn-tour-2012.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYHRHgzfCp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-6567324973575009715</id><published>2013-01-04T13:25:00.002-02:00</published><updated>2013-01-04T13:25:35.684-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:25:35.684-02:00</app:edited><title>Issue dev'ing RESTful JSON services on NetBeans</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Here is a tricky issue that you may find if you are developing RESTful services with Java EE on NetBeans and GlassFish or WebLogic.&amp;nbsp;If you want to support the JSON format but need to access some implementation classes like @JsonIgnore, you need to add the JAX-RS RI, Jersey, to your project's Libraries definition. How to add the RI? You will probably do this:&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Open project's Properties (right click on the project)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Go to Libraries&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Click on 'Add Library'&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Select 'Jersey 1.8 (JAX-RS RI)&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
But you won't have your service running fine. You may find these exceptions:&amp;nbsp;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;(added here so Google can help future users)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
1 - If you try to access your RESTful service to get a JSON format of it, you will get this exception:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: courier new, courier, monospace; font-size: x-small;"&gt;com.sun.jersey.spi.inject.Errors$ErrorMessagesException&lt;br /&gt;&amp;nbsp; at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)&lt;br /&gt;&amp;nbsp; at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)&lt;br /&gt;at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
2 - If you try to access your RESTful service to get an XML format, you will get this exception:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: courier new, courier, monospace; font-size: x-small;"&gt;java.lang.RuntimeException: javax.naming.NameNotFoundException: Unable to resolve 'com.sun.jersey.config.CDIExtension'. Resolved 'com.sun.jersey.config'; remaining name 'CDIExtension'&lt;br /&gt;&amp;nbsp; at com.sun.jersey.server.impl.cdi.CDIExtension.getInitializedExtension(CDIExtension.java:177)&lt;br /&gt;&amp;nbsp; at com.sun.jersey.server.impl.cdi.CDIComponentProviderFactory.(CDIComponentProviderFactory.java:92)&lt;br /&gt;&amp;nbsp; at com.sun.jersey.server.impl.cdi.CDIComponentProviderFactoryInitializer.initialize(CDIComponentProviderFactoryInitializer.java:75)&lt;br /&gt;&amp;nbsp; at com.sun.jersey.spi.container.servlet.WebComponent.configure(WebComponent.java:576)&lt;br /&gt;&amp;nbsp; at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.configure(ServletContainer.java:311)&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;If you look at your server's log, (in my case, I was using WebLogic 12c) you may find this message somewhere:&lt;/div&gt;
&lt;blockquote style="background-color: white; border: none; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 0px 0px 0px 40px; padding: 0px;"&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="font-family: courier new, courier, monospace;"&gt;WARNING:&lt;br /&gt;**********&lt;br /&gt;The application is using ServletContainerInitializer class com.sun.jersey.server.impl.container.servlet.JerseyServletContainerInitializer that is loaded from:file:/labs/wls1211/modules/com.sun.jersey.server_1.1.0.0_1-9.jar. This initializer overrides the one available in the system.&lt;br /&gt;**********&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
When you added Jersey to your library, the "package" checkbox was checked by default. So the JAR ended up going into WEB-INF/lib of your project, conflicting to the already provided by the container.&amp;nbsp;&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;b&gt;So, how to fix this issue?&amp;nbsp;&lt;/b&gt;Follow these steps:&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Open project's Properties (right click on the project)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Go to Libraries&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Uncheck the checkbox 'Package' for&amp;nbsp;Jersey 1.8 (JAX-RS RI)&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Click on 'OK'&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;&amp;nbsp;Clean &amp;amp; Build (right click on the project) ---&amp;gt;&amp;nbsp;&lt;b&gt;remember to clean and rebuild your project&lt;/b&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;(re)Deploy application&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white;"&gt;
&lt;div style="color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Done! :_)&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;span style="color: #555555; font-family: Arial, Verdana, sans-serif;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;https://blogs.oracle.com/brunoborges/entry/issue_dev_ing_restful_json&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=glgRaM5xEGA:e3HoeMpumzs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=glgRaM5xEGA:e3HoeMpumzs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=glgRaM5xEGA:e3HoeMpumzs:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=glgRaM5xEGA:e3HoeMpumzs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=glgRaM5xEGA:e3HoeMpumzs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/glgRaM5xEGA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=6567324973575009715&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6567324973575009715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/6567324973575009715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/glgRaM5xEGA/issue-deving-restful-json-services-on.html" title="Issue dev'ing RESTful JSON services on NetBeans" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/issue-deving-restful-json-services-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcNSHY-cCp7ImA9WhNUE0w.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3878981548413017840</id><published>2013-01-04T13:24:00.003-02:00</published><updated>2013-01-04T13:24:59.858-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:24:59.858-02:00</app:edited><title>Enable WebLogic 12c FastSwap with NetBeans</title><content type="html">&lt;br /&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
Hey everyone, this is my first post, and although I have been working at Oracle since July 2nd, I wanted it to have valuable information, not just a "Hey look, I joined Oracle". So this is it, welcome to my blog!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&amp;nbsp;How to enable WebLogic 12c FastSwap when developing Java EE applications with NetBeans?&amp;nbsp;Very simple!&lt;/div&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin-bottom: 10px; margin-top: 10px;"&gt;
&lt;/div&gt;
&lt;ol style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px; margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;Open the file&amp;nbsp;&lt;i&gt;WEB-INF/weblogic.xml&lt;/i&gt;&amp;nbsp;&lt;/li&gt;
&lt;ol style="margin: 10px 0px 10px 17px;"&gt;
&lt;li style="margin-left: 15px;"&gt;If your application is an EAR, open&amp;nbsp;&lt;i&gt;weblogic-application.xml&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li style="margin-left: 15px;"&gt;Enable FastSwap&lt;br /&gt;&lt;pre class="examplecode" style="background-color: #fff8e4; font-family: 'Courier New', monospace; margin-bottom: 10px; margin-top: 10px; overflow: auto; padding: 10px; width: 680px;"&gt;&amp;lt;fast-swap&amp;gt;
    &amp;lt;enabled&amp;gt;&lt;strong&gt;true&lt;/strong&gt;&amp;lt;/enabled&amp;gt;
&amp;lt;/fast-swap&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Now open the&amp;nbsp;&lt;b&gt;Properties&lt;/b&gt;&amp;nbsp;dialog for your project&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Navigate to&amp;nbsp;&lt;b&gt;Run&lt;/b&gt;&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Disable the checkbox "&lt;i&gt;Deploy on Save&lt;/i&gt;"&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Close the Properties dialog&lt;/li&gt;
&lt;li style="margin-left: 15px;"&gt;Re-deploy your application&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="background-color: white; color: #555555; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 18px;"&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Done! Now give it a try. Modify some Java code and refresh the web page that access that code. Remember you don't need to re-deploy your application anymore. NetBeans already deploys it as exploded WAR/EAR. Faster than the re-deploy feature!&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Also, FastSwap is a feature that is built-in to WebLogic 12c and there's no need to install anything.&amp;nbsp;For more information about FastSwap, follow&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E24329_01/web.1211/e24443/deployunits.htm#i1054385" style="color: black;"&gt;this link&lt;/a&gt;&amp;nbsp;(for WebLogic 12.1.1).&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Was this a valuable information for you? Sure it was for me :-)&amp;nbsp;&lt;/div&gt;
&lt;div style="margin-bottom: 10px; margin-top: 10px;"&gt;
Originally from&amp;nbsp;https://blogs.oracle.com/brunoborges/entry/enable_weblogic_12c_fastswap_with&lt;/div&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Hz5HIfhAVm8:om8e6xeMQF4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Hz5HIfhAVm8:om8e6xeMQF4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Hz5HIfhAVm8:om8e6xeMQF4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=Hz5HIfhAVm8:om8e6xeMQF4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=Hz5HIfhAVm8:om8e6xeMQF4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/Hz5HIfhAVm8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3878981548413017840&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3878981548413017840?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3878981548413017840?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/Hz5HIfhAVm8/enable-weblogic-12c-fastswap-with.html" title="Enable WebLogic 12c FastSwap with NetBeans" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2013/01/enable-weblogic-12c-fastswap-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAAQXY_eSp7ImA9WhJaGUs.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-9013373305321594520</id><published>2012-10-08T03:00:00.001-03:00</published><updated>2012-10-11T12:02:20.841-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-11T12:02:20.841-03:00</app:edited><title>TAM Linhas Aereas nao entende Fuso Horario</title><content type="html">&lt;br /&gt;
&lt;b&gt;Carta enviada ao Presidente da TAM Linhas Aereas a poucos minutos...&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;San Francisco, CA - 7 de Outubro de 2012 &amp;nbsp;as 22:53&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Ao Presidente,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Sou Bruno Cesar Borges, cliente TAM JJ 2543****, localizado atualmente em San Francisco, CA, e fiz uma compra de passagem aerea hoje (cod reserva: 3PW***), por volta de 10:00 AM no fuso horario de San Francisco (GMT-7). Apos aproximadamente 10 horas, fiz meu primeiro contato com a central, as 21:42 (GMT-7). Por estar nos Estados Unidos, nao tenho acesso ao SAC (0800-123-200), e por isso, entrei em contato com a Central de Vendas no numero +55 (11) 4002-5700.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Informei a atendente de que queria cancelar e extornar minha compra, segundo o que consta no Artigo 49 do Codifo de Defesa do Consumidor. A atendente disse que somente seria possivel atender minha solicitacao, se eu tivesse ligado para a central no mesmo dia.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Entendo que estou no mesmo dia que fiz a compra, dia 7 de Outubro de 2012, e portanto tenho direito ao o que a atendente afirmou ser pratica da compania. Porem ela afirmou que nao importa o horario em que estou, ou o fuso horario. O que importa segundo ela, eh o horario de Brasilia (GMT-3). Afirmei que estava em SF, e ateh exemplifiquei que, se estivesse no &lt;a href="http://pt.wikipedia.org/wiki/Acre"&gt;Acre&lt;/a&gt; e tivesse feito a compra as 22:59 e em seguida ligado para desistir da compra, eu como um suposto acreano, seria prejudicado pela politica da empresa.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Tambem quero questionar sobre o direito de cancelamento de compras de produtos ou servicos, segundo consta o Artigo 49 do Codigo de Defesa do Consumidor. A atendente afirmou que por nao constar no contrato da compania area TAM Linhas Aereas, este direito nao existe.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Entendo, como cidadao brasileiro, a superioridade do CDC frente a qualquer contrato de relacao entre empresa e consumidor, principalmente nos casos onde o contrato eh imposto e nao ha a possibilidade de negociar clausulas.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Conto com a sua colaboracao para esclarecer este assunto, e espero assim que os comentarios publicados na rede social Twitter abaixo, possam ser rapidamente excluidos:&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;- &lt;a href="https://twitter.com/brunoborges/status/255170375355351040"&gt;https://twitter.com/brunoborges/status/255170375355351040&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;- &lt;a href="https://twitter.com/brunoborges/status/255170586492403713"&gt;https://twitter.com/brunoborges/status/255170586492403713&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;- &lt;a href="https://twitter.com/brunoborges/status/255171046066515969"&gt;https://twitter.com/brunoborges/status/255171046066515969&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;- &lt;a href="https://twitter.com/brunoborges/status/255177579269607425"&gt;https://twitter.com/brunoborges/status/255177579269607425&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;- &lt;a href="https://twitter.com/brunoborges/status/255179286087077888"&gt;https://twitter.com/brunoborges/status/255179286087077888&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Att.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Bruno Borges&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Talvez voce nao tenha reparado, mas quem mora no Acre, fizer uma compra as 22:59, e decidir em seguida cancelar a compra, para a TAM, este cancelamento nao eh possivel, pois ela agora esta em outro dia. Fora novamente, o fato de eles ignorarem, e nao respeitarem o Art 49 do CDC.&lt;br /&gt;
&lt;br /&gt;
@TAMAirlines #EPIC #FAIL&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;*** UPDATE *** 10/10/2012 15:05 ***&lt;/b&gt;&lt;br /&gt;
A TAM respondeu com o seguinte texto:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;FALE-45922861&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;São Paulo, outubro de 2012.&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;i&gt;Prezado Sr. Bruno,&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;
&lt;i&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Tomamos conhecimento de seus comentários publicados no Twitter referente ao reembolso do bilhete 957 2456 412322.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Compreendemos sua solicitação de isenção da taxa cobrada para reembolso de seu bilhete, mas infelizmente não poderemos atendê-lo.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;É importante informar que a taxa administrativa cobrada pelo reembolso de bilhetes é uma condição do tipo de tarifa adquirida. O cliente deve ter ciência de todas as condições da tarifa escolhida ao comprar o bilhete. A taxa administrativa somente não é cobrada quando o cancelamento for involuntário por parte do Cliente.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Ressaltamos que o direito de arrependimento previsto no artigo 49 do Código de Defesa do Consumidor não se aplica no caso de compra de passagens aéreas feitas pela internet ou Call Center, uma vez que o Cliente recebe todas as informações necessárias, como data, horário, trecho e número do voo.&lt;/b&gt;&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Desta forma, a taxa administrativa cobrada pela empresa aérea, que varia de acordo com a base tarifária do bilhete, deve ser verificada no momento da solicitação de reembolso.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;De acordo com a ANAC (Agência Nacional de Aviação Civil), o prazo máximo para reembolso deve ser de 30 dias a contar da data da solicitação. Apenas quando a forma de pagamento for cartão de crédito, esse prazo pode ser maior em razão dos procedimentos internos das administradoras de cartões para o lançamento do valor na fatura do Cliente.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Contamos com sua compreensão e queremos que saiba que permanecemos, como sempre, à disposição para conhecer suas opiniões.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Atenciosamente,&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Ouvidoria Fale com o Presidente&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;TAM Linhas Aéreas S/A&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;TAM, vou te contar duas histórias:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;1) Certa vez, comprei uma TV de 40", com controle-remoto e tudo certo, do jeito que eu queria. Eu sabia exatamente como a TV era. Mesmo assim, 2 dias depois de comprar a TV, eu cancelei a compra (usando-me do direito do Art. 49 do CDC), pois preferi comprar sabe o que? Uma TV maior! &lt;b&gt;Maior!&lt;/b&gt;&amp;nbsp;Paguei mais caro! O site ficou feliz. Aceitou o cancelamento, e em troca, vendeu um produto que custava ainda mais caro.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Eu queria cancelar o bilhete, para comprar outro, em outra data/horario! Mesmo que o valor fosse superior, eu iria fazer a compra, por que eu &lt;u&gt;gostava&lt;/u&gt;&amp;nbsp;de voces.&amp;nbsp;Mas vocês rejeitaram meu pedido!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
2) Eu liguei para vocês aproximadamente 10 horas depois de ter feito a compra. Que regra estúpida é essa de considerar que 1 dia pode ter de 1 a 23 horas? Vivemos em um mundo online, digital, e vocês sendo uma compania aérea, sabem mais do que ninguém, como funcionam os fusos horários! A tal política de &lt;b&gt;"Aceitamos cancelamentos se o pedido for feito no mesmo dia da compra"&lt;/b&gt;&amp;nbsp;é &lt;b style="text-decoration: underline;"&gt;ridícula!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Vocês estão prejudicando quem mora no &lt;a href="http://pt.wikipedia.org/wiki/Acre"&gt;Acre&lt;/a&gt;! Que bela forma de tratar seus clientes! Dando tratamento preferencial somente para quem está no mesmo fuso horário de vocês!!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Se eu estivesse na Europa, talvez teria tido mais chance... Que belo sistema o de vocês! :-(&lt;br /&gt;
&lt;br /&gt;
#TAM #Mega #Fail&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;*** UPDATE 10/10/2012 15:54 ***&lt;/b&gt;&lt;br /&gt;
Reclamacão registrada no &lt;b&gt;Reclame Aqui:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;a href="http://www.reclameaqui.com.br/3690867/tam-linhas-aereas/tam-linhas-aereas-ignora-diferenca-de-fuso-horario-e-ignora/"&gt;http://www.reclameaqui.com.br/3690867/tam-linhas-aereas/tam-linhas-aereas-ignora-diferenca-de-fuso-horario-e-ignora/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;*** UPDATE 10/10/2012 16:45 ***&lt;/b&gt;&lt;br /&gt;
Aparentemente, a TAM estipula prazos em formatos diferentes para cada caso. Neste por exemplo, um passageiro pergunta um prazo para algo chamado "AVIH", e a TAM diz que é de no mínimo 24 horas. Não é "&lt;b&gt;1 dia&lt;/b&gt;" e provavelmente, não tem problema de fuso horário.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://twitter.com/TAMAirlines/status/255772305937027072"&gt;https://twitter.com/TAMAirlines/status/255772305937027072&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;*** UPDATE 11/10/2012 11:54 ***&lt;/b&gt;&lt;br /&gt;
A TAM respondeu novamente, desta vez com um tom diferente. Parece que o desrespeito ao Art. 49 do CDC é ocasionado por dificuldades técnicas deles. Hhhmmm... Ei, TAM, &lt;b&gt;non est mea culpa&lt;/b&gt;! O problema é seu, risco do negócio. A propósito, esse seu sistema é meio faminto: se eu pagar a multa indevida, o seu sistema cancela e estorna minha compra sem nenhuma dificuldade técnica. Bizzaaaaarro...&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;FALE-45971801&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;São Paulo, outubro de 2012.&amp;nbsp;&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Prezado Sr. Bruno,&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Tomamos conhecimento de seu e-mail enviado ao site Reclame Aqui relatando o fato ocorrido quando da emissão de seu bilhete de número 957 2456 412322.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Gostaríamos de informar que o nosso site indica a necessidade de conferir todos os dados do bilhete antes da finalização da transação, oferecendo a opção de cancelamento antes da efetivação de sua compra. &lt;b&gt;Além disso, o e-ticket é gerado num sistema que está atrelado a reserva, check-in, faturamento e cartão de crédito sendo que todas as operações são coordenadas. Por questões de segurança, as operações não podem ser revertidas após a efetivação da compra.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Dessa forma, a solução disponível é a solicitação de reembolso, que será feita no seu cartão de crédito mediante pagamento de uma taxa administrativa calculada de acordo com a tarifa ou o comparecimento a uma loja TAM para efetuar a reemissão do bilhete mediante o pagamento da taxa de remarcação e/ou o pagamento da diferença tarifária, caso não haja mais vagas na mesma classe tarifária.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Sendo assim, esperamos contar com a sua compreensão referente a impossibilidade em atender o seu pedido de isenção da taxa de reembolso.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Queremos que saiba que permanecemos, como sempre, à disposição para conhecer suas opiniões.&lt;/span&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;br style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;" /&gt;&lt;span style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Atenciosamente,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=lZPHrjo2RpI:sT-j1uA0Dyc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=lZPHrjo2RpI:sT-j1uA0Dyc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=lZPHrjo2RpI:sT-j1uA0Dyc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=lZPHrjo2RpI:sT-j1uA0Dyc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=lZPHrjo2RpI:sT-j1uA0Dyc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/lZPHrjo2RpI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=9013373305321594520&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/9013373305321594520?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/9013373305321594520?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/lZPHrjo2RpI/tam-linhas-aereas-nao-entende-fuso.html" title="TAM Linhas Aereas nao entende Fuso Horario" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2012/10/tam-linhas-aereas-nao-entende-fuso.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEGQXs8eyp7ImA9WhJbFU0.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-3750925629261027016</id><published>2012-09-24T13:55:00.000-03:00</published><updated>2012-09-24T14:27:00.573-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-24T14:27:00.573-03:00</app:edited><title>Dropbox locked me out</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://www.dropbox.com/static/images/dropbox_logo_home.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://www.dropbox.com/static/images/dropbox_logo_home.png" /&gt;&lt;/a&gt;&lt;/div&gt;
I know &lt;a href="http://www.dropbox.com/"&gt;&lt;b&gt;Dropbox&lt;/b&gt;&lt;/a&gt; had a few &lt;a href="http://arstechnica.com/security/2012/07/dropbox-confirms-it-got-hacked-will-offer-two-factor-authentication/"&gt;security issues&lt;/a&gt; recently, that required them to add an&amp;nbsp;&lt;a href="https://blog.dropbox.com/index.php/another-layer-of-security-for-your-dropbox-account/"&gt;extra security layer&lt;/a&gt;, like the 2-step verification. And that's great! But not allowing its users to, somehow, recover their account access is a little bit, frustrating. All started when I bought a new phone (Samsung Galaxy S3) at the same time that I was changing between carriers (so, different phone number).&lt;br /&gt;
&lt;br /&gt;
Thing is, I missed the opportunity to log in to my Dropbox account to change my phone number, before ending the contract with the previous carrier. And that got me into a weird situation.&lt;br /&gt;
&lt;br /&gt;
Right before ending the carrier contract, I turned on my SGS3, logged in with my Google account and with my Dropbox account, and got 50GB of extra space thanks to Samsung and its partnership with Dropbox. &lt;b&gt;Important note: I still have access to my Dropbox account on my SGS3 throught Dropbox's own Android application&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
So I still had the 2-step verification code on my old phone. But after loading lots and lots of apps to the SGS3, and with Dropbox connected, functional and so on, I decided it was OK to Data Factory reset that old phone. Shame on me: I forgot to save that 2svc.&lt;br /&gt;
&lt;br /&gt;
So I emailed Dropbox explaining this, and then I got this reply:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;strong style="background-color: white; color: #222222; font-family: Arial; font-size: 12px;"&gt;Matthew B. - Dropbox Support, Sep 17 03:09 pm (PDT):&lt;/strong&gt;Hi Bruno,&lt;br /&gt;
Thanks for contacting the Dropbox Support! I'd be happy to help you out.&lt;br /&gt;
If you can, please try to login to the website through a computer that you have already logged in since you enabled 2FA. This way you can head to the settings and disable 2FA, and then re-enable it.&lt;br /&gt;
If you are unable to log in under any machine, please let me know!&lt;br /&gt;
Best,&lt;br /&gt;
Matthew&lt;/blockquote&gt;
&lt;span style="background-color: white; color: #222222; font-family: Arial; font-size: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="background-color: white; color: #222222; font-family: Arial; font-size: 12px;"&gt;
So I replied to him saying that &lt;b&gt;no, I do not have access to my Dropbox account from any computer.&lt;/b&gt;&amp;nbsp;Why? Cookies expire, you know? And Dropbox is not the kind of service that we access that often. This time, a new support guy replied this:&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;strong&gt;Kevin - Dropbox Support, Sep 19 12:20 am (PDT):&lt;/strong&gt;Hi Bruno,&lt;br /&gt;
Unfortunately, for security purposes, if you can't enter the two-step code, and you failed to store the emergency backup code, we have no way to help you regain access to your Dropbox account.&lt;br /&gt;
If you still have access to a computer with your Dropbox files on it, you can transfer your files to your new account by unlinking and relinking your Dropbox desktop application to your new account.&lt;br /&gt;
For detailed instructions on how to do this, visit&lt;a href="https://www.dropbox.com/help/25" style="color: #1155cc;" target="_blank"&gt;https://www.dropbox.com/help/&lt;wbr&gt;&lt;/wbr&gt;25&lt;/a&gt;Please let me know if there is anything else I can do for you.&lt;br /&gt;
Best,&lt;br /&gt;
Kevin&lt;/blockquote&gt;
Ok, let me put this straight:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;I don't have access to my Dropbox from a desktop&lt;/li&gt;
&lt;li&gt;I &lt;b&gt;do have&lt;/b&gt;&amp;nbsp;access to my Dropbox account from my phone&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;I can CRUD all files in there&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Dropbox says that, for &lt;b&gt;security purposes&lt;/b&gt;, they have no way to help me regain access&lt;/li&gt;
&lt;li&gt;Dropbox ignores the fact of #2 and #2-1, which is not secure at all, if I wasn't... me&lt;/li&gt;
&lt;li&gt;I &lt;b&gt;am able to change&lt;/b&gt; my account&lt;b&gt; password&lt;/b&gt; &lt;b&gt;without 2-step verif. code&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
So Dropbox, update your Android app, so I can &lt;b&gt;turn off&lt;/b&gt;&amp;nbsp;the 2-step verification, like I would do if I had access from a desktop as you told me to do.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tip for services like this: if you ever offer some high priority, so freaking important feature like this in your web interface, make sure your mobile app has that same feature.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;a href="http://box.net/"&gt;Box.net&lt;/a&gt;&lt;/b&gt;, prepare for some mass uploads arriving today in the meanwhile.&lt;/div&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=cXIf7eRU6Pg:rLWEFxGLEXo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=cXIf7eRU6Pg:rLWEFxGLEXo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=cXIf7eRU6Pg:rLWEFxGLEXo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=cXIf7eRU6Pg:rLWEFxGLEXo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=cXIf7eRU6Pg:rLWEFxGLEXo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/cXIf7eRU6Pg" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=3750925629261027016&amp;isPopup=true" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3750925629261027016?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/3750925629261027016?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/cXIf7eRU6Pg/dropbox-locked-me-out.html" title="Dropbox locked me out" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>2</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2012/09/dropbox-locked-me-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIDQHk5eCp7ImA9WhJUFkg.&quot;"><id>tag:blogger.com,1999:blog-9203187650123315020.post-2962367168293127015</id><published>2012-09-14T17:12:00.000-03:00</published><updated>2012-09-14T17:12:51.720-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-14T17:12:51.720-03:00</app:edited><title>Customizing Camel components within Scala DSL</title><content type="html">Even though I joined Oracle last July, I continue to have fun with some of other technologies, like the Scala language. And as I used to evangelize the Apache Camel framework in Brazil, I think I still owe some things to the Open Source community.&lt;br /&gt;
&lt;br /&gt;
In a few weeks, I will be at JavaOne to talk about Apache Camel and the Camel Twitter component that I contributed, together with Brett Meyer, months ago. So while developing the demo, I found a small issue with the Camel Scala DSL that couldn't find anywhere else.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to customize components within the Scala DSL for Apache Camel?&lt;/b&gt;&lt;br /&gt;
It happens that, using Java DSL, you can customize components simply like this:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/3724391.js?file=gistfile1.java"&gt;&lt;/script&gt;

But using Scala DSL, does that really work?&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/3724403.js?file=gistfile1.scala"&gt;&lt;/script&gt;

Not really... If you try this, the Camel Twitter component will throw an error saying that no token was provided for authentication. So here is how you make it work:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/3724420.js?file=gistfile1.scala"&gt;&lt;/script&gt;

Hope this helps you some day!

And you are welcome to attend my session "Leverage Enterprise Integration Patterns with Apache Camel and Twitter", at JavaOne 2012! &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=AYB32cto5FM:ocCyoZbI9u0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=AYB32cto5FM:ocCyoZbI9u0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=AYB32cto5FM:ocCyoZbI9u0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?a=AYB32cto5FM:ocCyoZbI9u0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoBrunoBorges?i=AYB32cto5FM:ocCyoZbI9u0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoBrunoBorges/~4/AYB32cto5FM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=9203187650123315020&amp;postID=2962367168293127015&amp;isPopup=true" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/2962367168293127015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/9203187650123315020/posts/default/2962367168293127015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogDoBrunoBorges/~3/AYB32cto5FM/customizing-camel-components-within.html" title="Customizing Camel components within Scala DSL" /><author><name>Bruno Borges</name><uri>https://plus.google.com/112626245189993000679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-VSsjzcs6Dz8/AAAAAAAAAAI/AAAAAAAAXl0/4Vw3ZVEugNo/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.brunoborges.com.br/2012/09/customizing-camel-components-within.html</feedburner:origLink></entry></feed>
