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

<channel>
	<title>Marcos Sousa's Blog &#187; Java</title>
	<atom:link href="http://www.marcossousa.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcossousa.com</link>
	<description>Blog sobre desenvolvimento de software</description>
	<lastBuildDate>Fri, 06 Jan 2012 15:31:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>TechDays UaiJUG Uberlândia</title>
		<link>http://www.marcossousa.com/2011/12/07/techdays-uaijug-uberlandia/</link>
		<comments>http://www.marcossousa.com/2011/12/07/techdays-uaijug-uberlandia/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 01:20:36 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Conferências]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[TechDays]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=337</guid>
		<description><![CDATA[Este ano tivemos grande eventos de tecnologia no Brasil. Vou deixar público os meus parabéns ao Christiano Milfont pelo pioneirismo em montar um grande evento em Fortaleza sobre JavaScript, o BrazilJS. Além do BrazilJS (Maio), também sediou o AgileBrazil (Junho) em Fortaleza, TDC (junho em São Paulo, agosto em Florianópolis e outubro Goiânia), Qconsp (Setembro [...]]]></description>
			<content:encoded><![CDATA[<p>Este ano tivemos grande eventos de tecnologia no Brasil. Vou deixar público os meus parabéns ao Christiano Milfont pelo pioneirismo em montar um grande evento em Fortaleza sobre JavaScript, o <a href="http://braziljs.com.br/#!/home" target="_blank">BrazilJS</a>. Além do <a href="http://braziljs.com.br/#!/home" target="_blank">BrazilJS</a> (Maio), também sediou o <a href="http://www.agilebrazil.com/" target="_blank">AgileBrazil</a> (Junho) em Fortaleza, <a href="http://www.thedevelopersconference.com.br/">TDC</a> (junho em São Paulo, agosto em Florianópolis e outubro Goiânia), <a href="http://qconsp.com/">Qconsp</a> (Setembro em São Paulo), <a href="http://www.rubyconf.com.br/">RubyConf</a> (Novembro em São Paulo) <a href="http://www.interaction-southamerica.org/2011/">Ixdsa11</a> (Dezembro em Belo Horizonte) e <a href="http://www.oracle.com/br/javaonedevelop/index.html">JavaOne</a> (Dezembro em São Paulo) e vários outros.</p>
<p><a href="http://techdays.uaijug.com.br/inscricao.php"><img class="alignleft size-medium wp-image-338" style="margin-right: 5px;" title="techdays" src="http://www.marcossousa.com/wp-content/uploads/2011/12/techdays-212x300.jpg" alt="" width="212" height="300" /></a>Uberlândia, em especial, será palco de dois grandes eventos:  sediou a 10ª edição do <a href="http://maredeagilidade.uaijug.com.br/2011/index.html">Maré de Agilidade</a>, em agosto e agora fecha o ano com o <a href="http://techdays.uaijug.com.br/">TechDays</a>. O maré, primeira edição fora de uma capital, contou com mais de 100 participantes em 3 dias. Houveram várias palestras sobre agilidade, testes e empreendedorismo. O <a href="http://www.andrefonseca.net/">André Fonseca</a> e eu falamos sobre <a href="http://www.slideshare.net/marcossousa/codifique-melhor">boas práticas de desenvolvimento.</a> Diante do convite feito pelo Rogério Fontes, estou a caminho de Uberlândia pela décima vez este ano (isso mesmo, minha 10ª viagem para lá) para falar sobre desenvolvimento com Ruby on Rails. Particularmente estou muito animado para o evento, que contará com presença internacional de dois grande nomes da comunidade Java <a href="http://www.java.net/blogs/terrencebarr/">Terrence Barr </a>e <a href="http://www.java.net/blogs/brinkley/ ">Roger Brinkley</a>. Sem contar com o HackDay durante a madrugada que será animal, algumas idéias já começaram a surgir para codificar <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Estes dois eventos mostram a força do desenvolvimento de software fora de grandes centros, sem mencionar que o mercado em franco crescimento nesta região. Durante as várias vezes que estive em Uberlândia, entre um café e outro ou um bate-papo na estrada, pude notar a ascensão da comunidade e o surgimento de várias empresas e a expansão das já existentes.</p>
<p>Portanto, <a href="http://techdays.uaijug.com.br/inscricao.php">corra e garanta já sua vaga</a>, pois o evento será demais, uberlandenses e cidades vizinhas (Araguari, Uberaba, Patos de Minas). Aos não mineiros venham também trocar experiências de desenvolvimento de software e saborear dos famosos pratos culinária mineira <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2011/12/07/techdays-uaijug-uberlandia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Venha para o Café Ágil Belo Horizonte, 13 de Novembro</title>
		<link>http://www.marcossousa.com/2010/10/31/venha-para-o-cafe-agil-belo-horizonte/</link>
		<comments>http://www.marcossousa.com/2010/10/31/venha-para-o-cafe-agil-belo-horizonte/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 17:55:26 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[CafeAgilBH]]></category>
		<category><![CDATA[dotnetarchitect]]></category>
		<category><![CDATA[mgjug]]></category>
		<category><![CDATA[railsmg]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=318</guid>
		<description><![CDATA[“A maré passou mas ainda há tempo para um cafezinho.” Venha participar do primeiro Café Ágil em Belo Horizonte! É com muito prazer que anuncio o Café Ágil Belo Horizonte, um evento para desenvolvedores e apaixonados por desenvolvimento de software. A programação é bem leve, ao contrário do que aconteceu no Maré de Agilidade, e [...]]]></description>
			<content:encoded><![CDATA[<h3 style="text-align: center;"><img class="aligncenter" title="cafe-agil-oct" src="http://www.marcossousa.com/wp-content/uploads/2010/10/cafe-agil-oct.png" alt="" width="510" height="364" /></h3>
<blockquote>
<h3 style="text-align: center;">“A maré passou mas ainda há tempo para um cafezinho.”</h3>
</blockquote>
<h3 style="text-align: center;">Venha participar do primeiro Café Ágil em Belo Horizonte!</h3>
<p>É com muito prazer que anuncio o Café Ágil Belo Horizonte, um evento para desenvolvedores e apaixonados por desenvolvimento de software. A programação é bem leve, ao contrário do que aconteceu no Maré de Agilidade, e a idéia é apresentar e colocar praticar boas técnicas desenvolvimento de software.</p>
<p><strong>1 &#8211; Programação</strong></p>
<p>Café da manhã: 8:30am – 9am<br />
Palestra 1: 9am – 10am<br />
Palestra 2: 10am – 11am<br />
Palestra 3: 11am – 12pm<br />
Coding Dojo : 12pm – 1pm</p>
<p><strong>Palestra 1<br />
Título:</strong> Formei, mas não sei NADA!!!<br />
<strong>Descrição:</strong> Por que várias pessoas tem essa sensação? Se você formou ou está para formar e tem a impressão que não sabe nada, não se sinta tão mal, você não é o único. Mas porque isso ocorre? Nessa palestra abordaremos esse assunto e mostraremos as principais causas deste sentimento e as principais formas de mitigá-lo.<br />
<strong>Palestrante:</strong> Edgard Davidson<br />
@edgarddavidson é profissional especialista em engenharia de software e desenvolvimento de sistemas, professor universitário, coordenador do curso de pós graduação em Engenharia de Software Centrada em Métodos Ágeis ofertado pela UNA. Mestrando em Engenharia Elétrica com ênfase em Engenharia de Software, Especialista em Engenharia de Software e Graduado em Sistemas de Informação. Para mais detalhes sobre meu currículo acadêmico acesse o link do lattes: http://lattes.cnpq.br/6311230153303498. ou no meu blog http://edgarddavidson.com<br />
<strong></strong><strong></strong></p>
<p><strong></strong><strong>Palestra 2<br />
</strong>Título: Pilotando codigo JavaScript<br />
<strong>Descrição:</strong> Em 1995, quando JavaScript apareceu pela primeira vez nas telas dos pioneiros da Web, não se falava muito em aumentar a qualidade do software produzido através da criação de testes automatizados. Desde então, muita coisa aconteceu nas duas áreas: computadores e navegadores ficaram mais poderosos, a internet de banda larga se popularizou e aplicações começaram a demandar soluções cada vez mais criativas para problemas de interação entre homem e máquina, ao mesmo tempo em que desenvolvedores precisavam de soluções criativas e inovadoras para gerenciar esta explosão em complexidade. Nesta palestra, Carlos e Filipe vão demonstrar alguns dos problemas que comumente assolam aplicações web hoje em dia e as soluções que encontraram para torná-los triviais de se resolver.<br />
<strong>Filipe Sabella</strong><br />
Empresário e desenvolvedor, principalmente para web, há sete anos. Viciado em JavaScript e web em geral, passou um ano desenvolvendo interfaces ricas com Flex. Após alguns anos como instrutor na Caelum, atualmente trabalha como consultor na ThoughtWorks Brasil.<br />
<strong>Carlos Villela</strong><br />
Carlos é consultor-líder pela ThoughtWorks há 6 anos e, além de ser um dos primeiros proponentes da linguagem Ruby e do Ruby on Rails na renomada consultoria, também tem feito diversos projetos relacionados com a migração e evolução de aplicações legadas utilizando testes automatizados de alto nível. Participou ativamente das idéias que deram origem ao BDD (Behaviour-Driven Development) e de diversos projetos open-source, como a ferramenta de testes WebDriver e a linguagem Ioke. Acompanhe Carlos através do Twitter em http://twitter.com/cv</p>
<p><strong>Palestra 3<br />
Título:</strong> TDD e BDD em Ruby &#8211; garantia de código saudável<br />
<strong>Descrição:</strong> Manter sistemas com ciclos de vida longos é uma tarefa crítica. Entenda como Test Driven Development e Behavior Driven Development são cruciais para a criação de uma boa arquitetura e consequentemente um software de qualidade.<br />
<strong>Palestrante:</strong> Daniel Lopez<br />
<strong>Daniel Lopez</strong><br />
Trabalha com TI a mais de 8 anos, é técnico e bacharel em sistemas de informação além de ser o responsável por ministrar desenvolvimento web na pós graduação em Eng. de Software Centrada em Métodos Ágeis da UNA-BH. Trabalha tempo integral com Ruby desde o início de 2007 Fundador da Area, empresa especializada em soluções web e design de UI que utiliza Ruby como principal tecnologia inclusive para em seus próprios produtos como o Cifras. Já treinou mais de 440 alunos pela EGenial, atualmente sendo responsável pelos cursos de Rails do Básico ao Avançado e Ruby Imersão. É Membro ativo do RailsMG além de já ter tido o prazer de palestrar sobre temas relacionados ao Ruby mais de 10 vezes. Escreve semanalmente no blog.areacriacoes.com.br.</p>
<p><strong>Coding Dojo</strong><br />
Coding Dojo com as principais comunidades de software mineiras RailsMG, MGJug e #dotnetarchitects. Venha codificar, trocar experiências e aplicar TDD na sua linguagem de programação preferida. A sessão de DOJO acontecerá em 3 salas: Java, Ruby e .NET.</p>
<p>Se você tem alguma idéia interessante para o DOJO, traga-a ou mande para meu e-mail falecomigo at marcossousa dot com. Vamos aproveitar este momento para aprender ainda mais!</p>
<p>As inscrições estão sendo realizadas pelo site do evento <a href=" http://www.thoughtworks.com/cafe-agil-em-belo-horizonte">http://www.thoughtworks.com/cafe-agil-em-belo-horizonte</a> e a entrada é 1KG de alimento não perecível.</p>
<p>O Café Ágil Belo Horizonte é uma realização da <a href="http://www.thoughtworks.com/" target="_blank">ThoughtWorks</a> em parceria com a <a href="http://www.una.br/" target="_blank">UNA</a> e o curso de <a href="http://engenhariadesoftwareagil.com/" target="_blank">Pós-Graduação em Engenharia de Software Centrada em Métodos Ágeis</a>. </p>
<p>E se você tem interesse de trabalhar na empresa que é uma das maiores referências em Agile conhecida no mundo? Trabalhar com um time rockstar apaixonado pelo que faz? Fique atento, a ThoughtWorks realizará no dia 14 de Novembro (Domingo) um evento para contratação. Então não perca tempo e confirme já sua presença <a href="http://bit.ly/ab6WJt" target="_blank">http://bit.ly/ab6WJt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2010/10/31/venha-para-o-cafe-agil-belo-horizonte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FacesContext em Seam Remoting calls</title>
		<link>http://www.marcossousa.com/2009/06/27/facescontext-em-seam-remoting-calls/</link>
		<comments>http://www.marcossousa.com/2009/06/27/facescontext-em-seam-remoting-calls/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 04:56:42 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[FacesContext]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Seam Framework]]></category>
		<category><![CDATA[Seam Remoting]]></category>
		<category><![CDATA[Transactions]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=175</guid>
		<description><![CDATA[Faz um tempinho que não escrevo nada por aqui. Além de projetos críticos que estou participando, estava muito envolvido na leitura de dois livros relacionados a Agile, que os comentarei em breve, e também estou escrevendo uma série de artigos para a revista Java Magazine, o primeiro sai na edição 72. A partir de agora [...]]]></description>
			<content:encoded><![CDATA[<p>Faz um tempinho que não escrevo nada por aqui. Além de projetos críticos que estou participando, estava muito envolvido na leitura de dois livros relacionados a Agile, que os comentarei em breve, e também estou escrevendo uma série de artigos para a revista Java Magazine, o primeiro sai na edição 72. A partir de agora devo publicar pelo menos uns 2 post mensais. <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>O <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/remoting.html">Seam Remoting</a> oferece uma forma conveniente de acessar componentes backing beans via AJAX. Com uma simples anotação é possível chamar ações, intanciar objeto e etc. Porém este recurso é uma maneira limitada de acessar o contexto dos componentes e requer uma certa atenção de nós desenvolvedores. Pessoalmente, pude presenciar soluções fantásticas usando remoting e mas algumas implementações desastrosas. Fica a dica: <strong>use o remoting apenas quando os componentes AJAX existentes não solucionam um dado problema.</strong></p>
<p>Por padrão, uma requisição AJAX via <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/remoting.html">Seam Remoting </a>não possui controle de transações e o contexto JSF não é criado. Para ambos os casos é possível habilitá-los. O controle de transações é mais simples, basta adicionar a anotação @Transactional com o tipo <strong>REQUIRED</strong>. Veja o exemplo:</p>
<pre class="brush: java;">@WebRemote @Transactional(TransactionPropagationType.REQUIRED)
public void updateUserProfile(Profile profile) {
entityManager.merge(profile);
}</pre>
<p>Criar o contexto JSF exige algo um pouco mais avançado. Antes de iniciar a execução das ações, o contexto JSF deve ser criado, e para a sua criação é preciso o <strong>HttpServletRequest</strong> e o <strong>HttpServletResponse</strong>. Uma forma seria criando um filtro, mas acredito que não é uma boa solução. O Seam possui um recurso de ExecutionHandler que permite executar determinadas operações em requisições Remoting antes executar a ação. Este recurso usa o padrão <a href="http://www.google.com.br/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FObserver_pattern&amp;ei=hqVFSt_nAdSLtgf-m9S3Ag&amp;usg=AFQjCNGRWwxlv75N0vj4Ifwc0q4NnXIbrg&amp;sig2=gNBtStw_hbSmpwARjfBWSQ">Observer</a>, onde o primeiro passo é criar o observer, ele precisa de implementar a interface ExecutionHandler:</p>
<pre class="brush: java;">public class RemotingFacesContextHandler extends ExecutionHandler {

private ServletContext servletContext;

protected FacesContext getFacesContext(HttpServletRequest request,
HttpServletResponse response) {

FacesContext facesContext = FacesContext.getCurrentInstance();

if (facesContext == null) {
FacesContextFactory contextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
facesContext = contextFactory.getFacesContext(servletContext,request, response, lifecycle);
}

return facesContext;
}
@Override
public void handle(HttpServletRequest request, HttpServletResponse response)
throws Exception {
getFacesContext(request, response);
super.handle(request, response);
}
@Override
public void setServletContext(ServletContext ctx) {
this.servletContext = ctx;
super.setServletContext(ctx);
}
}</pre>
<p>O método <strong>handle</strong> chama o método <strong>getFacesContext</strong> que é responsável por iniciar o contexto. A inicialização do FacesContext é feita por meio do método <strong>getFacesContext</strong> da classe FacesContextFactory. Além do contexto servlet, do request e do response, é necessário informar o ciclo de vida JSF.O Ciclo de vida é criado por meio da classe LifecycleFactory.</p>
<p>Uma vez criado o observer, basta registrá-lo. Uma das várias alternativas é registrá-lo após a inicialização usando a anotação @Observe:</p>
<pre class="brush: java;">@Name(&quot;registerHandler&quot;)
public class RegisterFacesContextHandler {
private static final String REQUEST_PATH_EXECUTE = &quot;/execute&quot;;

@Observer(&quot;org.jboss.seam.postInitialization&quot;)
public void initHandler() {
RequestHandlerFactory.getInstance().registerHandler(REQUEST_PATH_EXECUTE, new RemotingFacesContextHandler());

}

}</pre>
<p>Após inicializado o Seam (org.jboss.seam.postInitialization) o observer é registrado. Com isto você pode chamar FacesContext.getCurrentInstance() que não receberá aquele NullPointerException indesejado. <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2009/06/27/facescontext-em-seam-remoting-calls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vídeo Aulas: Seam Extras partes 8 e 9</title>
		<link>http://www.marcossousa.com/2008/11/01/video-aulas-seam-extras-partes-8-e-9/</link>
		<comments>http://www.marcossousa.com/2008/11/01/video-aulas-seam-extras-partes-8-e-9/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 19:15:54 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[Vídeo Aulas]]></category>
		<category><![CDATA[Java Vídeo Magazine]]></category>
		<category><![CDATA[JavaServer Faces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Seam Framework]]></category>
		<category><![CDATA[Vídeo Aula]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=134</guid>
		<description><![CDATA[Foram publicadas no portal Java Magazine a 8ª e a 9ª parte da série de vídeo aulas sobre os extras Seam Framework. A parte 8, faz a introdução do Seam Remoting. São mostradas as configurações necessárias e a forma de acesso a componentes SEAM. O Seam Remoting é uma forma eficiente acessar componentes SEAM usando [...]]]></description>
			<content:encoded><![CDATA[<p>Foram publicadas no portal <a href="http://www.javamagazine.com.br/">Java Magazine</a> a 8ª e a 9ª parte da série de vídeo aulas sobre os extras <a href="http://www.seamframework.org/">Seam Framework</a>.</p>
<p>A parte 8, faz a introdução do Seam Remoting. São mostradas as configurações necessárias e a forma de acesso a componentes SEAM. O Seam Remoting é uma forma eficiente acessar componentes SEAM usando AJAX, permitindo ao desenvolvedor resolver problemas que os componentes disponíveis no mercado não atendem. Para utilizá-lo é facil, basta apenas ter o SeamResourceServlet configurado e basta chamar os arquivos javascript ou usar a tag remote para usar os componentes, veja o exemplo:</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot; src=&quot;seam/resource/remoting/resource/remote.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;seam/resource/remoting/interface.js?newsHome&amp;amp;usersHome&quot;&gt;&lt;/script&gt;
&lt;!-- Mesmo resultado em relação as 2 linhas anteriores--&gt;
&lt;s :remote include=&quot;newsHome,usersHome&quot;/&gt;
</pre>
<p>A parte 9 aborda uma feature interessante, a resolução de EL. Como uma expression language é resolvida durante a rendereização da página, para usar este recurso é preciso usar a função dentro fora da página em um arquivo Javascript. Depois é só chamar a função da seguinte forma:</p>
<pre class="brush: jscript;">
Seam.Remoting.eval(&quot;#{newsHome.relatedNews}&quot;, newsCallback);
// callback function
function newsCallback(newsList) {
// read news
var area = document.getElementById(&quot;relatedNews&quot;);
for (var i = 0; i &lt; newsList.length; i++) {
var news = newsList[i];
var span = document.createElement(&quot;span&quot;);
span.innerHTML = &quot;&lt;h4&gt;&lt;a href='ViewNews.seam?newsId=&quot; + news.getId() + &quot;'&gt;&quot; +
news.getTitle() + &quot;&lt;/a&gt;&quot; + news.getDescription();
area.appendChild(span);
}
}
</pre>
<p>A última vídeo aula da série mostrará chamadas em lote e a utilização de classes que não são componentes SEAM.</p>
<p><a title="Acesso à página de download da vídeo aula" href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=10836">Parte 8</a><br />
<a title="Acesso à página de download da vídeo aula" href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=10837">Parte 9</a></p>
<p><a title="Download dos fontes das Video Aulas" href="http://www.marcossousa.com/wp-content/uploads/2008/11/fontes_seamextras_partes8e9.zip">Arquivos Fontes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/11/01/video-aulas-seam-extras-partes-8-e-9/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Vídeo Aulas: Seam Extras partes 6 e 7</title>
		<link>http://www.marcossousa.com/2008/09/24/seam-extra-parte-6-e-7/</link>
		<comments>http://www.marcossousa.com/2008/09/24/seam-extra-parte-6-e-7/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 14:46:51 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[Vídeo Aulas]]></category>
		<category><![CDATA[Captcha]]></category>
		<category><![CDATA[Java Vídeo Magazine]]></category>
		<category><![CDATA[JavaMail]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Vídeo Aula]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=108</guid>
		<description><![CDATA[Foram publicadas no portal Java Magazine a 6ª e 7ª parte da série de vídeo aulas sobre os extras Seam Framework. A parte 6, mostra todos os passos para enviar e-mails usando o módulo de integração do Seam Framework com a JavaMail. O Seam Framework possui um gerenciador de envio de e-mails e para usá-lo [...]]]></description>
			<content:encoded><![CDATA[<p>Foram publicadas no portal <a href="http://www.javamagazine.com.br/">Java Magazine</a> a 6ª e 7ª parte da série de vídeo aulas sobre os extras <a href="http://www.seamframework.org/">Seam Framework</a>.</p>
<p>A parte 6, mostra todos os passos para enviar e-mails usando o módulo de integração do <a href="http://www.seamframework.org/">Seam Framework</a> com a <a href="http://java.sun.com/products/javamail">JavaMail</a>. O <a href="http://www.seamframework.org/">Seam Framework</a> possui um gerenciador de envio de <em>e-mails</em> e para usá-lo é bastante simples. Vejo sempre em fóruns a dificuldade que usuários tem para enviar e-mails usando uma conta SMTP do google, porém o Seam oferece diversas facilidades para configuração. O código abaixo configura o envio de e-mails usando uma conta do Google.</p>
<pre class="brush: xml;">
&lt;mail :mail-session host=&quot;smtp.gmail.com&quot; port=&quot;587&quot; username=&quot;testes@marcossousa.com&quot; password=&quot;java2008.&quot; ssl=&quot;false&quot; tls=&quot;true&quot;/&gt;
</pre>
<p>Para configurar a mensagem é bem simples, basta criar um arquivo XHTML usando as tags m:message. Nos fontes há o exemplo demonstrado na vídeoaula.</p>
<p>Já a parte 7 aborda outro tópico interessante, a utilização de <a href="http://pt.wikipedia.org/wiki/CAPTCHA">CAPTCHA</a>. O Seam oferece uma solução básica, que gera imagens usando representação de somas simples. Na vídeo eu mostro como customizar a classe para gerar imagens mais complexas, no exemplo criado gera códigos alfanuméricos de 6 caracteres. Por padrão, basta apenas configurar o <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/security.html#d0e8707">Seam Resource Servlet</a> e usar o código abaixo:</p>
<pre class="brush: xml;">&lt;s :decorate id=&quot;verification&quot;&gt;
&lt;h :graphicImage value=&quot;/seam/resource/captcha&quot; id=&quot;captchaimg&quot; /&gt;
&lt;h :inputText value=&quot;#{captcha.response}&quot;  required=&quot;true&quot; id=&quot;verify&quot;&gt;
&lt;s :validate&gt;&lt;/s&gt;
&lt;a :support event=&quot;onblur&quot; reRender=&quot;verification&quot; bypassUpdates=&quot;true&quot; ajaxSingle=&quot;true&quot;&gt;&lt;/a&gt;
&lt;/h&gt;
&lt;/s&gt;
</pre>
<p>As próximas vídeo aulas da série abordarão as funcionalidades do <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/remoting.html">Seam Remoto</a>. <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=10353">Parte 6</a><br />
<a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=10354">Parte 7</a></p>
<p><a href="http://www.marcossousa.com/wp-content/uploads/2008/09/newsmanager.zip">Arquivos Fontes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/09/24/seam-extra-parte-6-e-7/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Vídeo Aula: Seam Extras &#8211; Gerando PDF</title>
		<link>http://www.marcossousa.com/2008/07/31/video-aula-seam-extras-gerando-pdf/</link>
		<comments>http://www.marcossousa.com/2008/07/31/video-aula-seam-extras-gerando-pdf/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 13:11:30 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[Vídeo Aulas]]></category>
		<category><![CDATA[Itext]]></category>
		<category><![CDATA[Java Magazine]]></category>
		<category><![CDATA[Java Vídeo Magazine]]></category>
		<category><![CDATA[jboss-seam-itext]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Seam PDF]]></category>
		<category><![CDATA[Vídeo Aula]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=101</guid>
		<description><![CDATA[Foi publicada no portal Java Magazine a parte 5ª da série de vídeo aulas sobre os extras Seam Framework. Esta parte mostra um passo-a-passo para criar documentos em PDF usando o módulo de integração do Seam Framework com o iText. Na vídeo aula, são apresentadas algumas das tags descritas na publicação Gere PDF de Qualidade [...]]]></description>
			<content:encoded><![CDATA[<p>Foi publicada no portal <a href="http://www.javamagazine.com.br/">Java Magazine</a>  a parte 5ª da série de vídeo aulas sobre os extras <a href="http://www.seamframework.org/">Seam Framework</a>.</p>
<p>Esta parte mostra um passo-a-passo para criar documentos em PDF usando o módulo de integração do <a href="http://www.seamframework.org/">Seam Framework</a> com o <a href="http://www.lowagie.com/iText">iText</a>. Na vídeo aula, são apresentadas algumas das tags descritas na publicação <a href="http://www.marcossousa.com/2008/07/01/gere-pdf-de-qualidade-em-10-minutos/">Gere PDF de Qualidade em 10 minutos</a>, o documento resultante gera um PDF que contém imagens, títulos, texto HTML formatado e um rodapé contendo texto e numeração.</p>
<p>As próximas vídeo aulas abordarão o envio de e-mails, CAPTCHA e agendamento de tarefas. <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href='http://www.marcossousa.com/wp-content/uploads/2008/07/newsmanager.zip'>Arquivos Fontes</a><br />
<a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=9759">Vídeo aula</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/07/31/video-aula-seam-extras-gerando-pdf/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Vídeo Aulas: Seam Extras parte 4</title>
		<link>http://www.marcossousa.com/2008/07/29/video-aulas-seam-extras-parte-4/</link>
		<comments>http://www.marcossousa.com/2008/07/29/video-aulas-seam-extras-parte-4/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 11:57:16 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[Vídeo Aulas]]></category>
		<category><![CDATA[Java Magazine]]></category>
		<category><![CDATA[Java Vídeo Magazine]]></category>
		<category><![CDATA[JSF]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=99</guid>
		<description><![CDATA[Foi publicada no portal Java Magazine a parte 4ª da série de vídeo aulas sobre os extras Seam Framework. Nesta parte não foi demonstrado nenhum recurso especial do Seam Framework, porém foi demonstrado o uso do componente input suggestion. Link da Vídeo Aula Arquivos fontes As próximas partes abordarão a geração de PDF e envio [...]]]></description>
			<content:encoded><![CDATA[<p>Foi publicada no portal <a href="http://www.javamagazine.com.br/">Java Magazine</a>  a parte 4ª da série de vídeo aulas sobre os extras <a href="http://www.seamframework.org/">Seam Framework</a>.</p>
<p>Nesta parte não foi demonstrado nenhum recurso especial do <a href="http://www.seamframework.org/">Seam Framework</a>, porém foi demonstrado o uso do componente <a href="http://livedemo.exadel.com/richfaces-demo/richfaces/suggestionBox.jsf?c=suggestionBox">input suggestion</a>. </p>
<p><a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=9700">Link da Vídeo Aula</a><br />
<a href='http://www.marcossousa.com/wp-content/uploads/2008/07/newsmanager.rar'>Arquivos fontes</a></p>
<p>As próximas partes abordarão a geração de PDF e envio de e-mails. <img src='http://www.marcossousa.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/07/29/video-aulas-seam-extras-parte-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vídeo Aulas: Seam Extras partes 1 a 3</title>
		<link>http://www.marcossousa.com/2008/07/22/video-aulas-seam-extras-1-3/</link>
		<comments>http://www.marcossousa.com/2008/07/22/video-aulas-seam-extras-1-3/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 04:35:10 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[RichFaces]]></category>
		<category><![CDATA[Vídeo Aulas]]></category>
		<category><![CDATA[a4j:mediaOutput]]></category>
		<category><![CDATA[Java Magazine]]></category>
		<category><![CDATA[Java Vídeo Magazine]]></category>
		<category><![CDATA[JavaServer Faces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Rich Faces]]></category>
		<category><![CDATA[rich:fileUpload]]></category>
		<category><![CDATA[Vídeo Aula]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=98</guid>
		<description><![CDATA[Foi publicada no portal Java Magazine as 3 primeiras partes de uma série de vídeo aulas sobre os extras Seam Framework. Esta série abordará alguns recursos interessantes do Seam Framework como Geração de PDFs, Envio de e-mails, Integração com Captcha e Agendamento de Tarefas. Nesta série também procurei demonstrar através de um sistema de cadastro [...]]]></description>
			<content:encoded><![CDATA[<p>Foi publicada no portal <a href="http://www.javamagazine.com.br/">Java Magazine</a>  as 3 primeiras partes de uma série de vídeo aulas sobre os extras <a href="http://www.seamframework.org/">Seam Framework</a>. Esta série abordará alguns recursos interessantes do <a href="http://www.seamframework.org/">Seam Framework</a> como Geração de PDFs, Envio de e-mails, Integração com Captcha e Agendamento de Tarefas. Nesta série também procurei demonstrar através de um sistema de cadastro de notícias alguns recursos interessantes do RichFaces como Upload de múltiplos arquivos e auto-completar.</p>
<p><a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=9675">A primeira vídeo aula</a> aborda a criação e configuração da aplicação. É criado o banco de dados, criação dos formulários e aplicado restrições de acesso a pasta dos cadastros de usuários, tags, anexos e notícias. </p>
<p><a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=9688">A segunda parte</a> aborda a criação de uma classe de criptografia <a href="http://pt.wikipedia.org/wiki/MD5">MD5</a>, criptografia e validação de senhas no cadastro de usuário e customização da classe de autenticação de usuários usada pelo <a href="http://www.seamframework.org/">Seam Framework</a>.</p>
<p>Por fim <a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=9689">a terceira parte</a> abordou a implementação do código necessário para fazer upload de arquivos usando o componente do RichFaces <a href="http://livedemo.exadel.com/richfaces-demo/richfaces/fileUpload.jsf?c=fileUpload">rich:fileUpload</a>. No exemplo, foi limitado o tamanho máximo de arquivos, o tipo do arquivo (apenas imagens) e implementado a ação de modo que salvasse a imagem no Banco de Dados usando o Hibernate. Por fim foi apresentado também como pode ser realizado a exibição de imagens usando o <a href="http://livedemo.exadel.com/richfaces-demo/richfaces/mediaOutput.jsf?c=mediaOutput">a4j:mediaOutput</a>.</p>
<p>As próximas vídeo aulas mostrarei a implementação do recurso de autocompletar, semelhante ao WordPress, e mostrarei também a geração de PDF e Envio de e-mails. Vale a pena conferir!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/07/22/video-aulas-seam-extras-1-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSF 2.0 EDR1 Disponível para download</title>
		<link>http://www.marcossousa.com/2008/06/27/jsf-20-edr1-disponivel-para-download/</link>
		<comments>http://www.marcossousa.com/2008/06/27/jsf-20-edr1-disponivel-para-download/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 16:30:20 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[JSF 2.0]]></category>
		<category><![CDATA[JSF 2.0 EDR1]]></category>
		<category><![CDATA[Mojarra 2.0]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/?p=94</guid>
		<description><![CDATA[O projeto Mojarra, projeto responsável pela implementação padrão JSF, anunciou a primeira versão do JSF 2.0. A versão EDR (Early Draft Review) é um snapshot do que estará disponível na nova versão do JSF. Para quem tem interesse no framework, é uma ótima oportunidade de testar novas features e identificar bugs, reportar ao projeto, ou [...]]]></description>
			<content:encoded><![CDATA[<p>O projeto <a href="https://javaserverfaces.dev.java.net">Mojarra</a>, projeto responsável pela implementação padrão JSF, anunciou a primeira versão do <a href="http://java.sun.com/javaee/javaserverfaces">JSF 2.0</a>. A versão EDR (Early Draft Review) é um snapshot do que estará disponível na nova versão do JSF. Para quem tem interesse no framework, é uma ótima oportunidade de testar novas features e identificar bugs, reportar ao projeto, ou até mesmo ajudar com correções, sem contar também que estará conhecendo os avanços do framework que estará disponível para produção somente daqui alguns meses ainda.</p>
<p>Para os interessados, é possível obter a implementação sozinha ou para quem usa o <a href="https://javaserverfaces.dev.java.net/servlets/ProjectDocumentList?folderID=9437&#038;expandFolder=9437&#038;folderID=0">Glassfish Application Server</a> a API também estará disponível através do Update Center do Application Server.</p>
<p>Venho acompanhando o blog do <a href="http://blogs.sun.com/rlubke">Ryan Lubke</a>, nele há várias informações e dicas mostrando as novas features do <a href="http://java.sun.com/javaee/javaserverfaces">JSF 2.0</a>. Vale a pena dar uma olhada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/06/27/jsf-20-edr1-disponivel-para-download/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Seam &#8211; Getting started: Converters!</title>
		<link>http://www.marcossousa.com/2008/05/16/seam-getting-started-converters/</link>
		<comments>http://www.marcossousa.com/2008/05/16/seam-getting-started-converters/#comments</comments>
		<pubDate>Fri, 16 May 2008 21:35:35 +0000</pubDate>
		<dc:creator>Marcos Sousa</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Jboss Seam]]></category>
		<category><![CDATA[GET]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Page Actions]]></category>
		<category><![CDATA[Seam Framework]]></category>

		<guid isPermaLink="false">http://www.marcossousa.com/2008/05/16/seam-getting-started-converters/</guid>
		<description><![CDATA[Na série de vídeo-aulas que eu fiz para o portal DevMedia sobre o Seam Framework, eu mostrei como podem ser usadas as anotações para registro de Conversores JSF. A notação é bastante simples. Imagine que você tenha um cadastro de produtos. Veja o código do conversor: @Name(&#34;productConverter&#34;) @BypassInterceptors @Converter(forClass=Product.class) public class ProductConverter implements javax.faces.convert.Converter{ public [...]]]></description>
			<content:encoded><![CDATA[<p>Na série de vídeo-aulas que eu fiz para o portal <a href="http://www.devmedia.com.br">DevMedia </a>sobre o <a href="http://www.seamframework.org">Seam Framework</a>, eu mostrei como podem ser usadas as anotações para registro de Conversores <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>. A notação é bastante simples. Imagine que você tenha um cadastro de produtos.</p>
<p>Veja o código do conversor:</p>
<pre class="brush: java;">
@Name(&quot;productConverter&quot;)
@BypassInterceptors
@Converter(forClass=Product.class)
public class ProductConverter implements javax.faces.convert.Converter{

public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
// Insira o código que transforme a string no objeto desejado (Product)
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
// Insira o código que transforme o objeto desejado (Product)    em String
}

}  </pre>
<p>Para registrar um conversor temos que usar as anotações:<br />
@Name &#8211; Registra o conversor como um componente Seam<br />
@BypassInterceptors &#8211; Indica que o conversor não deve sofrer ação dos intercetadores SEAM.<br />
@Converter &#8211; Registra o conversor no contexto <a href="http://java.sun.com/javaee/javaserverfaces/">JSF</a>, o atributo forClass indica a classe que iremos converter.</p>
<p>Também poderíamos cria o conversor usando um identificador, porém eu fiz alguns testes e para determinados comportamentos são gerados erros relacionados ao controle de estado.  Se você também teve estas experiências, compartilhe-as!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcossousa.com/2008/05/16/seam-getting-started-converters/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

