<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>José Alexandre Macedo Blog</title>
	<atom:link href="http://jamacedo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jamacedo.wordpress.com</link>
	<description>Desenvolvimento de software sem complicação!</description>
	<lastBuildDate>Thu, 15 Dec 2011 17:54:40 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jamacedo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>José Alexandre Macedo Blog</title>
		<link>http://jamacedo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jamacedo.wordpress.com/osd.xml" title="José Alexandre Macedo Blog" />
	<atom:link rel='hub' href='http://jamacedo.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Blog com Novo Domínio &#8211; jamacedo.com</title>
		<link>http://jamacedo.wordpress.com/2010/12/23/novo-dominio/</link>
		<comments>http://jamacedo.wordpress.com/2010/12/23/novo-dominio/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 20:05:54 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jamacedo.wordpress.com/?p=332</guid>
		<description><![CDATA[Olá a todos, Esta semana eu terminei de migrar o blog do WordPress para um domínio próprio chamado jamacedo.com. O motivo da migração foi basicamente as limitações impostas para os blogs hospedados no WordPress.com, entre elas: plugins e temas… todos os posts e comentários já estão disponíveis no novo domínio. Se você está conhecendo agora [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=332&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3><img class="aligncenter" style="border:0;" src="http://criterionglobal.files.wordpress.com/2008/10/hot-water-migration.jpg?w=359&#038;h=283" alt="" width="359" height="283" /></h3>
<p>Olá a todos,</p>
<p>Esta semana eu terminei de migrar o blog do WordPress para um domínio próprio chamado <a href="http://jamacedo.com/" target="_blank">jamacedo.com</a>.  O motivo da migração foi basicamente as limitações impostas para os  blogs hospedados no WordPress.com, entre elas: plugins e temas… todos os  posts e comentários já estão disponíveis no novo domínio.</p>
<p>Se você está conhecendo agora ou deseja continuar acompanhando, peço que acesse  <a href="http://jamacedo.com/" target="_blank">jamacedo.com</a>. Minha primeira meta para 2011 já será publicar com maior frequência <img src="http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1238444206g" alt=":)" />!</p>
<p>Desejo a vocês um Feliz Natal e um 2011  cheio de realizações!</p>
<p>Abraços,</p>
<p>José Alexandre Macedo</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=332&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/12/23/novo-dominio/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://criterionglobal.files.wordpress.com/2008/10/hot-water-migration.jpg" medium="image" />

		<media:content url="http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1238444206g" medium="image">
			<media:title type="html">:)</media:title>
		</media:content>
	</item>
		<item>
		<title>Primeiro Artigo na Java Magazine Ed. 85</title>
		<link>http://jamacedo.wordpress.com/2010/11/08/primeiro-artigo-na-java-magazine-ed-%c2%a085/</link>
		<comments>http://jamacedo.wordpress.com/2010/11/08/primeiro-artigo-na-java-magazine-ed-%c2%a085/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 14:56:10 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[componentes customizados]]></category>
		<category><![CDATA[java magazine]]></category>
		<category><![CDATA[jsf 2]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=303</guid>
		<description><![CDATA[Bom dia a todos, Gostaria de compartilhar com vocês, com grande felicidade, que meu primeiro artigo na revista Java Magazine está nas bancas  neste mês de Novembro. Neste artigo apresento o funcionamento dos componentes customizados no JSF 2, além de uma aplicação utilizando esta e outras técnicas do JSF 2. Quero agradecer o convite e [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=303&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://www.devmedia.com.br/post-18489-Revista-Java-Magazine-85.html"><img class="alignnone" style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0 initial initial;" title="Java Magazine Ed.85" src="http://jamacedo.files.wordpress.com/2010/11/java_85_online_thumb.jpg?w=298&#038;h=348" border="0" alt="Java Magazine Ed.85" width="298" height="348" /></a></p>
<p>Bom dia a todos,</p>
<p>Gostaria de compartilhar com vocês, com grande felicidade, que <a href="http://www.devmedia.com.br/post-18491-Customizando-Componentes-no-JSF-2-0.html" target="_blank">meu primeiro artigo na revista Java Magazine</a> está nas bancas  neste mês de Novembro. Neste artigo apresento o funcionamento dos componentes customizados no JSF 2, além de uma aplicação utilizando esta e outras técnicas do JSF 2.</p>
<p>Quero agradecer o convite e a paciência do editor Eduardo Spínola e o apoio dos amigos e da professora Melise.</p>
<p>Também quero parabenizar o Eduardo e sua equipe pela iniciativa no desenvolvimento da nova revista Easy Java Magazine (<a href="http://www.devmedia.com.br/post-18452-Revista-Easy-Java-Magazine-1.html" target="_blank">disponível gratuitamente</a>). Esta nova revista com certeza será de grande  importância para os desenvolvedores que estão iniciando com a linguagem Java.</p>
<p>Espero que este possa ser apenas o primeiro de outros artigos que eu venha a escrever para a revista. Não pretendo manter o foco exclusivamente no JSF, sendo que os assuntos serão abordados conforme as tecnologias e novidades que eu estiver trabalhando e aprendendo.</p>
<p>No mais agradeço também a você que visita o blog, estou sempre aberto para dúvidas, críticas e sugestões!</p>
<p>Abraço a todos,</p>
<p>José Alexandre Macedo</p>
<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=303&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/11/08/primeiro-artigo-na-java-magazine-ed-%c2%a085/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/11/java_85_online_thumb.jpg" medium="image">
			<media:title type="html">Java Magazine Ed.85</media:title>
		</media:content>
	</item>
		<item>
		<title>Consumindo servi&#231;os do Flickr com Java no Netbeans</title>
		<link>http://jamacedo.wordpress.com/2010/09/30/consumindo-servios-do-flickr-com-java-no-netbeans/</link>
		<comments>http://jamacedo.wordpress.com/2010/09/30/consumindo-servios-do-flickr-com-java-no-netbeans/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 03:55:28 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[WebServices]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=294</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! O site de hospedagem e compartilhamento de imagens Flickr disponibiliza para os desenvolvedores acesso as suas funcionalidades através de uma API de serviços REST. Com esta API o desenvolvedor pode soltar a imaginação e criar novos aplicativos, inclusive interagindo também com outros serviços disponíveis na [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=294&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<p>O site de hospedagem e compartilhamento de imagens Flickr disponibiliza para os desenvolvedores acesso as suas funcionalidades através de uma API de serviços REST. Com esta API o desenvolvedor pode soltar a imaginação e criar novos aplicativos, inclusive interagindo também com outros serviços disponíveis na web. Quem estiver interessado em conhecer os aplicativos criados utilizando a API do Flickr pode acessar o <a href="http://www.flickr.com/services/" target="_blank">App Garden</a>. Este site é uma iniciativa da própria empresa para reunir os aplicativos que utilizam o Flickr.</p>
<p><span style="text-decoration:underline;"> </span></p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">Mas por que eu precisaria do Netbeans para consumir os servicos do Flickr?</span></p>
<p>Não, você não precisa do Netbeans para utilizar os serviços. Entrentanto, a IDE disponibiliza um esquema de drag and drop que facilita muito algumas parte do trabalho. Nós veremos neste tutorial como utilizar este esquema para ter acesso a álbuns e fotos de forma simples e rápida.</p>
<p>Lembrando que o Netbeans auxilia no acesso à serviços de diversas outras APIs como por exemplo, Facebook, Google, Delicious, Twitter, Yahoo e muitas outras que não serão tratadas neste post. Porém a estratégia utilizada nas demais APIs é semelhante e você podera tomar como base este tutorial para trabalhar com outros serviços.</p>
<p><span style="text-decoration:underline;"> </span></p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">1º Passo</span></p>
<p>A primeira coisa a se fazer é <a href="http://www.flickr.com/" target="_blank">criar uma conta</a> no Yahoo(caso você já não tenha) para ter acesso ao Flickr. Ter acesso ao Flickr é importante porque você precisará registrar um aplicativo no App Garden.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">2º Passo</span></p>
<p>Com acesso ao Flickr você deve ir a <a href="http://www.flickr.com/services/apps/create/apply/" target="_blank">esta página</a> para Criar um novo aplicativo. Precisamos desta etapa porque o Flickr só fornece permissão para uso dos serviços se a aplicação tiver uma chave e um segredo específicos para ela. O Flickr <strong>não cobra nada</strong> para registrar a aplicação e fornecer a chave. Nós utilizaremos esta chave e o segredo alguns passos a frente.</p>
<p>Ao acessar a página de criação de aplicativo você verá o seguinte:</p>
<p><a href="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp3.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="flickrRegistroApp" src="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp_thumb2.png?w=494&#038;h=314" border="0" alt="flickrRegistroApp" width="494" height="314" /></a></p>
<p>Como nosso objetivo não é comercial escolha a opção <strong>SOLICITAR UMA CHAVE NÃO COMERCIAL</strong>.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">3º Passo</span></p>
<p>Agora escolha um nome para sua aplicação, forneça uma pequena descrição, aceite os termos de compromisso e clique em <strong>ENVIAR</strong>. Após enviar você terá acesso a sua chave e seu segredo da mesma forma que a figura abaixo:</p>
<p><a href="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp22.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="flickrRegistroApp2" src="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp2_thumb1.png?w=501&#038;h=348" border="0" alt="flickrRegistroApp2" width="501" height="348" /></a></p>
<p>Anote a chave e o segredo em algum lugar para usarmos logo mais.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">4º Passo</span></p>
<p>Vamos partir para o Netbeans agora.</p>
<p>Crie um Novo Projeto Java para desktop.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">5º Passo</span></p>
<p>Agora crie uma classe com um método <strong>main</strong>.</p>
<p>Testaremos os serviços dentro deste método. Será nele que  iremos arrastar e soltar um método do serviço do Flickr.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">6º Passo</span></p>
<p>Agora vá até a aba Serviços que fica ao lado das abas Arquivos e Projetos   <a href="http://jamacedo.files.wordpress.com/2010/09/abaservicos1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="abaservicos" src="http://jamacedo.files.wordpress.com/2010/09/abaservicos_thumb1.png?w=180&#038;h=62" border="0" alt="abaservicos" width="180" height="62" /></a> e busque o seguinte nó da árvore <strong>Flickr –&gt; Photo Service –&gt; services –&gt; rest –&gt; photosets_getList</strong> e arraste e solte o método <strong>photosets_getList</strong> para dentro do método <strong>main </strong>da classe que você criou. Aparecerá a seguinte tela:</p>
<p><a href="http://jamacedo.files.wordpress.com/2010/09/turservicosflickr1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="turservicosflickr" src="http://jamacedo.files.wordpress.com/2010/09/turservicosflickr_thumb1.png?w=453&#038;h=350" border="0" alt="turservicosflickr" width="453" height="350" /></a></p>
<p>Apenas clique em <strong>OK</strong> pra que os códigos necessários terminem de ser gerados.</p>
<p>Após o <strong>OK </strong>será gerado o seguinte código para você:</p>
<p><pre class="brush: java;">
import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

    public static void main(String[] args) {

        // início do código que será gerado -------------------------
        try {
            String userId = null;

            RestResponse result = FlickrPhotoService.photosetsGetList(userId);
            if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
                flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
            }
            //TODO - Uncomment the print Statement below to print result.
            //System.out.println(&quot;The SaasService returned: &quot;+result.getDataAsString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // fim do código que será gerado -------------------------------
    }
}
</pre></p>
<p>O objeto <strong>resultObj </strong>é responsável, neste caso, por conter a lista de todos os álbuns de um usuário. É este objeto que iremos manipular.</p>
<p>Para termos acessos a lista dos álbuns, podemos utilizar este objeto da seguinte forma:</p>
<p><pre class="brush: java;">
resultObj.getPhotosets().getPhotoset()
</pre></p>
<p>Este método retorna uma lista de álbuns.</p>
<p>Para testar, vamos listar na tela o id de todos os albuns do seu Flickr da seguinte forma:</p>
<p><pre class="brush: java;">
import org.netbeans.saas.flickr.FlickrPhotoService;
import org.netbeans.saas.RestResponse;

public class Main {

    public static void main(String[] args) {

        // início do código que será gerado -------------------------
        try {
            String userId = null;

            RestResponse result = FlickrPhotoService.photosetsGetList(userId);
            if (result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class) instanceof flickr.photoservice.flickrresponse.Rsp) {
                flickr.photoservice.flickrresponse.Rsp resultObj = result.getDataAsObject(flickr.photoservice.flickrresponse.Rsp.class);
                // listagem do id de todos os albuns
                for (int i = 0; i &lt; resultObj.getPhotosets().getPhotoset().size(); i++) {
                    System.out.println(&quot;Album com id = &quot; + resultObj.getPhotosets().getPhotoset().get(i).getId());
                }

            }
            //TODO - Uncomment the print Statement below to print result.
            //System.out.println(&quot;The SaasService returned: &quot;+result.getDataAsString());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        // fim do código que será gerado -------------------------------
    }
}
</pre></p>
<p>Antes de executar é necessário configurar o arquivo .properties responsável pela autenticação, utilizando a chave e o segredo que você pegou no Flickr. Este arquivo foi gerado automaticamente e se encontra no pacote <strong>org.netbeans.saas.flickr</strong> com o nome <strong>flickrphotoserviceauthenticator.properties</strong>. Preencha este arquivo com a sua chave e seu segredo.</p>
<p>Pronto, agora ao executar a sua classe será exibida esta tela:</p>
<p><a href="http://jamacedo.files.wordpress.com/2010/09/tut.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="tut" src="http://jamacedo.files.wordpress.com/2010/09/tut_thumb.png?w=521&#038;h=402" border="0" alt="tut" width="521" height="402" /></a></p>
<p>Antes de clicar em OK é necessário copiar o link e colar no navegador para que o site do Flickr dê a permissão para acessar seu serviço.</p>
<p>Ao executar o link no browser aparecerá a seguinte tela:</p>
<p><a href="http://jamacedo.files.wordpress.com/2010/09/tut2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="tut2" src="http://jamacedo.files.wordpress.com/2010/09/tut2_thumb.png?w=513&#038;h=395" border="0" alt="tut2" width="513" height="395" /></a></p>
<p>Escolha a opção <strong>OK, EU AUTORIZO </strong>e depois volte para a execução no Netbeans e clique em OK no JDialog de autorização.</p>
<p>Dessa forma seus álbuns serão listados no console do Netbeans.</p>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">Dicas</span></p>
<ul>
<li>O método <strong>photosets_getPhotos</strong> disponível no serviço é útil para buscar o id e título das fotos de um álbum, neste caso é necessário passar o id do album para conseguir utilizar o método.</li>
</ul>
<blockquote><p>A dica está na forma de acessar a lista de fotos. É necessário utilizar o objeto resultObj como é apresentado em seguida:</p></blockquote>
<p><pre class="brush: java;">
resultObj.getPhotoset().getPhoto().get(i).getId();
</pre></p>
<ul>
<li>O método <strong>photos_getInfo</strong> disponível no serviço encontra a descrição e o título de uma foto passando o id da foto. Para acessar essas informações você pode utilizar o objeto resultObj da seguinte forma:</li>
</ul>
<p><pre class="brush: java;">
resultObj.getPhoto().getDescription();
resultObj.getPhoto().getTitle();
</pre></p>
<ul>
<li>O método <strong>photos_getSizes</strong> disponível no serviço encontra as urls (uma para cada tamanho) de uma foto. O uso deste método precisa também do id da foto. Através dele você pode exibir as fotos na sua aplicação. O objeto <strong>resultObj</strong> deve ser utilizado da seguinte forma:</li>
</ul>
<p><pre class="brush: java;">
resultObj.getSizes().getSize().get(0).getSource();
resultObj.getSizes().getSize().get(1).getSource();
resultObj.getSizes().getSize().get(2).getSource();
resultObj.getSizes().getSize().get(3).getSource();
resultObj.getSizes().getSize().get(4).getSource();
</pre></p>
<blockquote><p>Cada posição da lista retornada é um tamanho diferente da foto.</p></blockquote>
<p><span style="color:#666666;font-family:Aharoni;font-size:large;">Conclusao</span></p>
<p>Este tutorial mostrou os passos necessários para acessarmos a API do Flickr.  Vimos como é simples consumir serviços com o auxilio do Netbeans. A partir deste tutorial você pode explorar outros serviços para construir diversos tipos de aplicações customizadas.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/294/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=294&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/09/30/consumindo-servios-do-flickr-com-java-no-netbeans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp_thumb2.png" medium="image">
			<media:title type="html">flickrRegistroApp</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/flickrregistroapp2_thumb1.png" medium="image">
			<media:title type="html">flickrRegistroApp2</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/abaservicos_thumb1.png" medium="image">
			<media:title type="html">abaservicos</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/turservicosflickr_thumb1.png" medium="image">
			<media:title type="html">turservicosflickr</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/tut_thumb.png" medium="image">
			<media:title type="html">tut</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/tut2_thumb.png" medium="image">
			<media:title type="html">tut2</media:title>
		</media:content>
	</item>
		<item>
		<title>CRUD JSF 2.0 + Hibernate: Parte 2&#8211; Utilizando a biblioteca Primefaces no Gerenciador de Livros</title>
		<link>http://jamacedo.wordpress.com/2010/09/13/crud-jsf-2-0-hibernate-parte-2-utilizando-a-biblioteca-primefaces-no-gerenciador-de-livros/</link>
		<comments>http://jamacedo.wordpress.com/2010/09/13/crud-jsf-2-0-hibernate-parte-2-utilizando-a-biblioteca-primefaces-no-gerenciador-de-livros/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 01:05:35 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Bibliotecas Java]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Prime Faces]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[biblioteca]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jsf 2]]></category>
		<category><![CDATA[primefaces]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=252</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Depois de algum tempo sem postar nada devido a adaptação ao Rio e a empresa que comecei a trabalhar, Concrete Solutions, volto com muitas ideias novas e tecnologias diferentes para compartilhar aqui no blog. Continuarei escrevendo sobre desenvolvimento java para web mas tratarei [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=252&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<p>Depois de algum tempo sem postar nada devido a adaptação ao Rio e a empresa que comecei a trabalhar, <a href="http://www.concretesolutions.com.br/">Concrete Solutions</a>, volto com muitas ideias novas e tecnologias diferentes para compartilhar aqui no blog. Continuarei escrevendo sobre desenvolvimento java para web mas tratarei também de assuntos como arquitetura orientada a serviço (SOA), projeto e análise de serviços, padrões de projeto empresariais, bibliotecas java script e assuntos referentes ao mercado de trabalho de tecnologia.</p>
<p>Vamos descrever neste artigo algumas mudanças no <a href="http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/">nosso CRUD JSF 2</a> para que ele passe a interagir com o usuário utilizando ajax, também vamos melhorar a interface do CRUD com a biblioteca de componentes JSF <a href="http://www.primefaces.org/">PrimeFaces</a>. Esta biblioteca de componentes foi uma das primeiras a dar suporte a nova versão do JSF, além de estar sendo constantemente melhorada pelo seu autor Cagatay Civici. Uma das últimas mudanças foi a possibilidade da escolha de <a href="http://www.primefaces.org/themes.html">diversos skins para os componentes</a>, assim como a possibilidade de utilização do suporte de criação de skin do jquery para gerar skins personalizados para os componentes do PrimeFaces através do <a href="http://jqueryui.com/themeroller/">ThemeRoller</a>. Utilizaremos skin também neste post.</p>
<p>O CRUD passará a ter a seguinte interface:</p>
<p><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0 initial initial;" title="novaInterfaceCRUD" src="http://jamacedo.files.wordpress.com/2010/09/novainterfacecrud_thumb.png?w=458&#038;h=352" border="0" alt="" width="458" height="352" /><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0 initial initial;" title="novaInterfaceCRUD2" src="http://jamacedo.files.wordpress.com/2010/09/novainterfacecrud2_thumb.png?w=456&#038;h=351" border="0" alt="" width="456" height="351" /></p>
<p><strong><span style="font-family:Arial;color:#666666;">Pré Requisitos:</span></strong></p>
<ul>
<li>Este post é uma continuação do <a href="http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/">CRUD JSF 2.0 + Hibernate – Exemplo Gerenciando Livros</a>, portanto é interessante que você acompanhe os passos inicias no CRUD para que entenda o que será alterado neste.</li>
<li>Biblioteca de componentes PrimeFaces disponível <a href="http://www.primefaces.org/downloads.html">aqui</a></li>
<li>Os demais pré requisitos estão descritos na <a href="http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/">primeira parte</a> do CRUD JSF 2</li>
</ul>
<p><span style="font-family:Arial;color:#666666;"><strong> </strong></span></p>
<p><span style="font-family:Arial;color:#666666;"><strong>Avisos:</strong></span></p>
<ul>
<li>O desenvolvimento dos códigos foi realizado no Netbeans 6.9, porém você pode utilizar a IDE de sua preferência para construir o CRUD. Os projeto disponíveis para download no fim do tutorial é executável no Netbeans.</li>
<li>A versão do PrimeFaces utilizada foi a 2.2, utilize esta ou uma superior.</li>
</ul>
<p><span style="font-family:Arial;color:#666666;"><strong>Adicionando e configurando a biblioteca PrimeFaces</strong></span></p>
<p>Após  <a href="http://repository.prime.com.tr/org/primefaces/primefaces/2.2.M1/primefaces-2.2.M1.jar">baixar</a> a biblioteca PrimeFaces você deve adicioná-la ao projeto do CRUD de Livros. Caso não tenha ainda o projeto, <a href="http://github.com/downloads/jamacedo/Gerencia-de-Livros/gerenciaLivrosJSFHibernate.zip">baixe-o por aqui</a> ou acompanhe a primeira paste do CRUD <a href="http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/">aqui</a>.</p>
<p>A configuração necessária para que o PrimeFaces funcione é ZERO, isso mesmo, não é necessário nenhuma configuração xml para começar a utiliza-lo, apenas a sua declaração na página que o utilizar. No nosso caso a página index.xhtml deverá conter a seguinte declaração:</p>
<p><pre class="brush: xml; pad-line-numbers: true;">
xmlns:p=&quot;http://primefaces.prime.com.tr/ui&quot;
</pre></p>
<p>Para que possa ser utilizado um skin diferente na página, é necessário a inserção do seguinte código no arquivo web.xml</p>
<p><pre class="brush: xml; pad-line-numbers: true;">
    &lt;context-param&gt;
        &lt;param-name&gt;primefaces.skin&lt;/param-name&gt;
        &lt;param-value&gt;none&lt;/param-value&gt;
    &lt;/context-param&gt;
</pre></p>
<p>Esta configuração remove o skin padrão do PrimeFaces e permite que outros skins possam ser usados, sendo que, a especificação ocorre na página através da adição da tag &lt;link&gt;. Você deve <a href="http://www.primefaces.org/themes/dot-luv.zip">clicar aqui</a> para baixar o skin que é utilizado nas modificações deste CRUD. A pasta do skin deve ser colocada na pasta web do seu projeto. E as páginas que forem utilizar o skin devem conter a seguinte chamada dentro da tag &lt;head&gt;:</p>
<p><pre class="brush: xml;">
&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;dot-luv/skin.css&quot; /&gt;
</pre></p>
<p><span style="font-family:Arial;color:#666666;"><strong>Porque utilizar ajax no nosso CRUD de Livros?</strong></span></p>
<p>O ajax é a maneira que foi encontrada para que não fosse necessário recarregar toda uma página quando houvesse algumas mudanças apenas em parte dela. O objetivo do uso de ajax é tornar as páginas web mais próximas de softwares desktop e com isso poder ter uma aplicação que não depende de uma máquina específica e que pode ser acessada de qualquer lugar. Isso implica também em um novo modelo de negócio que começa a se difundir cada vez mais chamado Software as a Service (SaaS), ou, Software como um Serviço, este modelo se baseia em oferecer um serviço a diversos usuários pela web. Para o usuário a diferença está em não pagar um alto custo inicial pelo software como no modelo tradicional, além de poder acessar seu aplicativo de qualquer lugar. Para a empresa desenvolvedora a diferença está no lucro que não virá de uma vez como no modelo tardicional e também na facilidade de manutenção e updates para os usuários, pois, precisará realizadar apenas uma vez. Acho que comecei a me desviar um pouco do foco então vamos voltar. Em outro momento oportuno escreverei sobre SaaS.</p>
<p><span style="font-family:Arial;color:#666666;"><strong>Utilizando os componentes PrimeFaces no CRUD</strong></span></p>
<p>Para melhorar a aparência do CRUD e adicionar a chamada assincrona por ajax aos métodos nós vamos adicionar alguns componentes da biblioteca PrimeFaces. Entre os componentes utilizados estão o layout, dataTable, commandLink, commandButton e o dialog.</p>
<p>Além de algumas mudanças nos códigos, nos descartaremos a página gerenciarLivro.xhtml e seu conteúdo irá para a página index.xhtml. Este conteúdo ficará dentro do componente dialog do primefaces e será chamado quando for necessário incluir ou alterar um livro.</p>
<p>Vamos ver como a página index.xhtml fica e depois vamos entender um poucos das mudanças realizadas.</p>
<p><pre class="brush: xml;">
&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
      xmlns:h=&quot;http://java.sun.com/jsf/html&quot;
      xmlns:f=&quot;http://java.sun.com/jsf/core&quot;
      xmlns:p=&quot;http://primefaces.prime.com.tr/ui&quot;&gt;
    &lt;h:head&gt;
        &lt;title&gt;Gerenciador de Livros&lt;/title&gt;
        &lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;dot-luv/skin.css&quot; /&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;p:layout fullPage=&quot;true&quot;&gt;
            &lt;p:layoutUnit position=&quot;left&quot; width=&quot;200&quot; header=&quot;Atividades&quot; resizable=&quot;true&quot; closable=&quot;true&quot; collapsible=&quot;true&quot;&gt;
                &lt;h:form prependId=&quot;false&quot;&gt;
                    &lt;p:commandLink value=&quot;Novo Livro&quot; actionListener=&quot;#{livroController.prepararAdicionarLivro}&quot; update=&quot;infosLivro&quot; oncomplete=&quot;dialogGerLivro.show()&quot;/&gt;
                &lt;/h:form&gt;
            &lt;/p:layoutUnit&gt;
            &lt;p:layoutUnit position=&quot;center&quot;&gt;
                &lt;h1&gt;Gerenciador de Livros&lt;/h1&gt;
                &lt;br/&gt;
                &lt;h:form prependId=&quot;false&quot;&gt;
                    &lt;p:dataTable id=&quot;tabela&quot; var=&quot;livro&quot; value=&quot;#{livroController.listarLivros}&quot;&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Título&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.titulo}&quot; /&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Autor&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.autor}&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Páginas&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.paginas}&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Editora&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.editora}&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Isbn&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.isbn}&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Avaliação&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:outputText value=&quot;#{livro.avaliacao}&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Alterar&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;p:commandButton actionListener=&quot;#{livroController.prepararAlterarLivro}&quot; value=&quot;Alterar&quot; update=&quot;infosLivro&quot; oncomplete=&quot;dialogGerLivro.show()&quot;/&gt;
                        &lt;/p:column&gt;
                        &lt;p:column&gt;
                            &lt;f:facet name=&quot;header&quot;&gt;
                                &lt;h:outputText value=&quot;Excluir&quot;/&gt;
                            &lt;/f:facet&gt;
                            &lt;h:commandLink action=&quot;#{livroController.excluirLivro}&quot; value=&quot;Excluir&quot;/&gt;
                        &lt;/p:column&gt;
                    &lt;/p:dataTable&gt;
                &lt;/h:form&gt;
            &lt;/p:layoutUnit&gt;
        &lt;/p:layout&gt;

        &lt;p:dialog header=&quot;Gerencia de Livro&quot; widgetVar=&quot;dialogGerLivro&quot;  resizable=&quot;false&quot; modal=&quot;true&quot; showEffect=&quot;slide&quot; width=&quot;500&quot;&gt;
            &lt;h:form prependId=&quot;false&quot;&gt;
                &lt;h:panelGrid id=&quot;infosLivro&quot; columns=&quot;2&quot; style=&quot;margin-bottom:10px&quot;&gt;

                    &lt;h:outputLabel for=&quot;titulo&quot; value=&quot;Título:&quot; /&gt;
                    &lt;h:inputText id=&quot;titulo&quot; value=&quot;#{livroController.livro.titulo}&quot;/&gt;

                    &lt;h:outputLabel for=&quot;autor&quot; value=&quot;Autor:&quot; /&gt;
                    &lt;h:inputText id=&quot;autor&quot; value=&quot;#{livroController.livro.autor}&quot;/&gt;

                    &lt;h:outputLabel for=&quot;paginas&quot; value=&quot;Páginas:&quot; /&gt;
                    &lt;h:inputText id=&quot;paginas&quot; value=&quot;#{livroController.livro.paginas}&quot;/&gt;

                    &lt;h:outputLabel for=&quot;editora&quot; value=&quot;Editora:&quot; /&gt;
                    &lt;h:inputText id=&quot;editora&quot; value=&quot;#{livroController.livro.editora}&quot;/&gt;

                    &lt;h:outputLabel for=&quot;isbn&quot; value=&quot;ISBN:&quot; /&gt;
                    &lt;h:inputText id=&quot;isbn&quot; value=&quot;#{livroController.livro.isbn}&quot;/&gt;

                    &lt;h:outputLabel for=&quot;avaliacao&quot; value=&quot;Avaliação:&quot; /&gt;
                    &lt;h:selectOneMenu id=&quot;avaliacao&quot; value=&quot;#{livroController.livro.avaliacao}&quot;&gt;
                        &lt;f:selectItem itemLabel=&quot;1&quot; itemValue=&quot;1&quot;/&gt;
                        &lt;f:selectItem itemLabel=&quot;2&quot; itemValue=&quot;2&quot;/&gt;
                        &lt;f:selectItem itemLabel=&quot;3&quot; itemValue=&quot;3&quot;/&gt;
                        &lt;f:selectItem itemLabel=&quot;4&quot; itemValue=&quot;4&quot;/&gt;
                        &lt;f:selectItem itemLabel=&quot;5&quot; itemValue=&quot;5&quot;/&gt;
                    &lt;/h:selectOneMenu&gt;

                    &lt;p:commandButton update=&quot;tabela&quot; oncomplete=&quot;dialogGerLivro.hide();&quot; actionListener=&quot;#{livroController.adicionarLivro}&quot; value=&quot;Inserir Livro&quot;/&gt;
                    &lt;p:commandButton update=&quot;tabela&quot; oncomplete=&quot;dialogGerLivro.hide();&quot; actionListener=&quot;#{livroController.alterarLivro}&quot; value=&quot;Alterar Livro&quot;/&gt;

                &lt;/h:panelGrid&gt;
            &lt;/h:form&gt;
        &lt;/p:dialog&gt;

    &lt;/h:body&gt;
&lt;/html&gt;
</pre></p>
<p><span style="font-family:Arial;color:#666666;"><strong> </strong></span></p>
<p>O componente layout contém um subcomponente chamado layoutUnit. Nas configurações deste subcomponente nós informamos onde o código que estiver dentro dele vai se localizar na página. Por exemplo utilizando o position=”left” estamos falando que todo código dentro dete componente ficará do lado esquerdo da tela. Além disso, definimos a configuração fullPage do layout como true, o que faz o layout preencher toda a tela do browser.</p>
<p>A principal mudança do dataTable está na troca dos componentes padrões do jsf pelo dataTable do primefaces. Isso permite que a tabela seja renderizada e seja alterada com o uso do skin, além de muitas outras funcionalidades que não serão abordadas neste post. O dataTable passou a ter um id que serve para identifica-lo para que  fosse possível atualizar a tabela por ajax.</p>
<p>Os commandLinks e os commandButtons tiveram grandes alterações, pois é através deles que as chamadas ajax são realizadas. Vamos ver as principais mudanças:</p>
<ul>
<li>Troca do action pelo actionListener: esta troca é necessária porque não vamos mais carregar outra página após a execução de um método no servidor. Nós vamos executar os métodos no servidor e depois apenas atualizar os componentes que sofreram mudanças com a execução do método.</li>
<li>O uso do atributo update informa quais componentes deverão ser renderizados novamente após a execução do actionListener, com isso o usuário passa a ter a sensação que está utilizando um programa desktop e não simplismente acessando um site.</li>
<li>O atributo onComplete serve para ativar o dialog que apresenta as informações de um livro para alterações ou inclusões. A ativação do dialog só ocorre após a execução do método que estiver definido no actionListener e também após a renderização dos componentes que estão na variável update.</li>
</ul>
<p>O componente dialog permite a criação de uma janela modal que pode ser arrastada pela tela e torna a aplicação mais próxima ainda de aplicações desktop, pelo fato das janelas serem comuns nas aplicações desktop. Uma variável importante deste componente é o widgetVar que serve para definir um nome para o dialog. Com este nome o dialog pode ser apresentado ou escondido na tela através das funções javascript nomeDoDialog.show() e nomeDoDialog.hide(), respectivamente.</p>
<p>Estas são as informações importantes para compreender as mudanças realizadas nas páginas xhtml. Agora vamos ver como a classe  LivroController.java deve ficar para que tudo funcione corretamente.</p>
<p><pre class="brush: java;">
package Controller;

import Dao.LivroDao;
import Dao.LivroDaoImp;
import Model.Livro;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 * @author José Alexandre
 */
@ManagedBean
@SessionScoped
public class LivroController {

    private Livro livro;
    private DataModel listaLivros;

    public DataModel getListarLivros() {
        List&lt;Livro&gt; lista = new LivroDaoImp().list();
        listaLivros = new ListDataModel(lista);
        return listaLivros;
    }

    public Livro getLivro() {
        return livro;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }

    public void prepararAdicionarLivro(ActionEvent actionEvent){
        livro = new Livro();
    }

    public void prepararAlterarLivro(ActionEvent actionEvent){
        livro = (Livro)(listaLivros.getRowData());
    }

    public String excluirLivro(){

        Livro livroTemp = (Livro)(listaLivros.getRowData());
        LivroDao dao = new LivroDaoImp();
        dao.remove(livroTemp);
        return &quot;index&quot;;

    }

    public void adicionarLivro(ActionEvent actionEvent){

        LivroDao dao = new LivroDaoImp();
        dao.save(livro);

    }

    public void alterarLivro(ActionEvent actionEvent){

        LivroDao dao = new LivroDaoImp();
        dao.update(livro);

    }

}
</pre></p>
<p>A mudança realizada nesta classe está nos métodos deixarem de retornar uma String com a página de destino. Eles passam a não retornar nada e também passam a receber como parâmetro um objeto ActionEvent. Isso acontece porque o objetivo agora é apenas realizar algumas mudanças no servidor e depois atualizar somente algumas partes da página através de ajax.</p>
<p>Essas foram as mudanças necessárias no CRUD para que ele passasse a utilizar ajax e alguns dos componentes da biblioteca primefaces.</p>
<p><span style="font-family:Arial;color:#666666;"><strong>Conclusão</strong></span></p>
<p><span style="font-family:Arial;color:#666666;"><strong> </strong></span></p>
<p><strong><span style="font-family:Arial;color:#666666;"> </span></strong></p>
<p>Podemos notar que com poucas mudanças tivemos um ganho enorme com relação a usabilidade e aparência do CRUD. A partir deste CRUD o usuário pode começar a explorar os diversos outros componentes disponibilizados pelo primefaces, <a href="http://www.primefaces.org/showcase">veja aqui os demos de todos eles</a>, lembrando que existem também outras bibliotecas de componentes que o usuário pode conhecer e que podem atender melhor as necessidades de componentes de acordo com o caso.</p>
<p>Espero que tenham aproveitado e entendido o funcionamento do uso dos componentes primefaces e do ajax!</p>
<p>Por hoje é só e até a próxima! Qualquer dúvida estou a disposição!</p>
<p><span style="font-family:Arial;color:#666666;"><strong> </strong></span></p>
<p><span style="font-family:Arial;color:#666666;"><strong> </strong></span></p>
<p><strong><span style="font-family:Arial;color:#666666;"> </span></strong></p>
<p><strong><span style="font-family:Arial;color:#666666;">Download</span></strong></p>
<p>Para baixar o código fonte compatível com Netbeans <a href="http://github.com/downloads/jamacedo/Gerencia-de-Livros/Geliv.zip">clique aqui</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/252/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=252&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/09/13/crud-jsf-2-0-hibernate-parte-2-utilizando-a-biblioteca-primefaces-no-gerenciador-de-livros/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/novainterfacecrud_thumb.png" medium="image">
			<media:title type="html">novaInterfaceCRUD</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/09/novainterfacecrud2_thumb.png" medium="image">
			<media:title type="html">novaInterfaceCRUD2</media:title>
		</media:content>
	</item>
		<item>
		<title>Minha Monografia &#8211; Máquina de Comitê para Previsão do Preço Médio Diário das Ações da BOVESPA</title>
		<link>http://jamacedo.wordpress.com/2010/07/15/minha-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/</link>
		<comments>http://jamacedo.wordpress.com/2010/07/15/minha-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 22:18:36 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Máquinas de Comitê]]></category>
		<category><![CDATA[Pesquisa Científica]]></category>
		<category><![CDATA[bolsa de valores]]></category>
		<category><![CDATA[mercado de ações]]></category>
		<category><![CDATA[programação genética]]></category>
		<category><![CDATA[regressão linear]]></category>
		<category><![CDATA[rna]]></category>

		<guid isPermaLink="false">http://jamacedo.wordpress.com/?p=201</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Depois de tanto trabalho a minha monografia finalmente foi finalizada, revisada e entregue ao BCC ( Bacharelado de Ciência da Computação) da Unifal. Abaixo segue o resumo do trabalho: O mercado de ações brasileiro, representado pela BOVESPA, é uma fonte de renda variável [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=201&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<p>Depois de tanto trabalho a minha monografia finalmente foi finalizada, revisada e entregue ao BCC ( Bacharelado de Ciência da Computação) da Unifal.</p>
<p>Abaixo segue o resumo do trabalho:</p>
<p>O mercado de ações brasileiro, representado pela BOVESPA, é uma fonte de renda variável que está em crescimento no Brasil onde, com cautela e estratégias corretas, é possível obter bons lucros. Entretanto, sua natureza complexa e a falta de conhecimento podem gerar prejuízos irrecuperáveis. Com isso, estratégias que auxiliem as negociações realizando previsões dos preços das ações podem ajudar as pessoas que possuem dificuldade na análise de mercado, além de possibilitar lucros maiores com a utilização de algoritmos de Inteligência Artificial que usam dados passados do mercado acionário para predizer os preços futuros das ações. Esta monografia tem como objetivo verificar se a utilização de máquinas de comitê para a previsão do preço médio diário das ações, que combinam os resultados de diversos modelos de previsão, geram resultados melhores ou no mínimo tão bons quanto os resultados dos melhores previsores. Além disso, esta monografia define um sistema <em>online</em> para apoio à decisão ao investidor que pode ser utilizado com qualquer modelo ou técnica computacional de previsão para apresentar aos investidores sugestões de compra e venda diárias de ação e para tornar possível o acompanhamento dos lucros dos papéis que o investidor tenha em sua carteira.</p>
<p>O trabalho completo pode ser acessado no link abaixo.</p>
<p><a title="Monografia - Maquina de Comite para Previsão do Preço Médio Diário das Ações" href="http://issuu.com/jamacedo/docs/monografia_jamacedo" target="_blank">Visualize aqui a Monografia</a></p>
<p>Agradeço mais uma vez a todos que tornaram possível a conclusão!</p>
<p>Abraços!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=201&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/07/15/minha-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>
	</item>
		<item>
		<title>Apresentação da Monografia &#8211; Máquina de Comitê para previsão do preço médio diário das ações da BOVESPA</title>
		<link>http://jamacedo.wordpress.com/2010/07/04/apresentacao-da-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/</link>
		<comments>http://jamacedo.wordpress.com/2010/07/04/apresentacao-da-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 00:48:34 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Máquinas de Comitê]]></category>
		<category><![CDATA[Pesquisa Científica]]></category>
		<category><![CDATA[bovespa]]></category>
		<category><![CDATA[máquina de comitê]]></category>
		<category><![CDATA[previsão de séries temporais]]></category>
		<category><![CDATA[programação genética]]></category>
		<category><![CDATA[regressão linear]]></category>
		<category><![CDATA[rna]]></category>
		<category><![CDATA[sistema online]]></category>

		<guid isPermaLink="false">http://jamacedo.wordpress.com/?p=193</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Estas últimas semanas foram de muita correria para finalizar a monografia e apresentá-la na última quinta (1/7/2010) para a banca examinadora. A banca foi composta por professores da Unifal, sendo dois doutores, um da Economia (prof. Marcelo Lacerda Rezende) e outro de otimização [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=193&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<p>Estas últimas semanas foram de muita correria para finalizar a monografia e apresentá-la na última quinta (1/7/2010) para a banca examinadora. A banca foi composta por professores da Unifal, sendo dois doutores, um da Economia (prof. Marcelo Lacerda Rezende) e outro de otimização (prof. Marcos de Mendonça Passini), além do meu orientador prof. Humberto César Brandão de Oliveira.</p>
<p>A apresentação da monografia não é como qualquer outra apresentação, pois não é só uma apresentação, é uma defesa. E se é uma defesa logo se supõe que deve haver um ataque! O que acaba tornando tudo mais tenso. Mesmo treinando diversas vezes antes de apresentar, é difícil esconder totalmente o nervosismo.</p>
<p>No final ocorreu tudo bem e valeu a pena todo o esforço ao ouvir os  elogios da banca. Logicamente que foram definidas algumas correções para fechar o trabalho, coisa que se resolve em pouco tempo!</p>
<p>Em seguida segue a minha apresentação, após as correções, postarei a monografia também.</p>
<iframe src='http://www.slideshare.net/slideshow/embed_code/4678345' width='510' height='418'></iframe>
<p>Agradeço mais uma vez ao meu orientador, à banca examinadora e a todos que ajudaram a tornar este trabalho possível!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/193/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=193&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/07/04/apresentacao-da-monografia-maquina-de-comite-para-previsao-do-preco-medio-diario-das-acoes-da-bovespa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>
	</item>
		<item>
		<title>Adicionando Rich Faces 3.3.3 no JSF 2.0</title>
		<link>http://jamacedo.wordpress.com/2010/06/23/adicionando-rich-faces-3-3-3-no-jsf-2-0/</link>
		<comments>http://jamacedo.wordpress.com/2010/06/23/adicionando-rich-faces-3-3-3-no-jsf-2-0/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 14:46:14 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[Rich Faces]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jsf 2]]></category>
		<category><![CDATA[richfaces 3.3.3]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=182</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! A biblioteca de componentes RichFaces para JSF é a mais utilizada atualmente, entretanto sua versão estável mais recente, a 3.3.3,  não possui compatibilidade total com a nova versão do JSF. Apesar disso, é possível utilizar os dois juntos realizando algumas modificações e adicionando [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=182&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;text-align:center;margin:0;padding:0;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</div>
<p>A biblioteca de componentes RichFaces para JSF é a mais utilizada atualmente, entretanto sua versão estável mais recente, a 3.3.3,  não possui compatibilidade total com a nova versão do JSF. Apesar disso, é possível utilizar os dois juntos realizando algumas modificações e adicionando algumas bibliotecas a mais. Não sei até que ponto a utilização do RichFaces com JSF 2.0 vale a pena devido a não ter 100% de compatibilidade… mas para realização de testes e experimentos com certeza vale!</p>
<p>Então vamos lá!</p>
<p>As bibliotecas necessárias, além das bibliotecas do JSF 2.0, para utilizar o RichFaces 3.3.3 são:</p>
<p>- Biblioteca RichFaces 3.3.3 (<a href="http://downloads.jboss.org/richfaces/releases/3.3.X/3.3.3.Final/richfaces-ui-3.3.3.Final-bin.zip">download</a>)</p>
<p>- Os 4 commons a seguir (<a href="http://github.com/downloads/jamacedo/Gerencia-de-Livros/dependenciesRichFaces3.3.3.zip">download</a>):</p>
<p>-commons-beanutils.jar</p>
<p>-commons-collections.jar</p>
<p>-commons-digester.jar</p>
<p>-commons-logging.jar</p>
<p>Um detalhe importante é que os facelets também não possuem total compatibilidade com o RichFaces 3.3.3, então é indicado a utilização de páginas jsp na camada de visão para que a adição do RichFaces 3.3.3 no JSF 2 funcione.</p>
<p>O arquivo web.xml deve ficar configurado de acordo com exemplo abaixo:</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:1bdc8680-be84-4280-812f-5fe8821ebb7e" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml; pad-line-numbers: true;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app version=&quot;2.5&quot; xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;&gt;
    &lt;context-param&gt;
        &lt;param-name&gt;javax.faces.PROJECT_STAGE&lt;/param-name&gt;
        &lt;param-value&gt;Development&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;servlet&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;session-config&gt;
        &lt;session-timeout&gt;
            30
        &lt;/session-timeout&gt;
    &lt;/session-config&gt;
    &lt;welcome-file-list&gt;
        &lt;welcome-file&gt;faces/index.jsp&lt;/welcome-file&gt;
    &lt;/welcome-file-list&gt;

    &lt;context-param&gt;
        &lt;param-name&gt;org.richfaces.SKIN&lt;/param-name&gt;
        &lt;param-value&gt;blueSky&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;context-param&gt;
        &lt;param-name&gt;org.richfaces.CONTROL_SKINNING&lt;/param-name&gt;
        &lt;param-value&gt;enable&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;filter&gt;
        &lt;display-name&gt;RichFaces Filter&lt;/display-name&gt;
        &lt;filter-name&gt;richfaces&lt;/filter-name&gt;
        &lt;filter-class&gt;org.ajax4jsf.Filter&lt;/filter-class&gt;
    &lt;/filter&gt;
    &lt;filter-mapping&gt;
        &lt;filter-name&gt;richfaces&lt;/filter-name&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;
        &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;
        &lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;
    &lt;/filter-mapping&gt;
    &lt;listener&gt;
        &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
    &lt;/listener&gt;
&lt;/web-app&gt;
</pre></p>
</div>
<p>As configurações para que o richfaces funcione são estas. Para testa-las vamos criar um exemplo simples onde será necessário a criação de uma página jsp e de um bean simples.</p>
<p>O bean será chamado User e  ira conter apenas um atributo name. No final sua classe deve ficar desta maneira:</p>
<p>User.java</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:8548afc9-0486-416b-9b18-247d2ba0e194" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java;">
import javax.faces.bean.ManagedBean;

@ManagedBean
public class User {

    String name;

    public User() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
</pre></p>
</div>
<p>A página jsp deve incluir as bibliotecas do richfaces e devem conter a execução de um exemplo. No final a página ficará assim:</p>
<p>index.jsp</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:ed698c4c-5193-4360-a9d7-5d9a92a9aefe" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;%@page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@taglib prefix=&quot;f&quot; uri=&quot;http://java.sun.com/jsf/core&quot;%&gt;
&lt;%@taglib prefix=&quot;h&quot; uri=&quot;http://java.sun.com/jsf/html&quot;%&gt;
&lt;!-- Declaração das Tags da biblioteca RichFaces --&gt;
&lt;%@ taglib uri=&quot;http://richfaces.org/a4j&quot; prefix=&quot;a4j&quot;%&gt;
&lt;%@ taglib uri=&quot;http://richfaces.org/rich&quot; prefix=&quot;rich&quot;%&gt;

&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;
    &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/&gt;
        &lt;title&gt;Exemplo JSF 2.0 + RichFaces 3.3.3&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;f:view&gt;
            &lt;h1&gt;&lt;h:outputText value=&quot;Java Server Faces 2.0 + RichFaces 3.3.3&quot;/&gt;&lt;/h1&gt;

            &lt;a4j:form&gt;
                &lt;rich:panel header=&quot;RichFaces 3.3.3 Exemplo&quot; style=&quot;width: 315px&quot;&gt;
                    &lt;h:outputText value=&quot;Seu nome: &quot; /&gt;
                    &lt;h:inputText value=&quot;#{user.name}&quot; &gt;
                        &lt;f:validateLength minimum=&quot;1&quot; maximum=&quot;30&quot; /&gt;
                    &lt;/h:inputText&gt;
                    &lt;a4j:commandButton value=&quot;Enviar&quot; reRender=&quot;painelResposta&quot; /&gt;
                    &lt;br/&gt;
                    &lt;h:panelGroup id=&quot;painelResposta&quot; &gt;
                        &lt;h:outputText value=&quot;Olá, &quot; rendered=&quot;#{not empty user.name}&quot; /&gt;
                        &lt;h:outputText value=&quot;#{user.name}&quot; /&gt;
                        &lt;h:outputText value=&quot;!&quot; rendered=&quot;#{not empty user.name}&quot; /&gt;
                    &lt;/h:panelGroup&gt;
                &lt;/rich:panel&gt;
            &lt;/a4j:form&gt;
        &lt;/f:view&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre></p>
</div>
<p>Após a criação da classe e da página o projeto pode ser executado e deve mostrar no browser o seguinte:</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;border:0 initial initial;" title="jsf2richfaces3.3.3" src="http://jamacedo.files.wordpress.com/2010/06/jsf2richfaces3-3-3_thumb.png?w=509&#038;h=172" border="0" alt="jsf2richfaces3.3.3" width="509" height="172" /></p>
<p>Por hoje é só pessoal!</p>
<p>Enquanto não sai a versão 4.0 do richfaces surge a necessidade para quem deseja utilizar JSF 2 com RichFaces de adaptar a essas condições!</p>
<p>Abraços e qualquer coisa estamos ai!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/182/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=182&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/06/23/adicionando-rich-faces-3-3-3-no-jsf-2-0/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/06/jsf2richfaces3-3-3_thumb.png" medium="image">
			<media:title type="html">jsf2richfaces3.3.3</media:title>
		</media:content>
	</item>
		<item>
		<title>Modelando objetos com cores &#8211; UML em cores</title>
		<link>http://jamacedo.wordpress.com/2010/06/11/modelando-objetos-com-cores-uml-em-cores/</link>
		<comments>http://jamacedo.wordpress.com/2010/06/11/modelando-objetos-com-cores-uml-em-cores/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 12:17:00 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Modelagem]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[modelagem com cores]]></category>
		<category><![CDATA[uml em cores]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=177</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Ontem lendo um post do Diego Pacheco na Imasters conheci uma técnica muito interessante de modelagem chamada UML em cores. Esta técnica utiliza 4 cores diferentes para identificar e definir as classes necessárias para um sistema. Em seguida vou descrever a técnica que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=177&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;text-align:center;margin:0;padding:0;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</div>
<p>Ontem lendo um <a href="http://imasters.uol.com.br/artigo/17170">post</a> do Diego Pacheco na <a href="http://imasters.uol.com.br/">Imasters</a> conheci uma técnica muito interessante de modelagem chamada UML em cores. Esta técnica utiliza 4 cores diferentes para identificar e definir as classes necessárias para um sistema. Em seguida vou descrever a técnica que pode ser muito útil durante o processo de modelagem do software.</p>
<p>As cores tornam os diagramas mais legíveis e passam mais informações referentes ao problema que está sendo modelado. Porem somente a definição de cores não é uma novidade, pois, diagramas de entidade e relacionamento já usavam antes da UML as cores para identificar áreas em comuns das tabelas. A novidade está em um padrão para definir estas cores de acordo com métodos e atributos adequados para cada uma.</p>
<p>Na maioria dos sistemas desenvolvidos diversos problemas sempre aparecem nas modelagens, como por exemplo, transações comerciais ou iterações de vendas, encomendas, aluguel, reserva, agendamento de eventos entre outros. As semelhanças entre todas as classes de uma destas categorias geralmente não são suficientemente para serem generalizadas em uma interface Java. No entanto, as semelhanças estão próximas o suficiente para poder ajudar a orientar a escolha e definição de classes em nossos desenhos.</p>
<p><strong>Idealização…</strong></p>
<p>Utilizado pela primeira vez em um grande projeto software em Singapura, em 1997, Peter Coad e seus colegas perceberam que as classes seguiam um padrão de relacionamento entre si, chamado de <em>archetypes </em>(arquétipos), então durante alguns anos eles pesquisaram e refinaram a técnica até lançarem em 1999 o livro <em><a href="http://www.step-10.com/Books/JMCUBook.html">Java Modeling in Color with UML</a>.</em></p>
<p><strong>Arquétipos…</strong></p>
<p>Cada uma das cores definidas, rosa, amarelo, verde e azul, identificam um arquétipo como pode ser visto na Figura 1.</p>
<p><a href="http://knol.google.com/k/-/-/3e0t9wv30hso7/z36pvp/fourclassarchetypeslinkedbare.jpg"><img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://knol.google.com/k/-/-/3e0t9wv30hso7/z36pvp/fourclassarchetypeslinkedbare.jpg" alt="" /></a><br />
<strong>Figura 1 -</strong> Arquétipos definidos</p>
<p>Os quatro arquétipos são descritos abaixo:</p>
<ul>
<li><strong>Moment-Interval</strong> (momento ou intervalo): Representado por atividades, eventos, serviços ou coisas que precisam ser registradas. Uma venda, um objeto que guarda outro temporariamente, como Sessão, são exemplos. Outros exemplos incluem venda, locação, ordem, viagem, vôo, reunião, reserva, sensor reading, etc.</li>
<li><strong>Role</strong> (papel): São os papéis. Exemplos do seu uso são: Funcionário, Fornecedor, Vendedor, Segurança, Atendente etc.</li>
<li><strong>Party,Place,Thing </strong>(pessoa, lugar, coisa ou objeto): São as classes do modelo que são tangíveis e unicamente identificáveis. Esse arquétipo atua em um evento, serviço ou momento. Exemplos seriam cadastros e relatórios.</li>
<li><strong>Description (descrição): </strong>Pode ser um catálogo ou um conjunto de rótulos de um objeto. São os dados de referências que utilizamos em combos, lookups e lists.</li>
</ul>
<p>Para saber mais sobre os arquétipos <a href="http://knol.google.com/k/object-modelling-in-colour#">leia este artigo</a> de Sthefen Palmer.</p>
<p><strong>Mais do que cores…</strong></p>
<p>A UML em cores é mais do que colorir classes, ele propõe métodos e atributos que são comuns para cada arquétipo, como exemplo, o arquétipo Moment-Interval sempre terá um método para calcular valor ou calcular total. Um arquétipo Descripition pode fornecer um método que calcule a quantidade disponível de um item (estoque de um produto)</p>
<p>Com a experiência adquirida após algumas modelagens é mais fácil  notar essas recorrências. O que é recomendado é estar sempre anotando suas observações para que com o tempo você monte seu próprio diagrama com os padrões de ocorrência baseado nos arquétipos básicos definidos.</p>
<p><strong>Conclusão</strong></p>
<p>A técnica apesar de não ser tão nova pode ser muito útil para a modelagem de sistemas, pois de certa forma já existe um caminho para encaixar o problema que está sendo modelado, tornando mais intuitivo o desenvolvimento dos diagramas necessários. Além disso, os “papeis autocolantes” que são comumente encontrados em papelarias, possuem as mesmas cores utlizadas nesta técnica, o que facilita seu uso durante a modelagem inicial!</p>
<p><strong>Referencias</strong></p>
<p><a href="http://edn.embarcadero.com/article/33737">http://edn.embarcadero.com/article/33737</a></p>
<p><a href="http://knol.google.com/k/object-modelling-in-colour#">http://knol.google.com/k/object-modelling-in-colour#</a></p>
<p><a href="http://imasters.uol.com.br/artigo/17170">http://imasters.uol.com.br/artigo/17170</a></p>
<p>Espero que quem não conhecia a técnica tenha aprendido alguma coisa e que quando houver a necessidade ela seje útil, se tornando mais uma carta na manga para os analistas!</p>
<p>Abraços!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/177/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=177&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/06/11/modelando-objetos-com-cores-uml-em-cores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://knol.google.com/k/-/-/3e0t9wv30hso7/z36pvp/fourclassarchetypeslinkedbare.jpg" medium="image" />
	</item>
		<item>
		<title>CRUD JSF 2.0 + Hibernate &#8211; Exemplo Gerenciando Livros</title>
		<link>http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/</link>
		<comments>http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 21:56:34 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Server Faces]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[datamodel]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jsf 2.0]]></category>

		<guid isPermaLink="false">https://jamacedo.wordpress.com/?p=163</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Bom dia a todos! Hoje vou apresentar todos os passos necessários para a construção de um CRUD (Create, Read, Update and Delete) utilizando Java Server Faces 2.0 para facilitar a criação das páginas e a comunicação destas com as classes Java e Hibernate [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=163&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;text-align:center;margin:0;padding:0;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</div>
<p>Bom dia a todos!</p>
<p>Hoje vou apresentar todos os passos necessários para a construção de um CRUD (Create, Read, Update and Delete) utilizando Java Server Faces 2.0 para facilitar a criação das páginas e a comunicação destas com as classes Java e Hibernate para realizar a persistência dos dados.</p>
<p>Para o desenvolvimento eu utilizei o Netbeans 6.8 que já conta com suporte ao JSF 2.0 e ao Hibernate 3 facilitando o trabalho de baixar os frameworks e coloca-los no projeto, porém, fica a cargo do desenvolvedor escolher a IDE de sua preferência para a criação!</p>
<p>O exemplo para a criação do CRUD será dado através da gerencia de livros, um exemplo simples mas capaz de mostrar como as operações básicas de um sistema podem ser efetuadas com JSF.</p>
<p>A segunda parte deste CRUD com utilização de ajax e da biblioteca de componentes PrimeFaces está <a href="http://jamacedo.wordpress.com/2010/09/13/crud-jsf-2-0-hibernate-parte-2-utilizando-a-biblioteca-primefaces-no-gerenciador-de-livros/" target="_blank">disponível aqui</a>!</p>
<p><strong>Pré Requisitos</strong></p>
<p>- <a href="http://www.netbeans.org/">Netbeans</a> ou <a href="http://www.eclipse.org/">Eclipse</a></p>
<p>- <a href="https://javaserverfaces.dev.java.net/">JSF 2.0</a></p>
<p>- <a href="http://sourceforge.net/projects/hibernate/files/hibernate3/">Hibernate 3</a></p>
<p>- MySQL</p>
<p><strong>Estrutura do CRUD</strong></p>
<p>O nosso CRUD segue o padrão MVC para programação Web, separando as classes em camadas de acordo com a responsabilidade de cada uma. Abaixo é apresentada a estrutura que criaremos onde Dao, Model, Controller e View serão pacotes do projeto.</p>
<p><img style="display:block;margin-left:auto;margin-right:auto;border:0 initial initial;" title="estrutura" src="http://jamacedo.files.wordpress.com/2010/06/imagem1_thumb1.png?w=461&#038;h=121" border="0" alt="" width="461" height="121" /></p>
<p>Cada livro no CRUD terá as seguintes informações: título, autor, páginas, editora, isbn e avaliação que serão mantidas no banco de dados.</p>
<p><strong> </strong></p>
<p><strong>Criando o Banco de Dados&#8230;</strong></p>
<p>O CRUD utilizará Banco de Dados MySQL, para isso, crie um squema e uma tabela no seu banco como está descrito abaixo.</p>
<p><span style="text-decoration:underline;">Squema</span></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:e39c5a95-e553-4e9a-ab21-3fb2018d256c" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: sql; pad-line-numbers: true;">
CREATE DATABASE IF NOT EXISTS livraria;
</pre></p>
</div>
<p><span style="text-decoration:underline;">Tabela</span></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:d6bdc8b9-a6cc-4b4e-8453-8790384cb6f5" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: sql;">
CREATE TABLE `livro` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`autor` varchar(255) DEFAULT NULL,
`avaliacao` int(11) NOT NULL,
`editora` varchar(255) DEFAULT NULL,
`isbn` varchar(255) DEFAULT NULL,
`paginas` int(11) NOT NULL,
`titulo` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
</pre></p>
</div>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Criando as Camadas&#8230;</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong>Model</strong></p>
<p>O pacote Model do projeto deve conter uma classe chamada Livro que será um POJO (Plain Old Java Object) com as annotations do hibernate necessárias para utilização do framework. A classe deve ficar de acordo com esta:</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:882c6cfc-599a-4b92-ac87-991a16a3c9fc" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java; pad-line-numbers: true;">
package Model;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

/**
*
* @author José Alexandre
*/
@Entity
public class Livro implements Serializable {

@Id
@GeneratedValue
private long id;
private String titulo;
private String autor;
private int paginas;
private String editora;
private String isbn;
private int avaliacao;

public Livro() {
}

public Livro(long id, String titulo, String autor, int paginas, String editora, String isbn, int avaliacao) {
this.id = id;
this.titulo = titulo;
this.autor = autor;
this.paginas = paginas;
this.editora = editora;
this.isbn = isbn;
this.avaliacao = avaliacao;
}

public String getAutor() {
return autor;
}

public void setAutor(String autor) {
this.autor = autor;
}

public int getAvaliacao() {
return avaliacao;
}

public void setAvaliacao(int avaliacao) {
this.avaliacao = avaliacao;
}

public String getEditora() {
return editora;
}

public void setEditora(String editora) {
this.editora = editora;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getIsbn() {
return isbn;
}

public void setIsbn(String isbn) {
this.isbn = isbn;
}

public int getPaginas() {
return paginas;
}

public void setPaginas(int paginas) {
this.paginas = paginas;
}

public String getTitulo() {
return titulo;
}

public void setTitulo(String titulo) {
this.titulo = titulo;
}

}
</pre></p>
</div>
<p><strong>Dao</strong></p>
<p>O pacote Dao vai realizar a comunicação com o banco utilizando o hibernate para salvar, listar alterar e excluir livros. Dentro deste pacote, deve ser criada uma interface chamada LivroDao, uma classe chamada LivroDaoImp e uma classe chamada HibernateUtil (realizará a conexão com o banco) da mesma forma que estas:</p>
<p><strong> </strong></p>
<p><span style="text-decoration:underline;">Interface LivroDao</span></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:d7c6d22a-c07c-4604-8d31-389adc8d5a4b" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java;">
package Dao;

import Model.Livro;
import java.util.List;

/**
 *
 * @author José Alexandre
 */
public interface LivroDao {

    public void save(Livro livro);
    public Livro getLivro(long id);
    public List&lt;Livro&gt; list();
    public void remove(Livro livro);
    public void update(Livro livro);

}

</pre></p>
</div>
<p><strong> </strong></p>
<p><span style="text-decoration:underline;">Classe LivroDaoImp</span></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:e248a774-b81d-43d3-89b1-fad97be23b4e" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java;">
package Dao;

import Model.Livro;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author José Alexandre
 */
public class LivroDaoImp implements LivroDao {

    public void save(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(livro);
        t.commit();
    }
    public Livro getLivro(long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (Livro) session.load(Livro.class, id);
    }
    public List&lt;Livro&gt; list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery(&quot;from Livro&quot;).list();
        t.commit();
        return lista;
    }
    public void remove(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(livro);
        t.commit();
    }
    public void update(Livro livro) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(livro);
        t.commit();
    }
}
</pre></p>
</div>
<p><span style="text-decoration:underline;">Classe HibernateUtil</span></p>
<p><strong> </strong></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:00788362-577e-48dc-bbcd-6f0069517a4c" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java;">
package Utils;

import Model.Livro;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

/**
 * Hibernate Utility class with a convenient method to get Session Factory object.
 *
 * @author José Alexandre
 */
public class HibernateUtil {

    private static SessionFactory sessionFactory;

    private HibernateUtil() {
    }

    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            try {
                // Create the SessionFactory from standard (hibernate.cfg.xml)
                // config file.
                AnnotationConfiguration ac = new AnnotationConfiguration();
                ac.addAnnotatedClass(Livro.class);
                sessionFactory = ac.configure().buildSessionFactory();
            } catch (Throwable ex) {
                // Log the exception.
                System.err.println(&quot;Initial SessionFactory creation failed.&quot; + ex);
                throw new ExceptionInInitializerError(ex);
            }
            return sessionFactory;
        } else {
            return sessionFactory;
        }
    }
</pre></p>
</div>
<p><strong> </strong></p>
<p><strong>Control</strong><strong>ler</strong></p>
<p>O pacote Controller vai realizar a comunicação da Camada de Visão representada por nossas páginas JSF com o banco de dados sendo responsável por realizar as operações requisitadas nas páginas JSF e em seguida encaminhar o usuário para uma página. A classe a ser criada deve chamar LivroController e precisa ser escrita dessa forma:</p>
<p><strong> </strong></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:a34451b0-a829-4f65-b9d5-28aae86d85aa" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: java;">
package Controller;

import Dao.LivroDao;
import Dao.LivroDaoImp;
import Model.Livro;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author José Alexandre
 */
@ManagedBean
@SessionScoped
public class LivroController {

    private Livro livro;
    private DataModel listaLivros;

    public DataModel getListarLivros() {
        List&lt;Livro&gt; lista = new LivroDaoImp().list();
        listaLivros = new ListDataModel(lista);
        return listaLivros;
    }
    public Livro getLivro() {
        return livro;
    }
    public void setLivro(Livro livro) {
        this.livro = livro;
    }
    public String prepararAdicionarLivro(){
        livro = new Livro();
        return &quot;gerenciarLivro&quot;;
    }
    public String prepararAlterarLivro(){
        livro = (Livro)(listaLivros.getRowData());
        return &quot;gerenciarLivro&quot;;
    }
    public String excluirLivro(){
        Livro livroTemp = (Livro)(listaLivros.getRowData());
        LivroDao dao = new LivroDaoImp();
        dao.remove(livroTemp);
        return &quot;index&quot;;
    }
    public String adicionarLivro(){
        LivroDao dao = new LivroDaoImp();
        dao.save(livro);
        return &quot;index&quot;;
    }
    public String alterarLivro(){
        LivroDao dao = new LivroDaoImp();
        dao.update(livro);
        return &quot;index&quot;;
    }
}
</pre></p>
</div>
<p><strong> </strong></p>
<p><strong>View</strong></p>
<p>O pacote View é composto por páginas JSF que irão executar o pedido de listagem, alteração, exclusão e adição de Livros, o nosso projeto precisará de duas páginas JSF uma chamada index.xhtml que listará os Livros do Usuário e permitirá excluí-los e acessar as páginas de alteração e inserção, a segunda página chamada gerenciarLivro.xhtml será criada para realizar a adição e alteração dos livros. As duas páginas se comunicam diretamente com os métodos e atributos da classe LivroController permitindo a interação de forma fácil com o banco de dados. Em seguida são apresentadas as páginas necessárias.</p>
<p><strong> </strong></p>
<p><span style="text-decoration:underline;">Página index.xhtml</span></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:2b6ccc2a-ab3e-4eb7-8771-bffad9e35b88" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml; collapse: false; html-script: false; light: false; pad-line-numbers: true; wrap-lines: false;">
&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
      xmlns:h=&quot;http://java.sun.com/jsf/html&quot;
      xmlns:f=&quot;http://java.sun.com/jsf/core&quot;&gt;
    &lt;h:head&gt;
        &lt;title&gt;Gerenciador de Livros&lt;/title&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h1&gt;Gerenciador de Livros&lt;/h1&gt;
        &lt;h:dataTable var=&quot;livro&quot; value=&quot;#{livroController.listarLivros}&quot;&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Título&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.titulo}&quot; /&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Autor&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.autor}&quot;/&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Páginas&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.paginas}&quot;/&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Editora&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.editora}&quot;/&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Isbn&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.isbn}&quot;/&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Avaliação&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{livro.avaliacao}&quot;/&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Alterar&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:form&gt;
                    &lt;h:commandButton action=&quot;#{livroController.prepararAlterarLivro}&quot; value=&quot;Alterar&quot;/&gt;
                    &lt;/h:form&gt;
            &lt;/h:column&gt;
            &lt;h:column&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    &lt;h:outputText value=&quot;Excluir&quot;/&gt;
                &lt;/f:facet&gt;
                &lt;h:form&gt;
                    &lt;h:commandButton action=&quot;#{livroController.excluirLivro}&quot; value=&quot;Excluir&quot;/&gt;
                    &lt;/h:form&gt;
            &lt;/h:column&gt;
        &lt;/h:dataTable&gt;
        &lt;br/&gt;
        &lt;h:form&gt;
            &lt;h:commandLink value=&quot;Novo Livro&quot; action=&quot;#{livroController.prepararAdicionarLivro}&quot;/&gt;
        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
</pre></p>
</div>
<p><span style="text-decoration:underline;">Página gerenciarLivro.xhtml</span></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:0017be73-9dc2-406d-85a6-368b70a883c6" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
      xmlns:h=&quot;http://java.sun.com/jsf/html&quot;
      xmlns:f=&quot;http://java.sun.com/jsf/core&quot;&gt;
    &lt;h:head&gt;
        &lt;title&gt;Gerenciador de Livros&lt;/title&gt;
    &lt;/h:head&gt;
    &lt;h:body&gt;
        &lt;h1&gt;Gerenciador de Livros&lt;/h1&gt;
        &lt;h:form&gt;
            Título &lt;h:inputText value=&quot;#{livroController.livro.titulo}&quot;/&gt;&lt;br/&gt;
            Autor: &lt;h:inputText value=&quot;#{livroController.livro.autor}&quot;/&gt;&lt;br/&gt;
            Paginas: &lt;h:inputText value=&quot;#{livroController.livro.paginas}&quot;/&gt;&lt;br/&gt;
            Editora: &lt;h:inputText value=&quot;#{livroController.livro.editora}&quot;/&gt;&lt;br/&gt;
            ISBN: &lt;h:inputText value=&quot;#{livroController.livro.isbn}&quot;/&gt;&lt;br/&gt;
            Avaliação: &lt;h:selectOneMenu value=&quot;#{livroController.livro.avaliacao}&quot;&gt;
                &lt;f:selectItem itemLabel=&quot;1&quot; itemValue=&quot;1&quot;/&gt;
                &lt;f:selectItem itemLabel=&quot;2&quot; itemValue=&quot;2&quot;/&gt;
                &lt;f:selectItem itemLabel=&quot;3&quot; itemValue=&quot;3&quot;/&gt;
                &lt;f:selectItem itemLabel=&quot;4&quot; itemValue=&quot;4&quot;/&gt;
                &lt;f:selectItem itemLabel=&quot;5&quot; itemValue=&quot;5&quot;/&gt;
            &lt;/h:selectOneMenu&gt;&lt;br/&gt;
            &lt;h:commandButton action=&quot;#{livroController.adicionarLivro}&quot; value=&quot;Inserir Novo Livro&quot;/&gt;
            &lt;h:commandButton action=&quot;#{livroController.alterarLivro}&quot; value=&quot;Alterar Livro&quot;/&gt;
            &lt;br/&gt;
            &lt;h:commandLink action=&quot;index&quot; value=&quot;Voltar&quot;/&gt;
        &lt;/h:form&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
</pre></p>
</div>
<p><strong> </strong></p>
<p><strong>Configuraçõe</strong><strong>s necessárias&#8230;</strong></p>
<p><strong>Arquivo web.xml</strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:6e85e876-5f20-428a-8ede-ce7a47abbfd3" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;web-app version=&quot;2.5&quot; xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;&gt;
    &lt;context-param&gt;
        &lt;param-name&gt;javax.faces.PROJECT_STAGE&lt;/param-name&gt;
        &lt;param-value&gt;Development&lt;/param-value&gt;
    &lt;/context-param&gt;
    &lt;servlet&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
    &lt;/servlet&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
        &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;session-config&gt;
        &lt;session-timeout&gt;
            30
        &lt;/session-timeout&gt;
    &lt;/session-config&gt;
    &lt;welcome-file-list&gt;
        &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
    &lt;/welcome-file-list&gt;
&lt;/web-app&gt;
</pre></p>
</div>
<p><strong> </strong></p>
<p><strong>Arquivo hibernate.cfg.xml</strong></p>
<p>Este arquivo configura o hibernate de acordo com seu banco de dados note que é preciso adicionar ainda o seu usuário no banco de dados, sua senha e caso seja necessário o ip e a porta do banco.</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:decfb2fc-ad67-4afb-b0e0-c6a7ba84131c" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE hibernate-configuration PUBLIC &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;&gt;
&lt;hibernate-configuration&gt;
  &lt;session-factory&gt;
    &lt;property name=&quot;hibernate.dialect&quot;&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
    &lt;property name=&quot;hibernate.connection.driver_class&quot;&gt;com.mysql.jdbc.Driver&lt;/property&gt;
    &lt;property name=&quot;hibernate.connection.url&quot;&gt;jdbc:mysql://localhost:3306/livraria&lt;/property&gt;
    &lt;property name=&quot;hibernate.connection.username&quot;&gt;seuUsuario&lt;/property&gt;
    &lt;property name=&quot;hibernate.connection.password&quot;&gt;suaSenha&lt;/property&gt;
  &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;
</pre></p>
</div>
<p>Essas são as informações necessárias para a criação de um CRUD básico para a gerencia de Livros utilizando JSF 2.0 e Hibernate, neste <a href="http://github.com/downloads/jamacedo/Gerencia-de-Livros/gerenciaLivrosJSFHibernate.zip" target="_blank">link</a> segue o projeto criado no Netbeans para download.</p>
<p>Por hoje é só pessoal, qualquer dúvida estou a disposição!</p>
<p>A segunda parte deste CRUD com utilização de ajax e da biblioteca de componentes PrimeFaces está <a href="http://jamacedo.wordpress.com/2010/09/13/crud-jsf-2-0-hibernate-parte-2-utilizando-a-biblioteca-primefaces-no-gerenciador-de-livros/" target="_blank">disponível aqui</a>!</p>
<p>Abraços!</p>
<p>José Alexandre Macedo</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=163&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/06/08/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/feed/</wfw:commentRss>
		<slash:comments>110</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>

		<media:content url="http://jamacedo.files.wordpress.com/2010/06/imagem1_thumb1.png" medium="image">
			<media:title type="html">estrutura</media:title>
		</media:content>
	</item>
		<item>
		<title>Acessando web com Java passando por um Proxy</title>
		<link>http://jamacedo.wordpress.com/2010/05/25/acessando-web-com-java-passando-por-um-proxy/</link>
		<comments>http://jamacedo.wordpress.com/2010/05/25/acessando-web-com-java-passando-por-um-proxy/#comments</comments>
		<pubDate>Tue, 25 May 2010 20:30:53 +0000</pubDate>
		<dc:creator>José Alexandre Macedo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Proxy]]></category>

		<guid isPermaLink="false">http://jamacedo.wordpress.com/?p=131</guid>
		<description><![CDATA[Este blog possui um novo domínio agora jamacedo.com, clique aqui para acessá-lo! Estou nos finalmentes pra entregar minha monografia (quando acabar vou postar aqui!), então nessa história de monografia tive um GRANDE problema pra realizar alguns experimentos que pegavam dados da web por causa do Proxy da Faculdade&#8230;. procurei, procurei, procurei na web e tava [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=131&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">Este blog possui um novo domínio agora <a href="http://jamacedo.com/">jamacedo.com</a>, <a href="http://jamacedo.com/">clique aqui</a> para acessá-lo!</p>
<p>Estou nos finalmentes pra entregar minha monografia (quando acabar vou postar aqui!), então nessa história de monografia tive um GRANDE problema pra realizar alguns experimentos que pegavam dados da web por causa do Proxy da Faculdade&#8230;. procurei, procurei, procurei na web e tava difícil de achar uns exemplos que eu pudesse autenticar meu usuário e que funcionasse! Então achei um que depois de algumas adaptações finalmente funcionou!</p>
<p>Acho que esse pode ser um problema comum e por isso vou postar aqui a solução mágica que deu certo!</p>
<p>O código abaixo só precisa ser executado uma vez no programa escrito em java, mesmo acessando várias vezes a web. Uma vez autenticado o problema está resolvido!</p>
<p><pre class="brush: java;">
//alterar para o ip e a porta do seu proxy
System.setProperty(&quot;http.proxyHost&quot;, &quot;ipDoSeuProxy&quot;);
System.setProperty(&quot;http.proxyPort&quot;, &quot;portaDoSeuProxy&quot;);
//a danada da autenticação que só funcionou desta forma...
//no seuUsuario e suaSenha você coloca seu login e sua senha do proxy...
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(&quot;seuUsuario&quot;, &quot;suaSenha&quot;.toCharArray());
}
});
</pre></p>
<p>Bom, por hoje é só&#8230;.</p>
<p>Quando terminar minha monografia volto a postar com mais frequência!</p>
<p>Abraços a todos!</p>
<p>E qualquer coisa estamos ai!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jamacedo.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jamacedo.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jamacedo.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jamacedo.wordpress.com&amp;blog=9048424&amp;post=131&amp;subd=jamacedo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jamacedo.wordpress.com/2010/05/25/acessando-web-com-java-passando-por-um-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/32c1de70de223175b4127bbf1452eda7?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">jamacedo</media:title>
		</media:content>
	</item>
	</channel>
</rss>
