<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-28564193</id><updated>2012-01-13T14:24:30.320-04:00</updated><title type='text'>BlogNotFoundException</title><subtitle type='html'>Java, Linux, Open Source, etc...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28564193.post-4821452540152359809</id><published>2007-04-22T07:07:00.000-05:00</published><updated>2007-04-22T07:39:40.614-05:00</updated><title type='text'>Palm Tungsten E2 + Internet</title><content type='html'>Há pouco tempo comprei um Palm Tungsten E2 com teclado Bluetooth e vi que muitas pessoas  conseguiam compartilhar a conexão da internet entre o PC e o Palm através do cabo de sincronização. Decidi pesquisar e descobri que o nome do programa que faz esse milagre é &lt;a href="http://www.softick.com/ppp/"&gt;Softick PPP&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Depois de um bom tempo tentando compartilhar a conexão, consegui resolver o problema especificando um Proxy no navegador do Palm. Essa configuração de proxy teve que ser feita, pois a conexão de internet do PC era disponibilizada através do proxy &lt;a href="http://www.squid-cache.org/"&gt;Squid&lt;/a&gt;. A seguir, um tutorial ensinando como realizar a configuração:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Configuração no PC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - O programa pode ser comprado por $24.95. Há disponível o trial para testes no endereço: http://www.softick.com/download_script.php?prog_version_id=50&amp;site_type=1&lt;br /&gt;&lt;br /&gt;2 - Instale o programa.&lt;br /&gt;&lt;br /&gt;3 - Inicie o Softick PPP, selecione a aba NetWork e marque a opção "Detect DNS addresses automatically".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Configuração no Palm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Inicie o Palm, selecione "Pref", clique em rede e configure o wizard com os seguintes dados:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Serviço&lt;/span&gt;: WindowsRAS&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Usuário&lt;/span&gt;: Seu nome, por exemplo: guilherme&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Senha&lt;/span&gt;: sem senha&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Conexão&lt;/span&gt;: Base/Cabo&lt;br /&gt;&lt;br /&gt;2 - Clique em detalhes configure o wizard com os seguintes dados:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Tipo de conexão&lt;/span&gt;: PPP&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Tempo limite&lt;/span&gt;: Nunca&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Consultar DNS&lt;/span&gt;: marcado&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Endereço IP&lt;/span&gt;: marcado&lt;br /&gt;&lt;br /&gt;3 - Clique em OK e na tela de configuração da rede clique em conectar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Configuração no navegador do Palm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vou tomar como exemplo a configuração de proxy do Blazer.&lt;br /&gt;&lt;br /&gt;1 - Clique em opções e selecione "Preferências".&lt;br /&gt;&lt;br /&gt;2 - Selecione a aba "Avançado" e clique em "Definir Proxy".&lt;br /&gt;&lt;br /&gt;3 - Marque a opção "Usar proxy personalizado" e configure o servidor proxy e a porta . No meu caso a configuração ficou assim:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;Servidor Proxy&lt;/span&gt;: IP detectado pelo &lt;a href="http://www.softick.com/ppp/"&gt;Softick PPP&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Porta&lt;/span&gt;: 3128 (Porta do Squid)&lt;br /&gt;&lt;br /&gt;Depois dessas configurações basta digitar uma URL no browser e sair navegando!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-4821452540152359809?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/4821452540152359809/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=4821452540152359809' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/4821452540152359809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/4821452540152359809'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2007/04/palm-tungsten-e2-internet.html' title='Palm Tungsten E2 + Internet'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-9025975927873340836</id><published>2007-04-20T18:40:00.000-05:00</published><updated>2007-04-20T18:49:49.743-05:00</updated><title type='text'>SunTechDays</title><content type='html'>Ontem fui ao Petrópolis JUG para assistir a transmissão de algumas palestras do SunTechDays. O evento foi realizado no LNCC (Laboratório Nancional de Computação Científica). Muitos desenvolvedores e estudantes dos arredores de petrópolis estiveram presentes.&lt;br /&gt;&lt;br /&gt;Apesar do problema com a transmissão das palestras que estavam acontecendo em São Paulo, deu para entender sem muita dificuldade a apresentação do Rich Green que falou muito sobre open source, ajax e web 2.0. Depois ele convidou alguns desenvolvedores da Sun para realizarem demonstrações de algumas aplicações utilizando o NetBeans. Todas essas demonstrações foram cronometradas.&lt;br /&gt;&lt;br /&gt;Após a transmissão da palestra do Rich Green ocorreu uma palestra do &lt;a href="http://www.bartholo.com/cis27p/"&gt;Phil Bartholo&lt;/a&gt; que falou muito sobre JME e sobre o projeto Orbit, que é um projeto que tem como objetivo permitir a execução do OpenLaszlo em dispositivos móveis. Muito boa a palestra apesar da dificuldade do palestrante para falar português. O Phil é brasileiro mas foi morar nos EUA aos 9 anos de idade.&lt;br /&gt;&lt;br /&gt;Depois do intervalo, ocorreu uma palestra sobre JSF que foi ministrada pelo coordenador do Petrópolis JUG. A palestra foi bem curta e não ajudou muito o pessoal que estava querendo conhecer a tecnologia. O palestrante exibiu apenas um overview sobre a JSF, falando sobre a JSR 127 e comparou a JSF com outros frameworks Web. O palestrante ainda falou sobre o WebPack, um Add-on para o NetBeans que possibilita desenvolver aplicações Web em JSF de forma rápida através de drag and drop de componentes.&lt;br /&gt;&lt;br /&gt;A última palestra foi ministrada pelo fundador do Petrópolis JUG. O tema foi: “Writing NetBeans modules and using the NetBeans Plataform”. O palestrante optou por ministrar essa palestra pois o mesmo assunto estava sendo abordado no SunTechDays de São Paulo. A palestra foi bem simples e deu um overview sobre o desenvolvimento de aplicações utilizando o &lt;a href="http://platform.netbeans.org/"&gt;RCP&lt;/a&gt; (Rich Client Plataform).&lt;br /&gt;&lt;br /&gt;Achei o evento interessante e pude constatar o marketing exagerado da Sun em cima do NetBeans. Parabenizo toda a equipe do Petrópolis JUG pela realização do evento em conjunto com a Sun. Valeu a pena subir a serra e passar um friozinho na volta ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-9025975927873340836?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/9025975927873340836/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=9025975927873340836' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/9025975927873340836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/9025975927873340836'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2007/04/suntechdays.html' title='SunTechDays'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-6606414876000900613</id><published>2007-04-06T16:29:00.000-05:00</published><updated>2007-04-06T16:41:40.395-05:00</updated><title type='text'>Não me Faça Pensar</title><content type='html'>Acabei de ler o livro Não me faça Pensar, do autor Steve Krug. Há um tempo atrás vi esse livro na Amazon e pelos comentários o livro parecia ser bem interessante. Certo dia, estava em uma livraria do Rio de Janeiro e avistei a tradução da terceira edição. Não perdi tempo e comprei logo meu exemplar.&lt;br /&gt;&lt;br /&gt;A leitura é muito boa, instigante na maioria das vezes. O autor frequentemene mostra alguns sites que refletem o bom desgin. A &lt;a href="http://amazon.com/"&gt;Amazon&lt;/a&gt; por exemplo, é um site que ele cita em muitos tópicos do livro.&lt;br /&gt;&lt;br /&gt;Outra coisa interessante são os constantes links que o autor disponibiliza para quem quiser se aprofundar em determinados temas, como por exemplo acessibilidade, desenvolvimento de formulários, etc.&lt;br /&gt;&lt;br /&gt;Há um capítulo onde o autor ensina a criar um laboratório de usabilidade sem ter que gastar rios de dinheiro. Também oferece dicas de como convencer seu chefe a criar um laboratório de usabilidade na sua empresa de forma simples.&lt;br /&gt;&lt;br /&gt;A tradução do livro está muito boa, encontrei poucos problemas de tradução. E os problemas que encontrei são muito pequenos, nada que possa interferir na leitura desse excelente livro.&lt;br /&gt;&lt;br /&gt;Recomendo fortemente a leitura desse livro para todo desenvolvedor/projetista/webdeseginer. Tenho certeza que você não deixará o usuário passar tanto tempo pensando em como utilizar um recurso do seu site/sistema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-6606414876000900613?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/6606414876000900613/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=6606414876000900613' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/6606414876000900613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/6606414876000900613'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2007/04/no-me-faa-pensar.html' title='Não me Faça Pensar'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-804527973919136226</id><published>2007-03-21T20:30:00.001-05:00</published><updated>2007-03-21T20:36:05.792-05:00</updated><title type='text'>WebWork@WebMobile II</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.devmedia.com.br/loja/img/capa_WM12_G.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.devmedia.com.br/loja/img/capa_WM12_G.gif" border="0" alt="" /&gt;&lt;/a&gt;O meu segundo &lt;a href="http://www.devmedia.com.br/webmobile/Resumo_edi_atual.asp"&gt;artigo&lt;/a&gt; sobre o WebWork foi publicado na Revista WebMobile.&lt;br /&gt;&lt;br /&gt;Esse artigo mostra alguns exemplos detalhados de como utilizar o suporte Ajax do WebWork, integração com o Spring, Upload de arquivos e tags Avançadas.&lt;br /&gt;&lt;br /&gt;Nos próximos artigos falarei um pouco sobre a fusão Struts + WebWork e sobre as novidades dessa fusão.&lt;br /&gt;&lt;br /&gt;Críticas e sugestões são bem vindas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-804527973919136226?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/804527973919136226/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=804527973919136226' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/804527973919136226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/804527973919136226'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2007/03/webworkwebmobile-ii_21.html' title='WebWork@WebMobile II'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116950372779591518</id><published>2007-01-22T17:03:00.000-05:00</published><updated>2007-01-22T17:15:44.216-05:00</updated><title type='text'>WebWork@WebMobile</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/7920/3027/1600/272072/capa_WM11_G.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/7920/3027/200/943156/capa_WM11_G.png" border="0" alt="" /&gt;&lt;/a&gt;Acabou de sair meu &lt;a href="http://www.devmedia.com.br/webmobile/Resumo_edi_atual.asp"&gt;artigo&lt;/a&gt; sobre o WebWork na revista WebMobile do grupo DevMedia. O artigo mostra alguns recursos, para que possa ser dado um ponta-pé inicial com o framework.&lt;br /&gt;&lt;br /&gt;Em breve mais alguns artigos sobre a última versão do WebWork e sobre o Struts2 também.&lt;br /&gt;&lt;br /&gt;O feedback é muito bem vindo ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116950372779591518?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116950372779591518/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116950372779591518' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116950372779591518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116950372779591518'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2007/01/webworkwebmobile.html' title='WebWork@WebMobile'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116349258474898362</id><published>2006-11-14T03:10:00.000-05:00</published><updated>2006-11-14T03:27:12.520-05:00</updated><title type='text'>Zune!</title><content type='html'>Finalmente a Microsoft irá lançar um concorrente para o iPod.O &lt;a href="http://www.zune.net/en-us/meetzune/device.htm"&gt;Zune&lt;/a&gt; será lançado hoje (14/11), nos Estados Unidos. É visível o desafio de derrubar o líder de mercado da Apple. Para isso a Microsoft aposta em algumas novidades:&lt;br /&gt;&lt;br /&gt;Sintonizador FM&lt;br /&gt;Tela de 7,6 centímetros&lt;br /&gt;Conexão sem fio (wireless)&lt;br /&gt;&lt;br /&gt;O Zune ainda vem com 30 GB de memória e permite que usuários troquem fotos e músicas apenas aproximando os aparelhos. O suporte a wireless é o principal item que pode garantir o sucesso do Zune.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.zdnet.com/images/zuneimage.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://blogs.zdnet.com/images/zuneimage.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ainda há outra novidade: A microsoft também lançou sua loja on-line &lt;a href="http://www.zune.net/en-us/meetzune/zunemarketplace.htm"&gt;Zune Marketplace&lt;/a&gt; para concorrer com o iTunes. As músicas disponíveis para download custarão US$ 0,99 cada. A loja ainda permite que os usuários comprem músicas individualmente ou assinem um serviço que oferece uma cota mensal de downloads.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116349258474898362?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116349258474898362/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116349258474898362' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116349258474898362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116349258474898362'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/11/zune.html' title='Zune!'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116343974665806556</id><published>2006-11-13T12:32:00.000-05:00</published><updated>2006-11-13T12:52:42.910-05:00</updated><title type='text'>Tutoriais - PJ</title><content type='html'>&lt;img style="text-align:left;" src="http://www.portaljava.com/home/images/natal/pj_coracao.gif" border="0" alt="" /&gt;&lt;br /&gt;Esses dias estive olhando meu tutoriais publicados no Portal Java e nem me lembrava de alguns. Se interessar a alguém, segue os links para os tutoriais:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=110"&gt;Monitoramento de Sessão&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=125"&gt;Aprendendo Cookies&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=128"&gt;Introdução a JSTL - II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=131"&gt;JSTL um pouco mais a fundo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=155"&gt;Manual DisplayTag&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=132"&gt;Aprendendo Log4J&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;pid=149"&gt;Manual JUnit&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.portaljava.com/home/modules.php?name=Content"&gt;Lista de tutoriais do Portal Java&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116343974665806556?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116343974665806556/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116343974665806556' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116343974665806556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116343974665806556'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/11/tutoriais-pj.html' title='Tutoriais - PJ'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116163282491491736</id><published>2006-10-23T13:25:00.000-05:00</published><updated>2006-10-23T14:55:14.193-05:00</updated><title type='text'>Migrando para o Maven</title><content type='html'>O &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; é um poderoso framework para gerênciamento de projetos que fornece aos desenvolvedores os seguintes benefícios: Coerência, Reusabilidade, Agilidade e Manutenabilidade.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;O Maven segue alguns princípios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Convenção sobre configuração&lt;br /&gt;Execução declarativa&lt;br /&gt;Reuso da lógica de build&lt;br /&gt;Organização de dependências coerente&lt;br /&gt;&lt;br /&gt;Ao fornecer uma estrutura e um processo de desenvolvimento bem definidos, o Maven acaba tornando a vida dos desenvolvedores mais simples.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Maven x Ant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;É quase inevitável a comparação entre as duas ferramentas. Na minha opinião o &lt;a href="http://ant.apache.org/"&gt;ANT&lt;/a&gt; deixa a desejar quando se trata de:&lt;blockquote&gt;&lt;li&gt;Gerenciamento do projeto&lt;br /&gt;&lt;li&gt;Gerencimento de dependências&lt;/blockquote&gt;Já o Maven segue o conceito de POM (Project Object Model), onde todos os artefatos gerados pelo projeto podem ser configurados. Ou seja, em poucas linha de descrição do projeto podemos realizar algumas tarefas padrão (compilação, empacotamento, rodar testes unitários, etc...).&lt;br /&gt;&lt;br /&gt;Sem falar que é bem mais fácil gerar relatórios (&lt;a href="http://emma.sourceforge.net/"&gt;Emma&lt;/a&gt;, &lt;a href="clarkware.com/software/JDepend.html"&gt;JDepend&lt;/a&gt;, &lt;a href="java.sun.com/j2se/javadoc/"&gt;JavaDoc&lt;/a&gt;, etc...) com o Maven, pois todos os relatórios são "agrupados" no site padrão que pode ser gerado pelo Maven.&lt;br /&gt;&lt;br /&gt;Muitos desenvolvedores tem problemas em migrar para o Maven por se sentirem obrigados a utilizar a estrutura de diretórios proposta pelo Maven. Mas poucos sabem que é possível utilizar o Maven em uma aplicação já existente e usufruir de todos os benefícios que essa excelente ferramenta oferece.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Instalando o Maven&lt;/span&gt;&lt;br /&gt;O Maven pode ser baixado no seguinte link: &lt;a href="http://maven.apache.org/download.html"&gt;http://maven.apache.org/download.html&lt;/a&gt;. O processo de instalação é bem simples: descompacte o arquivo ZIP em um diretório de sua preferência e coloque o caminho para a pasta bin (por exemplo: C:/Maven/bin) no PATH do seu sistema operacional:&lt;br /&gt;&lt;br /&gt;Entre no Painel de Controle &gt; Desempenho e Manutenção &gt; Sistema clique na aba Avançado, clique no botão Variáveis de Ambiente, selecione a variável PATH, adicione uma ";" e o caminho para a pasta bin da instalação do Maven. Não se esqueça que você deve ter a variável JAVA_HOME apontando para o diretório de instalação do Java.&lt;br /&gt;&lt;br /&gt;Para testar se a instalação foi realiza corretamente, rode o seguinte comando no console: mvn --version&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Plugins&lt;/span&gt;&lt;br /&gt;Geralmente utilizamos um plugin para auxiliar o desenvolvimento JEE, vamos tomar como exemplo o plugin &lt;a href="http://www.sysdeo.com/eclipse/tomcatplugin"&gt;Sysdeo&lt;/a&gt;. Esse plugin cria um projeto web no TomCat contendo a seguinte estrutura de diretórios:&lt;br /&gt;&lt;br /&gt;Projeto&lt;br /&gt;|&lt;br /&gt;+-- WEB-INF&lt;br /&gt;+---- src&lt;br /&gt;+---- classes&lt;br /&gt;+---- lib&lt;br /&gt;&lt;br /&gt;Parar informar ao Maven o diretório onde se encontram os arquivos .java utilize a tag &lt;span style="font-style:italic;"&gt;sourceDirectory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;sourceDirectory&amp;gt;WEB-INF/src&amp;lt;/sourceDirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&lt;br /&gt;E para informar o diretório onde os arquivos .class devem ser armazenados:&lt;br /&gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;outputDirectory&amp;gt;WEB-INF/classes&amp;lt;/outputDirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&lt;br /&gt;Podemos também informar ao Maven onde encontrar e armazenar os testes unitarios através das tags:&lt;br /&gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;testSourceDirectory&amp;gt;WEB-INF/test/src&amp;lt;/testSourceDirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;testOutputDirectory&amp;gt;WEB-INF/test/classes&amp;lt;/testOutputDirectory&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&amp;lt;build&amp;gt;&lt;br /&gt;&lt;br /&gt;O Maven possui diversos plugins que são responsáveis por gerar artefatos baseados no projeto. A seguir uma lista com os principais plugins:&lt;blockquote&gt;&lt;li&gt;compiler:compile - Compila os .java&lt;br /&gt;&lt;li&gt;compiler:testCompile - Compila os testes unitários&lt;br /&gt;&lt;li&gt;site: - gera um site para o projeto corrente&lt;br /&gt;&lt;li&gt;war:war - Cria um arquivo WAR a partir do projeto corrente&lt;br /&gt;&lt;li&gt;jar:jar - Cria um arquivo JAR a partir do projeto corrente&lt;br /&gt;&lt;li&gt;pmd:pmd - Gera um relatório do PMD&lt;/blockquote&gt;Se você está cansado do ANT e está procurando uma boa ferramenta para controlar o seu projeto, o Maven é uma mão na roda!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116163282491491736?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116163282491491736/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116163282491491736' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116163282491491736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116163282491491736'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/10/migrando-para-o-maven.html' title='Migrando para o Maven'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116104536787582044</id><published>2006-10-16T18:42:00.000-05:00</published><updated>2006-10-16T20:24:48.176-05:00</updated><title type='text'>Quem tem medo das exceções</title><content type='html'>Muitas pessoas que esão inciando em Java tem uma certa dificuldade em entender bem as exceções. É fundamental que todo programador tenha uma boa noção sobre declaração, criação e tratamento de exceções para não sejam produzidos mais e mais códigos sem um bom tratamento de erros.&lt;br /&gt;&lt;br /&gt;Mas afinal o que é uma exceção ? uma exceção é um evento que ocorre durante a execução de um programa quando algum tipo de problema ocorre.&lt;br /&gt;&lt;br /&gt;Já que estamos falando de Java, e tudo que não for um tipo primitivo deve ser um objeto (pelo menos...), as exceções não fogem a essa regra. As exceções são intâncias da classe &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html"&gt;java.lang.Exception&lt;/a&gt; que por sua vez é subclasse de &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html"&gt;java.lang.Throwable&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A classe Throwable é a superclasse de todos os erros e exceções do Java. Ela possui duas subclasses:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Error&lt;/span&gt; - Representa situações incomuns que não não causadas por erros no programa.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Exception&lt;/span&gt; - Representa situações razoáveis que a aplicação deve tratar.&lt;br /&gt;&lt;br /&gt;A figura abaixo mostra a hierarquia das exceções.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/7920/3027/320/exceptionHierarchy.1.png" border="0" alt="" style="display:block; margin:0px auto 10px; text-align:center; width: 320px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Os três tipos de exceções&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Checked exceptions&lt;div class="alert"&gt;As checked exceptions são subclasses de Exception e representam condições inválidas (dados errados, problemas com banco de dados, problemas com a rede, etc...).&lt;br /&gt;&lt;/div&gt;Se um método lançar uma checked exception deve manipulá-lo ou declará-lo.&lt;br /&gt;&lt;br /&gt;Unchecked exceptions &lt;div class="alert"&gt;As unchecked exceptions são subclasses de RuntimeException e representam erros de programação.&lt;br /&gt;&lt;/div&gt;Se um método lançar uma unchecked exception não será necessário manipulá-la ou declará-la.&lt;br /&gt;&lt;br /&gt;Error &lt;div class="alert"&gt;Um Error representa condições excepicionais externas a aplicação que geralmente não podem ser recuperados. Por exemplo, suponha que uma aplicação precisa abrir alguns arquivos e recuperar informações, mas por algum mal funcionamento do sistema não consiga. Esse mal funcionamento irá causar um java.io.IOError.&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;Declarando e Manipulando exceções&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para indicar as exceções que um método pode lançar, utilizamos a palavra-chave &lt;span style="font-weight:bold;"&gt;throws&lt;/span&gt;:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;public void foo() throws MinhaException {&lt;br /&gt;  //&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Para informar a JVM qual código executar quando uma determinada exceção ocorrer, utilizamos as palavras-chave &lt;span style="font-weight:bold;"&gt;try&lt;/span&gt; e &lt;span style="font-weight:bold;"&gt;catch&lt;/span&gt;:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;try {&lt;br /&gt;   // bloco onde podem ocorrer exceções&lt;br /&gt;  } catch (MinhaException exception) {&lt;br /&gt;   // tratar exceção&lt;br /&gt;  }&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Dicas: As checked exceptions forçam o desenolvedor a manipular os possíveis erros, então nunca faça isso:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;public void foo() {&lt;br /&gt;    try {&lt;br /&gt;      // algum código que possa lancar uma exceção&lt;br /&gt;    } catch (Exception exception) {&lt;br /&gt;   &lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Dessa forma você está omitindo a exceção e nem mesmo poderá ver a pilha de erros.&lt;br /&gt;&lt;br /&gt;Nunca faça:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;try {&lt;br /&gt;      // algum código que possa lancar uma exceção&lt;br /&gt;    } catch (Exception exception) {&lt;br /&gt;      System.out.println(exception);&lt;br /&gt;    }&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;ou&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;try {&lt;br /&gt;   // algum código que possa lancar uma exceção&lt;br /&gt;  } catch (Exception exception) {&lt;br /&gt;   System.out.println(exception.getMessage());&lt;br /&gt;  }&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Dessa forma você não conseguirá rastrear onde está a possível causa do erro. Sempre utilize o método printStackTrace() da classe Throwable: &lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;try {&lt;br /&gt;   // algum código que possa lancar uma exceção&lt;br /&gt;  } catch (Exception exception) {&lt;br /&gt;   exception.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt; Ao utilizar o método printStackTrace(), preservamos a pilha de erros e tornamos mais fácil encontrar o local que originou o erro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116104536787582044?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116104536787582044/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116104536787582044' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116104536787582044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116104536787582044'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/10/quem-tem-medo-das-excees.html' title='Quem tem medo das exceções'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116048609039772500</id><published>2006-10-10T08:09:00.000-05:00</published><updated>2006-10-10T22:42:05.220-05:00</updated><title type='text'>Upload com WebWork</title><content type='html'>Tenho visto muita gente com dificuldade em criar um upload no WebWork. Nesse post demonstrarei como é bastante simples criar um upload utilizando o suporte ao &lt;a href="http://jakarta.apache.org/commons/fileupload/"&gt;Commons FileUpload&lt;/a&gt; do WebWork.&lt;br /&gt;&lt;br /&gt;Primeiro passo: criar a action&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;public class UploadAction extends ActionSupport {&lt;br /&gt;&lt;br /&gt;    private File file;&lt;br /&gt;    private String contentType;&lt;br /&gt;    private String filename;&lt;br /&gt;&lt;br /&gt;    public void setUpload(File file) {&lt;br /&gt;     this.file = file;&lt;br /&gt;    }&lt;br /&gt;    public void setUploadContentType(String contentType) {&lt;br /&gt;     this.contentType = contentType;&lt;br /&gt;    }&lt;br /&gt;    public void setUploadFileName(String filename) {&lt;br /&gt;     this.filename = filename;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String execute() throws Exception {&lt;br /&gt;     if (file == null) {&lt;br /&gt;       return INPUT;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Na action precisamos apenas criar os seguintes atributos: file, contentType e fileName para que o WebWork identifique que será realizado o upload.&lt;br /&gt;&lt;br /&gt;Segundo passo: configurar o arquivo webwork.properties&lt;br /&gt;&lt;br /&gt;webwork.multipart.parser=jakarta&lt;br /&gt;webwork.multipart.saveDir=C:/uploads/&lt;br /&gt;&lt;br /&gt;Ao configurar o parser como jakarta, definimos que o upload será feito através do &lt;a href="http://jakarta.apache.org/commons/fileupload/"&gt;Commons FileUpload&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Terceiro passo: criar o formulário de upload&lt;div class="code"&gt;&lt;font size="1" face="Verdana"&gt;&amp;lt;ww:form&amp;nbsp;&amp;nbsp;method=&amp;#34;POST&amp;#34;&amp;nbsp;action=&amp;#34;upload.action&amp;#34;&amp;nbsp;enctype=&amp;#34;multipart/form-data&amp;#34;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ww:file&amp;nbsp;name=&amp;#34;upload&amp;#34;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ww:submit&amp;gt;&lt;br /&gt;&amp;lt;/ww:form&amp;gt;&lt;/font&gt;&lt;/div&gt;Para&amp;nbsp;construir&amp;nbsp;o&amp;nbsp;formul&amp;aacute;rio,&amp;nbsp;utilizamos&amp;nbsp;a&amp;nbsp;tag&amp;nbsp;&amp;lt;ww:form&amp;gt;.&amp;nbsp;Para&amp;nbsp;gerar&amp;nbsp;o&amp;nbsp;campo&amp;nbsp;de&amp;nbsp;upload,&lt;br&gt;&amp;nbsp;utilizamos&amp;nbsp;a&amp;nbsp;tag&amp;nbsp;&amp;lt;ww:file&amp;gt;&amp;nbsp;e&amp;nbsp;para&amp;nbsp;submeter&amp;nbsp;o&amp;nbsp;formul&amp;aacute;rio,&amp;nbsp;utilizamos&amp;nbsp;a&amp;nbsp;tag&amp;nbsp;&amp;lt;ww:submit&amp;gt;.&lt;br /&gt;&lt;br /&gt;Quarto passo: configurar a action no arquivo xwork.xml&lt;br /&gt;&lt;div class="code"&gt;&lt;font face="Verdana" size="1"&gt;&amp;lt;action&amp;nbsp;name=&amp;#34;upload&amp;#34;&amp;nbsp;class=&amp;#34;br.com.action.UploadAction&amp;#34;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;interceptor-ref&amp;nbsp;name=&amp;#34;fileUpload&amp;#34;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;interceptor-ref&amp;nbsp;name=&amp;#34;basicStack&amp;#34;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;result&amp;nbsp;name=&amp;#34;success&amp;#34;&amp;gt;success_upload.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;result&amp;nbsp;name=&amp;#34;input&amp;#34;&amp;gt;input_upload.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;/font&gt;&lt;/div&gt;Para configurarmos o upload, basta referenciar o interceptor fileUpload na declaração da action.&lt;br /&gt;&lt;br /&gt;A partir dessa configuração poderíamos realizar o upload sem grandes problemas, só que o interceptor fileUpload realiza uma limpeza nos arquivos e por consequência todos os arquivos que sofreram upload serão excluídos. Para contornar isso, podemos copiar o upload para um diretório específico.&lt;br /&gt;&lt;br /&gt;Retire a seguinte linha do arquivo webwork.properties:&lt;br /&gt;&lt;br /&gt;webwork.multipart.saveDir=C:/uploads/&lt;br /&gt;&lt;br /&gt;E crie o seguinte método que é responsável por copiar o arquivo para um diretório:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;public void copyFile(File in, File out) throws IOException {&lt;br /&gt; FileChannel sourceChannel = new FileInputStream(in).getChannel();&lt;br /&gt; FileChannel destinationChannel = new FileOutputStream(out).getChannel();&lt;br /&gt; sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);&lt;br /&gt; sourceChannel.close();&lt;br /&gt; destinationChannel.close();&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;E para utilizar esse método na action:&lt;div class="code"&gt;&lt;pre&gt;&lt;font size="1" face="Verdana"&gt;public class UploadAction extends ActionSupport {&lt;br /&gt;&lt;br /&gt;    private File file;&lt;br /&gt;    private String contentType;&lt;br /&gt;    private String filename;&lt;br /&gt;&lt;br /&gt;    public void setUpload(File file) {&lt;br /&gt;     this.file = file;&lt;br /&gt;    }&lt;br /&gt;    public void setUploadContentType(String contentType) {&lt;br /&gt;     this.contentType = contentType;&lt;br /&gt;    }&lt;br /&gt;    public void setUploadFileName(String filename) {&lt;br /&gt;     this.filename = filename;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String execute() throws Exception {&lt;br /&gt;     if (file == null) {&lt;br /&gt;         return INPUT;&lt;br /&gt;     }&lt;br /&gt;     copyFile(file, new File("C:/uploads/" + filename));&lt;br /&gt;     return SUCCESS;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void copyFile(File in, File out) throws IOException {&lt;br /&gt;     FileChannel sourceChannel = new FileInputStream(in).getChannel();&lt;br /&gt;     FileChannel destinationChannel = new FileOutputStream(out).getChannel();&lt;br /&gt;     sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);&lt;br /&gt;     sourceChannel.close();&lt;br /&gt;     destinationChannel.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;Não se esqueça de colocar o jar do &lt;a href="http://jakarta.apache.org/commons/fileupload/"&gt;Commons FileUpload&lt;/a&gt; no classpath !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116048609039772500?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116048609039772500/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116048609039772500' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116048609039772500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116048609039772500'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/10/upload-com-webwork.html' title='Upload com WebWork'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-116025323830654433</id><published>2006-10-07T15:33:00.000-05:00</published><updated>2006-10-07T15:37:51.793-05:00</updated><title type='text'>java.lang.OutOfMemoryError: PermGen space</title><content type='html'>Continuo em busca de uma solução para esse memory leak. Memory leak  em java pode ser causado por um objeto que não é coletado depois que não é mais necessário ou não está mais ativo. Com isso, a performance do computador é prejudicada, pois há uma redução na quantidade de memória disponível.&lt;br /&gt;&lt;br /&gt;Ao ler os posts atualizados do Bloglines me deparei com o seguinte post: &lt;span style="font-weight:bold;"&gt;debugging PermGen OutOfMemoryError problems in windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nesse post o autor &lt;a href="http://weblogs.java.net/blog/richunger/"&gt;Rich Unger&lt;/a&gt; dá dicas de como debugar esse tipo de bug que é tão difícil de reproduzir. No post, o autor faz referência ao seguinte post do autor &lt;a href="http://weblogs.java.net/blog/gsporar/"&gt;Gregg Sporar&lt;/a&gt;, que define os diferentes tipos de memory leaks que podem ocorrem em aplicações Java.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weblogs.java.net/blog/gsporar/archive/2006/09/javazone_sessio.html"&gt;http://weblogs.java.net/blog/gsporar/archive/2006/09/javazone_sessio.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre os três tipos, o que mais me interessa no momento é o: &lt;span style="font-weight:bold;"&gt;Repeatedly deploying my application to Tomcat causes it to run out of perm gen space - is there a problem with perm gen usage in Tomcat&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Parece que o TomCat possui esses problemas de perm gen mesmo, inclusive existe um cadastro de bug no bugzilla do TomCat 5: &lt;a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=33711"&gt;http://issues.apache.org/bugzilla/show_bug.cgi?id=33711&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para saber melhor onde pode estar ocorrendo o vazamento de memória, o autor indica a utilização do JConsole. O JConsole é uma ferramenta que utiliza instrumentação JMX para prover informações sobre performance e consumo de recursos de aplicações que rodam na plataforma Java.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Iniciando o JConsole&lt;/span&gt;&lt;br /&gt;O JConsole pode ser encontrado em &lt;span style="font-style:italic;"&gt;JAVA_HOME/bin&lt;/span&gt;, onde &lt;span style="font-style:italic;"&gt;JAVA_HOME&lt;/span&gt; é o diretório onde o &lt;span style="font-style:italic;"&gt;JDK&lt;/span&gt; foi instalado. O JConsole pode ser utilizado tanto para monitoramento de aplicações locais quanto aplicações remotas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Monitoramento e Gerenciamento Local&lt;/span&gt;&lt;br /&gt;Para habilitar o acesso local ao JMX, precisamos criar a seguinte propriedade quanto iniciarmos a JMV ou aplicação Java:&lt;br /&gt;&lt;div class="code"&gt;com.sun.management.jmxremote&lt;/div&gt;Por exemplo, para utilizarmos o JConsole com o TomCat devemos executar os seguintes comandos na linha de comando:&lt;br /&gt;&lt;div class="code"&gt;TOMCAT_HOME\bin&gt; set JAVA_OPTS=-Dcom.sun.management.jmxremote&lt;br /&gt;TOMCAT_HOME\bin&gt; catalina start&lt;/div&gt;Após executar os comandos acima, inicie o JConsole e note que há uma configuração na aba &lt;span style="font-style:italic;"&gt;Local&lt;/span&gt; apontando para a classe: &lt;span style="font-style:italic;"&gt;org.apache.catalina.startup.BootStrap&lt;/span&gt;. Isso indica que o JConsole já pode monitorar o TomCat. Em seguida cliquem em &lt;span style="font-weight:bold;"&gt;Connect&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;A Interface do JConsole&lt;/span&gt;&lt;br /&gt;A interface do JConsole é composta por seis abas:&lt;br /&gt;&lt;br /&gt;    * Summary tab: exibe informações sobre a JVM e valores monitorados.&lt;br /&gt;    * Memory tab: exibe informações sobre o uso de memória.&lt;br /&gt;    * Threads tab: exibe informações sobre o uso de threads.&lt;br /&gt;    * Classes tab: exibe informações sobre o carregamento das classes.&lt;br /&gt;    * MBeans tab: exibe informações sobre MBeans.&lt;br /&gt;    * VM tab: exibe informações sobre a JVM.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/summarytab.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/summarytab.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na aba Memory, podemos encontrar informações sobre o consumo e pools de memória:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/memtab.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/memtab.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na aba Classes, podemos encontrar informações sobre o carregamento das classes, incluindo o total de classes carregadas, total de classes não carregadas, etc...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/classtab.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://java.sun.com/j2se/1.5.0/docs/guide/management/images/classtab.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Até agora encontrei as seguintes possíveis soluções para esse problema:&lt;br /&gt;&lt;br /&gt;* Utilizar a flag -XX:MaxPermSize para aumentar o tamanho de memória disponível (o default é 64M)&lt;br /&gt;&lt;br /&gt;* Migrar para outro WebContainer (&lt;a href="http://www.mortbay.org/"&gt;Jetty&lt;/a&gt; ou &lt;a href="http://www.caucho.com/"&gt;Resin&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;* Mudar de implemetação de JDK, utilizar por exemplo a &lt;a href="http://dev2dev.bea.com/jrockit/"&gt;JRockit&lt;/a&gt; (Algumas pessoas dizem que após a mudança, esse problema não persiste)&lt;br /&gt;&lt;br /&gt;Fontes:&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html"&gt;http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-116025323830654433?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/116025323830654433/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=116025323830654433' title='8 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116025323830654433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/116025323830654433'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/10/javalangoutofmemoryerror-permgen-space.html' title='java.lang.OutOfMemoryError: PermGen space'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115989642303497668</id><published>2006-10-03T12:16:00.000-05:00</published><updated>2006-10-03T12:32:07.546-05:00</updated><title type='text'>Spring 2.0 Final Released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.springframework.org/images/spring20.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px;" src="http://static.springframework.org/images/spring20.png" border="0" alt="" /&gt;&lt;/a&gt;Foi lançada a versão 2.0 do Spring Framework. Essa versão é lançada após nove meses de desenvolvimento ativo. Segundo os desenvolvedores do Spring, essa versão é a mais simples e poderosa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://static.springframework.org/spring/docs/2.0.x/changelog.txt"&gt;ChangeLog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://static.springframework.org/spring/docs/2.0.x/reference/index.html"&gt;Documentação&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=73357&amp;package_id=173644&amp;release_id=452461"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.springframework.org/docs/reference/new-in-2.html"&gt;Novidades da versão 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115989642303497668?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115989642303497668/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115989642303497668' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115989642303497668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115989642303497668'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/10/spring-20-final-released.html' title='Spring 2.0 Final Released'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115922605893927542</id><published>2006-09-25T18:07:00.000-05:00</published><updated>2006-09-25T18:17:58.123-05:00</updated><title type='text'>WikiJam</title><content type='html'>&lt;img style="float:left; margin:0 10px 10px 0;" src="http://photos1.blogger.com/blogger/7920/3027/320/1997_Fan_Club_Single.jpg" border="0" alt="" /&gt;A &lt;a href="http://www.theskyiscrape.com/website/wikijam/index.php/Main_Page"&gt;WikiJam&lt;/a&gt; é um wiki sobre o Pearl Jam. Nela podemos encontrar todos os setlists da banda, fotos, letras, discografia, etc...&lt;br /&gt;&lt;br /&gt;Se você é louco pelo Pearl Jam, não deixe de conferir e colaborar!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115922605893927542?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115922605893927542/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115922605893927542' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115922605893927542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115922605893927542'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/wikijam.html' title='WikiJam'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115892898256179776</id><published>2006-09-22T07:35:00.000-05:00</published><updated>2006-09-22T07:43:51.470-05:00</updated><title type='text'>Koders</title><content type='html'>Sabe quando você precisa utilizar uma API que você não conhece muito bem ou quando você não está com muita criatividade para implementar um algoritimo ?&lt;br /&gt;&lt;br /&gt;Seus problemas acabaram. O &lt;a href="http://www.koders.com"&gt;Koders &lt;/a&gt;é um sistema de busca de códigos open source. Ele fornece um filtro de pesquisa pelas mais variadas linguagens, incluindo: C, ASP, Java, Fortran, Lisp, Lua, etc...&lt;br /&gt;&lt;br /&gt;&lt;p class="alert"&gt;Além de fornecer exemplos, o &lt;a href="http://www.koders.com"&gt;Koders &lt;/a&gt;ajuda a popularizar muitos projetos open source.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115892898256179776?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115892898256179776/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115892898256179776' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115892898256179776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115892898256179776'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/koders.html' title='Koders'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115884600226271149</id><published>2006-09-21T08:25:00.000-05:00</published><updated>2006-09-21T08:45:44.200-05:00</updated><title type='text'>OutOfMemoryError</title><content type='html'>Estou trabalhando em uma aplicação que utiliza WebWork + Hibernate + Spring e as vezes ocorre a seguinte exceção:&lt;br /&gt;&lt;div class="code"&gt;Exception in thread "main" java.lang.OutOfMemoryError&lt;/div&gt;A API descreve essa exceção da seguinte forma: Lançado quando a Máquina Virtual Java não pode alocar um objeto por falta de memória, e nenhuma memória adicional pode ser disponibilizada pelo coletor de lixo.&lt;br /&gt;&lt;br /&gt;Ou seja, se a aplicação possui um grande número de classes sendo carregadas ou milhões de Strings, é possível que uma OutOfMemoryError ocorra.&lt;br /&gt;&lt;br /&gt;Por muito tempo a JVM lançava essa exceção sem adicionar uma mensagem detalhada para que os desenvolvedores pudessem ter mais informações sobre essa exceção. No Java 5 (Tiger) o erro é menos confuso, pois são fornecidas maiores informações:&lt;div class="code"&gt;Exception in thread "main" java.lang.OutOfMemoryError: Java heap space&lt;/div&gt;ou&lt;br /&gt;&lt;div class="code"&gt;Exception in thread "main" java.lang.OutOfMemoryError: PermGen full&lt;/div&gt;No Mustang a JVM fornece também a StackTrace:&lt;br /&gt;&lt;div class="code"&gt;Exception in thread "main" java.lang.OutOfMemoryError: Java heap space&lt;br /&gt;        at ConsumeHeap$BigObject.(ConsumeHeap.java:22)&lt;br /&gt;        at ConsumeHeap.main(ConsumeHeap.java:47)&lt;/div&gt;Ainda estou tentando achar onde está o problema e como ele pode ser resolvido. Se alguém já passou por esse problema, dá um toque!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115884600226271149?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115884600226271149/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115884600226271149' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115884600226271149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115884600226271149'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/outofmemoryerror.html' title='OutOfMemoryError'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115879740576589340</id><published>2006-09-20T19:08:00.000-05:00</published><updated>2006-09-20T19:15:13.086-05:00</updated><title type='text'>Dilbert</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2814370060918.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 206px" src="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2814370060918.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115879740576589340?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115879740576589340/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115879740576589340' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115879740576589340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115879740576589340'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/dilbert.html' title='Dilbert'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115879689089173316</id><published>2006-09-20T18:47:00.000-05:00</published><updated>2006-09-20T19:01:30.900-05:00</updated><title type='text'>100% Java Database</title><content type='html'>Precisando de um banco de dados 100 % java ? que tal experimentar o HSQLDB. O HSQLDB é um banco de dados relacional inteiramente escrito em Java. Ele posui um driver JDBC com suporte a ANSI-92 SQL, SQL 99 e 2003.&lt;br /&gt;&lt;br /&gt;O HSQLDB é uma ótima escolha para desenolvimento, teste e deploy de aplicações. Além de ser leve e oferecer suporte ao modo embarcado e servidor. Uma das grandes vantagens HSQLDB é poder ser agregado à aplicação de forma transparente. O pacote de download fornece ferramentas de gerenciamento e muitos exemplos que podem ser úteis ao desenvolvedor. &lt;br /&gt;&lt;br /&gt;O HSQLDB é um projeto livre e é utilizado amplamente pela comunidade e em diversos projetos livres. A versão corrente é extremamente estável, flexível e rápida.&lt;br /&gt;&lt;br /&gt;Mais informações: &lt;a href="http://www.hsqldb.org/"&gt;http://www.hsqldb.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115879689089173316?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115879689089173316/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115879689089173316' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115879689089173316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115879689089173316'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/100-java-database.html' title='100% Java Database'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115853625653921917</id><published>2006-09-17T18:27:00.001-05:00</published><updated>2006-09-17T18:41:53.236-05:00</updated><title type='text'>Spring em Ação</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.livroarbitrio.com.br/capas/8573935014.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 130px;" src="http://www.livroarbitrio.com.br/capas/8573935014.jpg" border="0" alt="" /&gt;&lt;/a&gt;Há algum tempo comprei o Spring em Ação, baseado nos ótimos comentários sobre a revisão do livro. O livro é bem legal e explica detalhadamente sobre o core do Spring, incluindo IoC, AOP, integração com frameworks web e integração com frameworks de mapeamento objeto-relacional.&lt;br /&gt;&lt;br /&gt;A tradução também está legal, os termos específicos não foram traduzidos ao pé da letra, o que acabou tornando a leitura bastante agradável. Recomendo a leitura e parabenizo o &lt;a href="http://daltoncamargo.blogspot.com/"&gt;Dalton&lt;/a&gt; pela ótima revisão técnica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115853625653921917?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115853625653921917/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115853625653921917' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115853625653921917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115853625653921917'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/09/spring-em-ao_17.html' title='Spring em Ação'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115482016942026480</id><published>2006-08-05T18:12:00.000-05:00</published><updated>2006-08-05T18:29:58.990-05:00</updated><title type='text'>Bug Tracking</title><content type='html'>Estava precisando de uma ferramenta de bug tracking simples e funcional. Dei uma pesquisa e acabei encontrando o &lt;a href="http://jtrac.info/"&gt;JTrac&lt;/a&gt;. O &lt;a href="http://jtrac.info/"&gt;JTrac&lt;/a&gt; é uma ferramenta open source escrita em Java que possui as seguintes características:&lt;br /&gt;&lt;br /&gt;    - Integração com e-mail&lt;br /&gt;    - Assistente de pesquisas&lt;br /&gt;    - Exportação para Excel&lt;br /&gt;    - Suporte para banco de dados&lt;br /&gt;    - etc...&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://jtrac.info/"&gt;JTrac&lt;/a&gt; foi construído utilizando o &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; e o &lt;a href="http://www.springframework.org/"&gt;Spring&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p class="alert"&gt;Se você está precisando gerenciar melhor os bugs de suas aplicações, experimente o &lt;a href="http://jtrac.info/"&gt;JTrac&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115482016942026480?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115482016942026480/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115482016942026480' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115482016942026480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115482016942026480'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/08/bug-tracking.html' title='Bug Tracking'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115439065204761465</id><published>2006-07-31T18:39:00.000-05:00</published><updated>2006-07-31T20:33:32.333-05:00</updated><title type='text'>Eclipse 3.2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.eclipse.org/evangelism/wallpaper/eclipse_1400x1050.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.eclipse.org/evangelism/wallpaper/eclipse_1400x1050.jpg" alt="" border="0" /&gt;&lt;/a&gt;Somente agora estou tendo a oportunidade de testar algumas das novidades do Eclipse 3.2. Uma das maiores novidades dessa versão é o &lt;a href="http://www.eclipse.org/projects/callisto.php"&gt;Callisto&lt;/a&gt;, um projeto que sincroniza o lançamento dos projetos mais importantes do &lt;a href="http://www.eclipse.org/"&gt;Eclipse.org&lt;/a&gt; (C/C++ IDE, GEF, WTP, VE, etc...) acabando com a dor de cabeça que os desenvolvedores tinham para manter diversos plugins na IDE. Veja como é fácil utilizar o &lt;a href="http://www.eclipse.org/projects/callisto.php"&gt;Callisto&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1º. Baixe o &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/download.php?dropFile=eclipse-platform-3.2-win32.zip"&gt;eclipse platform&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2º. Clique em &lt;span style="font-style: italic;"&gt;Help&lt;/span&gt; -&gt; &lt;span style="font-style: italic;"&gt;Software Updates &lt;/span&gt;-&gt; &lt;span style="font-style: italic;"&gt;Find and Install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3º. Selecione a opção &lt;span style="font-style: italic;"&gt;Callisto Discovery Site&lt;/span&gt;, clique em finish.&lt;br /&gt;&lt;br /&gt;4º. Selecione um mirror mais próximo para realizar o download.&lt;br /&gt;&lt;br /&gt;5º. Selecione o projeto que você deseja utilizar, selecione por exemplo o WTP e clique no botão Select Required para que as dependências para esse projeto também sejam baixadas. Agora basta confirmar e aguardar enquanto o download é realizado.&lt;br /&gt;&lt;br /&gt;&lt;p class="alert"&gt;O &lt;a href="http://www.eclipse.org/projects/callisto.php"&gt;Callisto&lt;/a&gt; é uma boa pedida para quem está iniciando e fica perdido com a sopa de letras e números que acabam assustando e atrapalhando o desenvolvedor.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115439065204761465?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115439065204761465/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115439065204761465' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115439065204761465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115439065204761465'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/07/eclipse-32.html' title='Eclipse 3.2'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-115028756543218284</id><published>2006-06-14T07:15:00.000-05:00</published><updated>2006-07-31T19:30:05.470-05:00</updated><title type='text'>Manual DisplayTag</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://displaytag.sourceforge.net/10/images/displaytag.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 233px; height: 66px;" src="http://displaytag.sourceforge.net/10/images/displaytag.png" alt="" border="0" /&gt;&lt;/a&gt;Foi lançado meu &lt;a href="http://www.portaljava.com/home/modules.php?name=Content&amp;pa=showpage&amp;amp;pid=155"&gt;tutorial&lt;/a&gt; sobre a DisplayTag no Portal Java.&lt;br /&gt;&lt;br /&gt;Divirta-se!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-115028756543218284?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/115028756543218284/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=115028756543218284' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115028756543218284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/115028756543218284'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/06/manual-displaytag.html' title='Manual DisplayTag'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-114833770044424112</id><published>2006-05-22T17:12:00.000-05:00</published><updated>2006-07-31T19:29:01.570-05:00</updated><title type='text'>Pearl Jam</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7920/3027/1600/PearlJam_060504120323028_wideweb__300x270.1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 286px; height: 243px;" src="http://photos1.blogger.com/blogger/7920/3027/320/PearlJam_060504120323028_wideweb__300x270.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;Foi lançado o oitavo disco do Pearl Jam. Esse é o primeiro disco produzido pela banda após Riot Act  (2002).&lt;br /&gt;&lt;br /&gt;O disco foi disponibilizado na internet na íntegra pela própria banda. Quem conhece o Pearl Jam sabe que eles tem uma ótima iniciativa: a venda bootlegs dos shows pelo site da banda. Assim que um show da banda termina, em poucas horas o bootleg é disponibilizado no site. Nos tempos de hoje essa é uma ótima idéia para combater a pirataria. Após algum tempo sem lançar clipes, o Pearl Jam lança clipes para as músicas: &lt;a href="http://www.youtube.com/watch?v=SxGJONVM-Us&amp;search=life%20wasted"&gt;Life Wasted&lt;/a&gt; e &lt;a href="http://www.youtube.com/watch?v=EmtEv1W0E7c&amp;amp;search=WWS"&gt;WSS&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://video.google.com/videosearch?q=pearl+jam"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-114833770044424112?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/114833770044424112/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=114833770044424112' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/114833770044424112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/114833770044424112'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/05/pearl-jam.html' title='Pearl Jam'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28564193.post-114833532047601185</id><published>2006-05-22T16:59:00.000-05:00</published><updated>2006-05-23T07:13:25.810-05:00</updated><title type='text'>Hello World !!!</title><content type='html'>Este é meu primeiro post no Blogger. Usarei esse espaço para falar um pouco de Java, Linux e Música.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28564193-114833532047601185?l=blognotfoundexception.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blognotfoundexception.blogspot.com/feeds/114833532047601185/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28564193&amp;postID=114833532047601185' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/114833532047601185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28564193/posts/default/114833532047601185'/><link rel='alternate' type='text/html' href='http://blognotfoundexception.blogspot.com/2006/05/hello-world.html' title='Hello World !!!'/><author><name>Guilherme</name><uri>http://www.blogger.com/profile/04286642077696226468</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/33/39612622_400ca8a3c8_m.jpg'/></author><thr:total>0</thr:total></entry></feed>
