<?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-6832240145669780170</id><updated>2011-09-12T05:26:43.120-07:00</updated><category term='jsr-286'/><category term='JBoss Portal'/><category term='breadcrumbs'/><category term='JBoss'/><category term='jsr-168'/><category term='interceptor'/><category term='Portal'/><title type='text'>Bruno Rossetto Machado</title><subtitle type='html'>Satisfaction does not come with achievement, but with effort.&lt;br&gt;Full effort is full victory.&lt;br&gt;&lt;br&gt;&lt;i&gt;Mohandas Gandhi&lt;/i&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-2164086693967978399</id><published>2010-04-23T07:07:00.001-07:00</published><updated>2010-04-23T07:08:19.119-07:00</updated><title type='text'>JBossInBossa 2010</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://edgarsilva.com.br/wp-content/uploads/2010/04/aquecendo2010.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 670px; height: 510px;" src="http://edgarsilva.com.br/wp-content/uploads/2010/04/aquecendo2010.png" 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/6832240145669780170-2164086693967978399?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/2164086693967978399/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=2164086693967978399' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2164086693967978399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2164086693967978399'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2010/04/jbossinbossa-2010.html' title='JBossInBossa 2010'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-512585289298154718</id><published>2009-03-20T13:17:00.000-07:00</published><updated>2009-03-23T14:28:12.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interceptor'/><category scheme='http://www.blogger.com/atom/ns#' term='jsr-168'/><category scheme='http://www.blogger.com/atom/ns#' term='Portal'/><category scheme='http://www.blogger.com/atom/ns#' term='jsr-286'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss Portal'/><title type='text'>"Injetando" funcionalidades nas páginas do JBoss Portal</title><content type='html'>Este é meu segundo Post sobre JBoss Portal neste ano, e irá abordar uma forma diferenciada de "injetar" determinada funcionalidade a uma área do layout do seu site usando AOP com uma implementação de &lt;span style="font-weight:bold;"&gt;JBossInterceptor&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;O JBoss Portal disponibiliza uma API de Injeção de Dependências onde é possível criar interceptadores a partir da classe abstrata JBossInterceptor. A classe ControllerInterceptor (q extends JBossInterceptor), é utilizada como base para adicionar segurança em commands, navegação, menus, header, dashboard, etc...&lt;br /&gt;É possível criar seu Aspecto para o JBoss Portal herdando &lt;span style="font-weight:bold;"&gt;ControllerInterceptor&lt;/span&gt; e criando seu método &lt;span style="font-weight:bold;"&gt;invoke&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para exemplificar, iremos adicionar um título ao layout do Portal utilizando o nome de cada página criado via interface administrativa em uma área pré-definida no layout utilizando o Interceptador &lt;span style="font-weight:bold;"&gt;PageCustomizerInterceptor&lt;/span&gt;, o qual já está sendo utilizado para outros fins. Resumindo, iremos alterar o PageCustomizerInterceptor para que a partir dele os títulos sejam incluídos dinamicamente.&lt;br /&gt;&lt;br /&gt;O &lt;span style="font-weight:bold;"&gt;Código 1&lt;/span&gt; define o MBean PageCustomizer com o atributo Title, onde é passado o Path da página que irá exibir o Título da página.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Código 1&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;   &amp;lt;mbean code="org.jboss.portal.core.aspects.controller.PageCustomizerInterceptor"&lt;br /&gt;          name="portal:service=Interceptor,type=Command,name=PageCustomizer" xmbean-dd=""&lt;br /&gt;          xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean"&amp;gt;&lt;br /&gt;      &amp;lt;xmbean/&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="TargetContextPath"&amp;gt;/portal-core&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="HeaderPath"&amp;gt;/WEB-INF/jsp/header/header.jsp&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="TabsPath"&amp;gt;/WEB-INF/jsp/header/tabs.jsp&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="Breadcrumbs"&amp;gt;/WEB-INF/jsp/header/breadcrumbs.jsp&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="Title"&amp;gt;/WEB-INF/jsp/header/title.jsp&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;!-- Overrides the value of core.login.namespace in config.xml  --&amp;gt;&amp;lt;!--  attribute name="LoginNamespace"&amp;gt;dashboard&amp;lt;/attribute --&amp;gt;&lt;br /&gt;      &amp;lt;depends optional-attribute-name="Config" proxy-type="attribute"&amp;gt;portal:service=ServerConfig&amp;lt;/depends&amp;gt;&lt;br /&gt;      &amp;lt;depends optional-attribute-name="PortalAuthorizationManagerFactory" proxy-type="attribute"&amp;gt;&lt;br /&gt;         portal:service=PortalAuthorizationManagerFactory&lt;br /&gt;      &amp;lt;/depends&amp;gt;&lt;br /&gt;      &amp;lt;depends optional-attribute-name="PortalObjectContainer" proxy-type="attribute"&amp;gt;portal:container=PortalObject&lt;br /&gt;      &amp;lt;/depends&amp;gt;&lt;br /&gt;   &amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O &lt;span style="font-weight:bold;"&gt;Código 2&lt;/span&gt; mostra a customização da classe &lt;span style="font-weight:bold;"&gt;PageCustomizerInterceptor&lt;/span&gt; onde foi criado o atributo de classe privado chamado &lt;span style="font-weight:bold;"&gt;title&lt;/span&gt; e seus métodos get e set. Este atributo está associado ao &lt;span style="font-weight:bold;"&gt;Title&lt;/span&gt; definido no MBean e será utilizado pelo método &lt;span style="font-weight:bold;"&gt;injectTitle&lt;/span&gt; para fazer o redirecionamento para o jsp de exibição do título. Além disso, o método injectTitle também adiciona dois atributos a requisição: org.jboss.portal.api.PORTAL_NODE e org.jboss.portal.api.PORTAL_RUNTIME_CONTEXT, com valor do Nó corrente e do contexto respectivamente. O método &lt;span style="font-weight:bold;"&gt;invoke&lt;/span&gt; é utilizado para montar a página com suas respectivas propriedades.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Código 2&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;public class PageCustomizerInterceptor extends ControllerInterceptor {&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;   /** title */&lt;br /&gt;   private String title;&lt;br /&gt;&lt;br /&gt;   public String getTitle() {&lt;br /&gt; return title;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public void setTitle(String title) {&lt;br /&gt; this.title = title;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;&lt;br /&gt;   public ControllerResponse invoke(ControllerCommand cmd) throws Exception  {&lt;br /&gt;      ControllerResponse resp = (ControllerResponse)cmd.invokeNext();&lt;br /&gt;&lt;br /&gt;      // Insert navigation portlet in the page&lt;br /&gt;      if (resp instanceof PageRendition) {&lt;br /&gt;         PageRendition rendition = (PageRendition)resp;&lt;br /&gt;&lt;br /&gt;         if (cmd instanceof PageCommand) {&lt;br /&gt;            PageCommand rpc = (PageCommand)cmd;&lt;br /&gt;            &lt;br /&gt;            String tabbedTitle = injectTitle(rpc);&lt;br /&gt;            if (tabbedTitle != null) {&lt;br /&gt;               Map windowProps = new HashMap();&lt;br /&gt;               windowProps.put(ThemeConstants.PORTAL_PROP_WINDOW_RENDERER, "emptyRenderer");&lt;br /&gt;               windowProps.put(ThemeConstants.PORTAL_PROP_DECORATION_RENDERER, "emptyRenderer");&lt;br /&gt;               windowProps.put(ThemeConstants.PORTAL_PROP_PORTLET_RENDERER, "emptyRenderer");&lt;br /&gt;               WindowResult res = new WindowResult("", tabbedTitle, Collections.EMPTY_MAP, windowProps, null, WindowState.NORMAL, Mode.VIEW);&lt;br /&gt;               WindowContext blah = new WindowContext("BLAH", "tituloPrincipal", "0", res);&lt;br /&gt;               rendition.getPageResult().addWindowContext(blah);&lt;br /&gt;&lt;br /&gt;               //&lt;br /&gt;               Region region = rendition.getPageResult().getRegion2("tituloPrincipal");&lt;br /&gt;               DynaRenderOptions.NO_AJAX.setOptions(region.getProperties());&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      return resp;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;&lt;br /&gt;   public String injectTitle(PageCommand rpc) {&lt;br /&gt;      ControllerContext controllerCtx = rpc.getControllerContext();&lt;br /&gt;      ControllerRequestDispatcher rd = controllerCtx.getRequestDispatcher(targetContextPath, title);&lt;br /&gt;&lt;br /&gt;      if (rd != null) {&lt;br /&gt;         Page page = rpc.getPage();&lt;br /&gt;         PortalAuthorizationManager pam = portalAuthorizationManagerFactory.getManager();&lt;br /&gt;         PortalNodeImpl node = new PortalNodeImpl(pam, page);&lt;br /&gt;&lt;br /&gt;         rd.setAttribute("org.jboss.portal.api.PORTAL_NODE", node);&lt;br /&gt;         rd.setAttribute("org.jboss.portal.api.PORTAL_RUNTIME_CONTEXT", Navigation.getPortalRuntimeContext());&lt;br /&gt;&lt;br /&gt;         rd.include();&lt;br /&gt;         return rd.getMarkup();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      return null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   ...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O &lt;span style="font-weight:bold;"&gt;Código 3&lt;/span&gt; mostra o JSP que exibe o título da página.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Código 3&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;&amp;lt;%@ page import="org.jboss.portal.api.node.PortalNode" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.Locale" %&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;   PortalNode node = (PortalNode)request.getAttribute("org.jboss.portal.api.PORTAL_NODE");&lt;br /&gt;&lt;br /&gt;   // Get a locale&lt;br /&gt;   Locale locale = request.getLocale();&lt;br /&gt;   if (locale == null)&lt;br /&gt;   {&lt;br /&gt;      locale = Locale.getDefault();&lt;br /&gt;   }&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%= node.getDisplayName(locale) %&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O &lt;span style="font-weight:bold;"&gt;Código 4&lt;/span&gt; mostra a chamada a taglib para encaixar o título no layout desejado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Código 4&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;&amp;lt;p:region regionName='tituloPrincipal' regionID='tituloPrincipal'/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Considerações finais&lt;/span&gt;&lt;br /&gt;Este post tratou uma forma flexível de inclusão de funcionalidades ao layout do JBoss Portal. Atualmente já é utilizada para outras áreas, mas, além da inclusão de títulos dinâmicos, pode ser totalmente adaptada para inclusão de breadcrumbs, por exemplo, principalmente para evitar ter que incluir seu respectivo Portlet em todas as páginas necessárias manualmente, economizando tempo precioso de desenvolvimento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-512585289298154718?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/512585289298154718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=512585289298154718' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/512585289298154718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/512585289298154718'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2009/03/injetando-funcionalidades-nas-paginas.html' title='&quot;Injetando&quot; funcionalidades nas páginas do JBoss Portal'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-7968598346310260370</id><published>2009-01-23T05:24:00.000-08:00</published><updated>2009-01-23T05:57:06.125-08:00</updated><title type='text'>Lançamento JBossBrasil.ORG!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__xJ0nFziV5I/SXnMpS5AltI/AAAAAAAAAF0/89nDUQ-92HU/s1600-h/openMindv2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 180px; height: 180px;" src="http://1.bp.blogspot.com/__xJ0nFziV5I/SXnMpS5AltI/AAAAAAAAAF0/89nDUQ-92HU/s200/openMindv2.gif" alt="" id="BLOGGER_PHOTO_ID_5294487846768383698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Na última quarta-feira, &lt;span style="font-weight: bold;"&gt;21 de janeiro de 2009,&lt;/span&gt; aconteceu o lançamento da comunidade &lt;a href="http://jbossbrasil.ning.com/" target="_blank"&gt;JBossBrasil.ORG&lt;/a&gt;. O evento foi apresentado no auditório da GlobalCode. É um grande incentivo ao aprendizado, troca de idéias e boas práticas das ferramentas JBoss.&lt;br /&gt;É uma iniciativa muito importante para nós Brasileiros para que possamos contribuir cada vez mais a ferramentas Open Source.&lt;br /&gt;&lt;br /&gt;Durante a primeira apresentação, Leandro Lima - um dos embaixadores da comunidade - mostrou os principais objetivos da comunidade e esclareceu dúvidas sobre o que é e o que não é a comunidade.&lt;br /&gt;&lt;br /&gt;A noite também contou com a participação especial de Chris Morgan que é Senior Marketing Manager da plataforma JON, apresentando as ferramentas JON, Jopr e Embedded Jopr e suas diferenças.&lt;br /&gt;&lt;br /&gt;Foi uma noite importante para a comunidade JBoss e principalmente para todos que puderam participar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Veja as fotos em:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/alessandrolazarotti/3217148963/in/set-72157612860854836/" target="_blank"&gt;http://www.flickr.com/photos/alessandrolazarotti/3217148963/in/set-72157612860854836/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notícias sobre o lançamento:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jbossbrasil.ning.com/forum/topics/lancamento-do-jbossbrasilorg" target="_blank"&gt;http://jbossbrasil.ning.com/forum/topics/lancamento-do-jbossbrasilorg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edgarsilva.com.br/2009/01/15/lancamento-dia-21-da-comunidade-jbossbrasil-em-sao-paulo/" target="_blank"&gt;http://edgarsilva.com.br/2009/01/15/lancamento-dia-21-da-comunidade-jbossbrasil-em-sao-paulo/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.leandrolima.eti.br/" target="_blank"&gt;http://www.leandrolima.eti.br/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://br-linux.org/2009/red-hat-patrocina-lancamento-da-comunidade-jbossbrasilorg/" target="_blank"&gt;http://br-linux.org/2009/red-hat-patrocina-lancamento-da-comunidade-jbossbrasilorg/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-7968598346310260370?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/7968598346310260370/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=7968598346310260370' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7968598346310260370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7968598346310260370'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2009/01/lanamento-jbossbrasilorg.html' title='Lançamento JBossBrasil.ORG!'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__xJ0nFziV5I/SXnMpS5AltI/AAAAAAAAAF0/89nDUQ-92HU/s72-c/openMindv2.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-8053827303379728002</id><published>2009-01-21T04:38:00.000-08:00</published><updated>2009-03-09T14:39:45.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='breadcrumbs'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss Portal'/><title type='text'>Breadcrumbs no JBoss Portal</title><content type='html'>Estive recentemente em um cliente que precisava adicionar &lt;b&gt;Breadcrumbs&lt;/b&gt; em seu site criado em JBoss Portal para facilitar a navegação do usuário. Apenas para esclarecer um pouco antes de começar a parte técnica, Breadcrumb é um esquema de navegação o qual tem por objetivo mostrar o rastro, ou o caminho, percorrido em uma árvore de navegação de um site até chegar em sua página atual.&lt;br /&gt;&lt;br /&gt;Imaginem que para entrar na página de seguros de um carro o caminho seja:&lt;br /&gt;&lt;br /&gt;&lt;a href="#"&gt;&lt;b&gt;Home&lt;/b&gt;&lt;/a&gt; &gt; &lt;a href="#"&gt;&lt;b&gt;Produtos&lt;/b&gt;&lt;/a&gt; &gt; &lt;a href="#"&gt;&lt;b&gt;Seguros&lt;/b&gt;&lt;/a&gt; &gt; &lt;a href="#"&gt;&lt;b&gt;Automóvel&lt;/b&gt;&lt;/a&gt; &gt; &lt;b&gt;Valor de Veículos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O caminho acima é um Breadcrumb!!! Na verdade, estamos apenas colocando um nome a uma coisa que todo mundo utiliza em sites e é vastamente conhecido. As pessoas que dedicam seu tempo em arquitetura de informação não teriam problemas com o termo "Breadcrumbs", porém, para nós meros mortais desenvolvedores de software especialmente em Java (JEE) acaba sendo um termo novo.&lt;br /&gt;&lt;br /&gt;Recomendo fortemente a leitura de alguns artigos no site do Guilhermo Reis &lt;a href="http://www.guilhermo.com" target="_blank"&gt;http://www.guilhermo.com&lt;/a&gt; para mais informações sobre arquitetura de informações.&lt;br /&gt;&lt;br /&gt;Após esta breve introdução, iremos a focar na criação de Breadcrumbs para o JBoss Portal, o qual infelizmente ainda não conta com uma solução "bate-e-pronto".&lt;br /&gt;&lt;br /&gt;Basicamente toda e qualquer página no seu portal é uma instância de &lt;b&gt;PortalNode&lt;/b&gt;. Você pode verificar como exemplo a página &lt;pre&gt;jboss-portal.sar/portal-core.war/WEB-INF/jsp/header/tabs.jsp&lt;/pre&gt; que é responsável em criar o menu superior original do JBoss Portal.&lt;br /&gt;&lt;br /&gt;Veja abaixo um trecho de código retirado da &lt;b&gt;tabs.jsp&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;PortalNode root = (PortalNode)request.getAttribute("org.jboss.portal.api.PORTAL_NODE");&lt;br /&gt;PortalNode portal = root;&lt;br /&gt;PortalNode mainPage = portal;&lt;br /&gt;&lt;br /&gt;while (portal.getType() != PortalNode.TYPE_PORTAL)&lt;br /&gt;{&lt;br /&gt;   mainPage = portal;&lt;br /&gt;   portal = portal.getParent();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O código acima obtém o PORTAL_NODE (página) corrente e faz um loop obtendo seu &lt;b&gt;"nó pai"&lt;/b&gt; ou &lt;b&gt;"parent"&lt;/b&gt; até chegar em um PortalNode do tipo Portal.&lt;br /&gt;&lt;br /&gt;Um PortalNode pode ser qualquer instância de Página, Portal, Contexto e Janela. A diferenciação de cada um deles é realizada com as constantes &lt;b&gt;PortalNode.TYPE_PAGE, PortalNode.TYPE_CONTEXT, PortalNode.TYPE_PORTAL&lt;/b&gt; e &lt;b&gt;PortalNode.TYPE_WINDOW&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Um dos grandes problemas que senti ao criar os Breadcrumbs foi a obtenção da página corrente em um .jsp ou em um Portlet. Infelizmente, não descobri uma forma fácil de obter isso diretamente no .jsp.&lt;br /&gt;&lt;br /&gt;Uma das sacadas para inclusão do breadcrumb seria reaproveitar a tag p:region adicionando um nome para a região e um regionID, assim como é realizado atualmente para o &lt;b&gt;dashboardnav&lt;/b&gt; e o &lt;b&gt;navigation&lt;/b&gt; sendo incluída diretamente em seu layout, e utilizar Aspectos para inclui-lo dinamicamente em todas as ocorrências de p:region breadcrumb, por exemplo.&lt;br /&gt;&lt;br /&gt;Outra forma de criar breadcrumb é desenvolver um Portlet e adiciona-lo manualmente nas páginas que deseja inclui-lo. Neste primeiro post irei mostrar apenas como criar um Portlet para o breadcrumb.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Abordagem com Portlet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O código fonte abaixo mostra o Portlet BreadCrumbsPortlet o qual herda de JBossPortlet, disponibilizando o request e o response no formato de JBossRenderRequest e JBossRenderResponse, o que irá facilitar a obtençao de PortalNodes.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;public class BreadCrumbsPortlet extends JBossPortlet {&lt;br /&gt;&lt;br /&gt;  private static final String VIEW = "/WEB-INF/jsp/breadcrumb/view.jsp";&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void processAction(JBossActionRequest request, JBossActionResponse response) throws PortletException, IOException {&lt;br /&gt;&lt;br /&gt;      response.setPortletMode(PortletMode.VIEW);&lt;br /&gt;      return;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  protected void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, IOException, UnavailableException {&lt;br /&gt;&lt;br /&gt;      response.setContentType("text/html");&lt;br /&gt;   &lt;br /&gt;      //portlet utilizado&lt;br /&gt;      PortalNode node = request.getPortalNode();&lt;br /&gt;    &lt;br /&gt;      List l = new ArrayList();&lt;br /&gt;   &lt;br /&gt;      //portal node&lt;br /&gt;      while (node.getType() != PortalNode.TYPE_PORTAL) {&lt;br /&gt;          if (node.getType() == PortalNode.TYPE_PAGE) {&lt;br /&gt;              l.add(node); &lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;          node = node.getParent();&lt;br /&gt;      }&lt;br /&gt;           &lt;br /&gt;      Object[] array = l.toArray();&lt;br /&gt;      List nodes = new ArrayList();&lt;br /&gt;      for (int i = array.length - 1; i &gt;= 0 ; i--) {&lt;br /&gt;          nodes.add((PortalNode)array[i]);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      request.setAttribute("org.jboss.portal.api.PORTAL_RUNTIME_CONTEXT", Navigation.getPortalRuntimeContext());&lt;br /&gt;      request.setAttribute("list", nodes);&lt;br /&gt;   &lt;br /&gt;      PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher(VIEW);&lt;br /&gt;      prd.include(request, response);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;O método doView basicamente obtém o PortalNode corrente e vai adicionando cada um dos seus "parents" em uma lista, até chegar em um PortalNode que seja TYPE_PORTAL. Em seguida faz uma nova iteração ordenando na forma inversa e adicionando em uma lista de PortalNodes que será enviada para a tela.&lt;br /&gt;&lt;br /&gt;O view.jsp irá apenas exbir os PortalNodes que já estão ordenados na tela adicionando links.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;&amp;lt;%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.ArrayList" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.List" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.Locale" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.Iterator" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="org.jboss.portal.api.node.PortalNode" %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="org.jboss.portal.api.PortalRuntimeContext" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;portlet:defineObjects/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% String contextPath = renderResponse.encodeURL(renderRequest.getContextPath()); %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&lt;br /&gt;PortalRuntimeContext context = (PortalRuntimeContext)request.getAttribute("org.jboss.portal.api.PORTAL_RUNTIME_CONTEXT");&lt;br /&gt;&lt;br /&gt;// Get a locale&lt;br /&gt;Locale locale = request.getLocale();&lt;br /&gt;if (locale == null)&lt;br /&gt;{&lt;br /&gt;   locale = Locale.getDefault();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;List l = (List)request.getAttribute("list");&lt;br /&gt;Iterator iterator = l.iterator();&lt;br /&gt;while (iterator.hasNext())&lt;br /&gt;{&lt;br /&gt;   PortalNode node = (PortalNode)iterator.next();&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;a href="&amp;lt;%= node.createURL(context) %&amp;gt;"&amp;gt;&amp;lt;%= node.getDisplayName(locale) %&amp;gt;&amp;lt;/a&amp;gt; &amp;lt;% if (iterator.hasNext()) { %&amp;gt; / &amp;lt;% } %&amp;gt; &lt;br /&gt;&amp;lt;%&lt;br /&gt;}&lt;br /&gt;%&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para fazer com que este Portlet funcione no JBoss Portal 2.7 ou superior, é necessário criar um filtro, conforme o link &lt;a href="http://docs.jboss.org/jbportal/v2.7.0.B1/referenceGuide/html/changelog.html" target="_blank"&gt;http://docs.jboss.org/jbportal/v2.7.0.B1/referenceGuide/html/changelog.html&lt;/a&gt;. Um exemplo do portlet.xml está abaixo:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow: auto;"&gt;&amp;lt;portlet-app&lt;br /&gt;   xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"&lt;br /&gt;   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;   xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"&lt;br /&gt;   version="2.0"&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;   &amp;lt;filter&amp;gt;&lt;br /&gt;      &amp;lt;filter-name&amp;gt;JBossPortletFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;      &amp;lt;filter-class&amp;gt;org.jboss.portlet.filter.JBossPortletFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;      &amp;lt;lifecycle&amp;gt;ACTION_PHASE&amp;lt;/lifecycle&amp;gt;&lt;br /&gt;      &amp;lt;lifecycle&amp;gt;RENDER_PHASE&amp;lt;/lifecycle&amp;gt;&lt;br /&gt;   &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;      &amp;lt;filter-name&amp;gt;JBossPortletFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;      &amp;lt;portlet-name&amp;gt;BreadCrumbsPortlet&amp;lt;/portlet-name&amp;gt;&lt;br /&gt;  &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;portlet&amp;gt;&lt;br /&gt;    &amp;lt;description&amp;gt;Simple portlet to create breadcrumbs&amp;lt;/description&amp;gt;&lt;br /&gt;    &amp;lt;portlet-name&amp;gt;BreadCrumbsPortlet&amp;lt;/portlet-name&amp;gt;&lt;br /&gt;    &amp;lt;portlet-class&amp;gt;com.jboss.breadcrumb.BreadCrumbsPortlet&amp;lt;/portlet-class&amp;gt;&lt;br /&gt;    &amp;lt;supports&amp;gt;&lt;br /&gt;      &amp;lt;mime-type&amp;gt;text/html&amp;lt;/mime-type&amp;gt;&lt;br /&gt;      &amp;lt;portlet-mode&amp;gt;VIEW&amp;lt;/portlet-mode&amp;gt;&lt;br /&gt;    &amp;lt;/supports&amp;gt;&lt;br /&gt;    &amp;lt;supported-locale&amp;gt;en&amp;lt;/supported-locale&amp;gt;&lt;br /&gt;    &amp;lt;supported-locale&amp;gt;pt_BR&amp;lt;/supported-locale&amp;gt;&lt;br /&gt;    &amp;lt;resource-bundle&amp;gt;BreadCrumbsResource&amp;lt;/resource-bundle&amp;gt;&lt;br /&gt;    &amp;lt;portlet-info&amp;gt;&lt;br /&gt;       &amp;lt;title&amp;gt;BreadCrumb&amp;lt;/title&amp;gt;&lt;br /&gt;       &amp;lt;keywords&amp;gt;breadcrumb, breadcrumbs&amp;lt;/keywords&amp;gt;&lt;br /&gt;    &amp;lt;/portlet-info&amp;gt;&lt;br /&gt;  &amp;lt;/portlet&amp;gt;&lt;br /&gt;&amp;lt;/portlet-app&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Feito isto, faça o deploy do Portlet em seu JBoss Portal e adicione-o nas páginas que deseja.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-8053827303379728002?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/8053827303379728002/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=8053827303379728002' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/8053827303379728002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/8053827303379728002'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2009/01/breadcrumbs-no-jboss-portal.html' title='Breadcrumbs no JBoss Portal'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-7411916110087285220</id><published>2008-11-26T05:00:00.000-08:00</published><updated>2008-11-26T05:56:45.395-08:00</updated><title type='text'>Jopr!!! :)</title><content type='html'>O Jopr é uma ferramenta de gerenciamento e monitoração que permite "cuidar"de forma centralizada de diferentes servidores que fazem parte do seu ambiente. Resumindo, facilita a manutenção, testes, deployment e monitoração de JBoss AS, Apache, Postgres, Sistema Operacional, File System, etc... etc... etc... além de proporcionar gráficos de disponibilidade e alertas.&lt;br /&gt;&lt;br /&gt;O nome Jopr (se pronuncia jopper) foi escolhido baseado no filme Jogos de Guerra (WarGames), onde havia um super computador chamado WOPR (Whopper) - War Operation Plan Response. :)&lt;br /&gt;&lt;br /&gt;O Embedded Jopr também é uma ferramenta importante em toda essa história, pois tem foco em apenas 1 instância de JBoss disponibilizando ferramentas para monitorar e manter esta instância em forma gráfica (isso mesmo, gráfica).&lt;br /&gt;&lt;br /&gt;Veja algumas referências sobre o Jopr abaixo.&lt;br /&gt;Fórum:&lt;br /&gt;http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;f=292&lt;br /&gt;&lt;br /&gt;Jopr:&lt;br /&gt;http://www.jboss.org/jopr/&lt;br /&gt;&lt;br /&gt;Embedded Jopr:&lt;br /&gt;http://www.jboss.org/embjopr/&lt;br /&gt;&lt;br /&gt;WarGames:&lt;br /&gt;http://en.wikipedia.org/wiki/WarGames&lt;br /&gt;&lt;br /&gt;Entrevista com Christian Morgan sobre o Jopr&lt;br /&gt;http://www.redhatmagazine.com/2008/10/31/interview-chris-morgan-on-jopr/&lt;br /&gt;&lt;br /&gt;Demo do Embedded Jopr:&lt;br /&gt;http://www.jboss.org/embjopr/demo.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-7411916110087285220?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/7411916110087285220/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=7411916110087285220' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7411916110087285220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7411916110087285220'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/11/jopr.html' title='Jopr!!! :)'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-7679571814241398616</id><published>2008-09-30T13:35:00.000-07:00</published><updated>2008-09-30T13:42:15.152-07:00</updated><title type='text'>Verificando código das Rules no Drools</title><content type='html'>Em muitos casos é necessário verificar o códifo fonte referente às Rules do Drools para entender algum erro gerado.&lt;br /&gt;Para isso, utilize o parâmetro de start de VM:&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;-Ddrools.dump.dir=SEUDIRETORIO&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Todos os fontes serão gerados no diretório informado.&lt;br /&gt;&lt;br /&gt;Ex.:&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;package org.acme.fidelity;&lt;br /&gt;import org.acme.fidelity.*;&lt;br /&gt;public class Rule_CartaoBranco_0 {&lt;br /&gt;    private static final long serialVersionUID = 400L;&lt;br /&gt;    public static void consequence(org.drools.spi.KnowledgeHelper drools, org.acme.fidelity.SolicitacaoPassageiro sol, org.drools.FactHandle sol__Handle__   ) throws Exception {&lt;br /&gt;&lt;br /&gt;     sol.setCartao(Cartao.BRANCO)&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-7679571814241398616?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/7679571814241398616/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=7679571814241398616' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7679571814241398616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7679571814241398616'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/09/verificando-cdigo-das-rules-no-drools.html' title='Verificando código das Rules no Drools'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-993148117808027057</id><published>2008-08-19T10:09:00.000-07:00</published><updated>2008-08-19T10:18:43.699-07:00</updated><title type='text'>JBoss Brasil!</title><content type='html'>Comunidade de usuários JBoss oficial do Brasil foi lançada recentemente pelo Edgar!Vale a pena conferir. &lt;a href="http://jbossbrasil.ning.com/"&gt;http://jbossbrasil.ning.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://static.ning.com/jbossbrasil/widgets/index/swf/badge.swf?v=3.5.1%3A6910" quality="high" scale="noscale" salign="lt" wmode="transparent" bgcolor="#ffffff" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="206" height="64" allowScriptAccess="always" flashvars="networkUrl=http%3A%2F%2Fjbossbrasil.ning.com%2F&amp;amp;panel=user&amp;amp;username=2cyb0c8jrau7l&amp;amp;avatarUrl=http%3A%2F%2Fapi.ning.com%2Ffiles%2FLnCjAQJGqooNkAebIylIWdCrngdj%2A88bfORo7NpiJu2eMiChMwBYhkFn-vW-4vFJJqstHAqP1TGziWPU6pYLOW-AFZSbO8BS%2Fpicture.jpg%3Fwidth%3D48%26height%3D48%26crop%3D1%253A1&amp;amp;iAmMemberText=Eu+sou+membro+de%3A&amp;amp;configXmlUrl=http%3A%2F%2Fstatic.ning.com%2Fjbossbrasil%2Finstances%2Fmain%2Fembeddable%2Fbadge-config.xml%3Ft%3D1218741465" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://jbossbrasil.ning.com/xn/detail/u_2cyb0c8jrau7l"&gt;Exibir minha página em &lt;em&gt;JBoss Brasil&lt;/em&gt;&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-993148117808027057?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/993148117808027057/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=993148117808027057' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/993148117808027057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/993148117808027057'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/08/jboss-brasil.html' title='JBoss Brasil!'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-6807334187925137290</id><published>2008-08-18T12:00:00.000-07:00</published><updated>2008-08-22T08:14:01.118-07:00</updated><title type='text'>Detectando Connection Leaks no JBoss - Parte 1</title><content type='html'>Quando o usuário te liga falando as famosas frases:&lt;br /&gt;- "alguma coisa está acontecendo!" ou&lt;br /&gt;- "hummm, a aplicação está estranha!" ou ainda&lt;br /&gt;- "esse JBoss NÃO FUNCIONA! não fecha minhas conexões!" ... hummm "JBoss não fecha suas conexões"? Ok, o JBoss fecha conexões idle (timeout default de 15 minutos), mas até lá já estourou o pool, e olhando o log você verá as mensagens:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;15:58:48,931 ERROR [STDERR] org.jboss.util.NestedSQLException: No ManagedConnections available within configured blocking timeout ( 30000 [ms] ); - nested throwable: (javax.resource.ResourceException: No ManagedConnections available within configured blocking timeout ( 30000 [ms] ))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;E até que o JBoss é gente fina, ao fechar alguma conexão aberta avisa educadamente para você fazer isso:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;16:03:19,135 INFO  [CachedConnectionManager] Closing a connection for you.  Please close them yourself: org.jboss.resource.adapter.jdbc.WrappedConnection@121dcac java.lang.Throwable: STACKTRACE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Mas afinal, em alguns casos a aplicação não loga em modo debug onde está abrindo/fechando as conexões, e em aplicações grandes, ou sem padronização, a tarefa de detectar um gargalo destes torna-se tarefa complicada. Então, como detectar onde está ocorrendo a leak?&lt;br /&gt;&lt;br /&gt;Este post tem como objetivo mostrar algumas técnicas para isolar os pontos e atacá-los.&lt;br /&gt;&lt;br /&gt;Para fazer esta prova de conceito, criei uma classe que tenta abrir 30 conexões em pool de no máximo 20, fazendo um loop e armazenando-as em um Map.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;public class ConnectionLeak {&lt;br /&gt; &lt;br /&gt;   private static Logger log = Logger.getLogger(ConnectionLeak.class);&lt;br /&gt;&lt;br /&gt;   private static Map m = new HashMap();&lt;br /&gt; &lt;br /&gt;   public static void action() {&lt;br /&gt;      for (int i = 0; i &lt; 30; i++) {&lt;br /&gt;         try {&lt;br /&gt;            Context ic = new InitialContext();&lt;br /&gt;            DataSource ds = (DataSource) ic.lookup("java:DefaultDS");&lt;br /&gt;            Connection c = ds.getConnection();&lt;br /&gt;            log.info("Obtendo conexao: " + c + " loop: " + i);&lt;br /&gt;            m.put(i, c);&lt;br /&gt;         } catch (NamingException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;         } catch (SQLException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estou logando um toString de cada conexão após abri-la:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;16:31:33,444 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@41f871 loop: 0&lt;br /&gt;16:31:33,445 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@11df416 loop: 1&lt;br /&gt;16:31:33,446 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@183d60d loop: 2&lt;br /&gt;16:31:33,447 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@5a1e6b loop: 3 &lt;br /&gt;16:31:33,447 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@83198c loop: 4 &lt;br /&gt;16:31:33,448 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@1025f9f loop: 5 &lt;br /&gt;16:31:33,449 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@d3e83f loop: 6 &lt;br /&gt;16:31:33,450 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@3492fc loop: 7 &lt;br /&gt;16:31:33,450 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@19e0994 loop: 8 &lt;br /&gt;16:31:33,451 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@86f847 loop: 9 &lt;br /&gt;16:31:33,452 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@1162ab9 loop: 10 &lt;br /&gt;16:31:33,453 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@4eda4a loop: 11 &lt;br /&gt;16:31:33,465 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@1eab16b loop: 12 &lt;br /&gt;16:31:33,466 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@126099c loop: 13 &lt;br /&gt;16:31:33,467 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@40eca3 loop: 14 &lt;br /&gt;16:31:33,468 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@6fe350 loop: 15 &lt;br /&gt;16:31:33,469 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@1b4b415 loop: 16 &lt;br /&gt;16:31:33,469 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@9addef loop: 17 &lt;br /&gt;16:31:33,470 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@1609812 loop: 18 &lt;br /&gt;16:31:33,471 INFO  [ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@9fe953 loop: 19&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;1. Monitore as conexões ativas do seu Datasource&lt;/b&gt;&lt;br /&gt;Existem boas ferramentas para realizar uma monitoração efetiva do seu pool de conexões, entre elas está o JON - JBoss Operations Network que além de guardar histórico podendo ser filtrado em horas, dias, meses também gera alertas com ações remediativas e envio de e-mails ou traps SNMP. Porém o JBoss AS disponibiliza o Web Console e o JMX Console que, apesar de não serem tão completos como o JON, podem ser utilizados para um diagnóstico inicial. Abaixo um Screenshot do meu Connection Leak simulado:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__xJ0nFziV5I/SKnNP49dARI/AAAAAAAAACw/64ZcfL6gNAo/s1600-h/Screenshot-1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/__xJ0nFziV5I/SKnNP49dARI/AAAAAAAAACw/64ZcfL6gNAo/s200/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5235941714666782994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Habilite o log abaixo no jboss-log4j.xml:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;&amp;lt;!-- Show the evolution of the DataSource pool in the logs [inUse/Available/Max]--&amp;gt;&lt;br /&gt;&amp;lt;category name="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"&amp;gt;&lt;br /&gt;   &amp;lt;priority value="TRACE" class="org.jboss.logging.XLevel"/&amp;gt;&lt;br /&gt;&amp;lt;/category&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint" style="overflow:auto"&gt;2008-08-18 16:58:04,460 INFO  [org.jboss.ConnectionLeak] Obtendo conexao: org.jboss.resource.adapter.jdbc.WrappedConnection@4f12c2 loop: 1&lt;br /&gt;2008-08-18 16:58:04,461 TRACE [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] supplying ManagedConnection from pool: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@15092c0[state=NORMAL mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@d2883b handles=0 lastUse=1219089352148 permit=false trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$PoolBySubject@554189 context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@141a32f xaResource=org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@1ee1775 txSync=null]&lt;br /&gt;2008-08-18 16:58:04,462 TRACE [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Got connection from pool org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@15092c0[state=NORMAL mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@d2883b handles=0 lastUse=1219089352148 permit=true trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$PoolBySubject@554189 context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@141a32f xaResource=org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@1ee1775 txSync=null] [InUse/Available/Max]: [3/17/20]&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Verifique as conexões em cache&lt;/b&gt;&lt;br /&gt;O MBean CachedConnectionManager possui o método listInUseConnections() que permite a verificação das conexões em uso. Pode te dar alguma pista:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__xJ0nFziV5I/SKnW-j1HzKI/AAAAAAAAAC4/l0hqNiNx0E8/s1600-h/Untitled.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/__xJ0nFziV5I/SKnW-j1HzKI/AAAAAAAAAC4/l0hqNiNx0E8/s200/Untitled.jpg" alt="" id="BLOGGER_PHOTO_ID_5235952412053195938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;to be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-6807334187925137290?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/6807334187925137290/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=6807334187925137290' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/6807334187925137290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/6807334187925137290'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/08/detectando-connection-leaks-no-jboss.html' title='Detectando Connection Leaks no JBoss - Parte 1'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__xJ0nFziV5I/SKnNP49dARI/AAAAAAAAACw/64ZcfL6gNAo/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-6979819877024808399</id><published>2008-08-12T21:48:00.000-07:00</published><updated>2008-08-12T22:00:20.955-07:00</updated><title type='text'>JBoss 4.2.3.GA</title><content type='html'>Pouco antes de sair o tão esperado JBoss 5, foi lançado o JBoss 4.2.3.GA que tem como principal característica, além das correções de bugs referentes à versões anteriores, a possibilidade de ser compilado com Java 6 descrita na Feature Request &lt;a href="https://jira.jboss.org/jira/browse/JBAS-4501"&gt;JBAS-4501&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vale lembrar que o suporte a JDBC 4 deve ser considerado como modo experimental.&lt;br /&gt;&lt;br /&gt;Esta &lt;span class="wikiContent"&gt;&lt;span style="font-weight: bold;"&gt;G&lt;/span&gt;eneral &lt;span style="font-weight: bold;"&gt;A&lt;/span&gt;vailability (GA) foi disponibilizada no dia 18 de julho de 2008 (demorei um pouco para postar...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Release Notes:&lt;/span&gt;&lt;br /&gt;&lt;a href="https://sourceforge.net/project/shownotes.php?release_id=614346&amp;amp;group_id=22866"&gt;https://sourceforge.net/project/shownotes.php?release_id=614346&amp;amp;group_id=22866&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-6979819877024808399?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/6979819877024808399/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=6979819877024808399' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/6979819877024808399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/6979819877024808399'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/08/jboss-423ga.html' title='JBoss 4.2.3.GA'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-2772005738082848379</id><published>2008-08-12T20:38:00.000-07:00</published><updated>2008-08-12T21:08:09.856-07:00</updated><title type='text'>JPS - Process Status Tool</title><content type='html'>Após alguns longos meses estou voltando a postar nesta madrugada de quarta-feira (13/08/2008) enquanto aguardo a finalização de alguns testes.&lt;br /&gt;Existe uma ferramenta muito útil e de fácil utilização chamada JPS, a qual lista os processos Java startados no seu Sistema Operacional.&lt;br /&gt;&lt;br /&gt;Bem melhor que digitar ps aux | grep java! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exemplos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;[bmachado@bmachado ~]$ jps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;5343 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;30286 Jps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;30271 Main&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[bmachado@bmachado ~]$ jps -l&lt;/span&gt;&lt;br /&gt;5343&lt;br /&gt;30456 sun.tools.jps.Jps&lt;br /&gt;30271 org.jboss.Main&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[bmachado@bmachado ~]$ jps -m&lt;/span&gt;&lt;br /&gt;5343&lt;br /&gt;30529 Main -c node1&lt;br /&gt;30664 Jps -m&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mais informações:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html"&gt;http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-2772005738082848379?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/2772005738082848379/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=2772005738082848379' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2772005738082848379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2772005738082848379'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/08/jps-process-status-tool.html' title='JPS - Process Status Tool'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-438055764635293302</id><published>2008-07-01T19:10:00.000-07:00</published><updated>2008-07-01T19:58:41.464-07:00</updated><title type='text'>Open TDC - 2008</title><content type='html'>No dia 28/06 aconteceu o &lt;a href="http://www.thedevelopersconference.com.br/opentdc.html"&gt;Open TDC&lt;/a&gt; da GlobalCode o qual contou com palestras muito legais sobre JavaSE, JavaEE, metodologias e tendências tecnológicas.&lt;br /&gt;&lt;br /&gt;Apresentei a palestra Administração do JBoss Application Server que dava algumas dicas sobre ambiente de produção, performance, tuning, balanceamento de carga e monitoramento de um ambiente utilizando JON (JBoss Operations Network).&lt;br /&gt;&lt;br /&gt;Foi uma experiência muito gratificante poder participar de um evento bacana ao lado de pessoas tão bem relacionadas no mercado Java.&lt;br /&gt;&lt;br /&gt;Como disse na palestra, só tenho a agradecer a todas as pessoas que compareceram, pois era uma manhã fria de sábado, e mesmo assim estavam lá para assistir palestras sobre Java. :)&lt;br /&gt;&lt;br /&gt;Aproveitei para rever alguns amigos das antigas como Dr. Spock que também palestrou no evento.&lt;br /&gt;&lt;br /&gt;Valeu Edgar e David pelo apoio e confiança.&lt;br /&gt;&lt;br /&gt;Veja algumas fotos abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__xJ0nFziV5I/SGrnv9VKUyI/AAAAAAAAACg/OnXG4iXvrMU/s1600-h/0081.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__xJ0nFziV5I/SGrnv9VKUyI/AAAAAAAAACg/OnXG4iXvrMU/s320/0081.JPG" alt="" id="BLOGGER_PHOTO_ID_5218237929365328674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__xJ0nFziV5I/SGrmnjXPfsI/AAAAAAAAACA/TkNWusNV4vU/s1600-h/0084.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__xJ0nFziV5I/SGrmnjXPfsI/AAAAAAAAACA/TkNWusNV4vU/s320/0084.JPG" alt="" id="BLOGGER_PHOTO_ID_5218236685444153026" border="0" /&gt;&lt;/a&gt;Exemplo de balanceamento de carga 2 JBosses com Apache e mod_jk&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/__xJ0nFziV5I/SGrnvQ7158I/AAAAAAAAACI/-r2Vj2lm6GU/s1600-h/0082.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/__xJ0nFziV5I/SGrnvQ7158I/AAAAAAAAACI/-r2Vj2lm6GU/s320/0082.JPG" alt="" id="BLOGGER_PHOTO_ID_5218237917447972802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/__xJ0nFziV5I/SGrnvkvyoKI/AAAAAAAAACQ/xDKkmNvGlww/s1600-h/0091.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/__xJ0nFziV5I/SGrnvkvyoKI/AAAAAAAAACQ/xDKkmNvGlww/s320/0091.JPG" alt="" id="BLOGGER_PHOTO_ID_5218237922766135458" border="0" /&gt;&lt;/a&gt;Lançamento de camisetas&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/__xJ0nFziV5I/SGrnwLejViI/AAAAAAAAACo/aYsZ7PJnYx4/s1600-h/0092.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/__xJ0nFziV5I/SGrnwLejViI/AAAAAAAAACo/aYsZ7PJnYx4/s320/0092.JPG" alt="" id="BLOGGER_PHOTO_ID_5218237933162812962" border="0" /&gt;&lt;/a&gt;Pessoal pulando para pegar a camiseta :)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/__xJ0nFziV5I/SGrnvsyw4fI/AAAAAAAAACY/iM3_3ipxIhM/s1600-h/0116.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/__xJ0nFziV5I/SGrnvsyw4fI/AAAAAAAAACY/iM3_3ipxIhM/s320/0116.JPG" alt="" id="BLOGGER_PHOTO_ID_5218237924926087666" border="0" /&gt;&lt;/a&gt;Eu, Edgar Silva (Solutions Architect JBoss) e David Barzilay (Gerente de Marketing da Red Hat BR)&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Mais fotos &lt;a href="http://picasaweb.google.com.br/comunidade.globalcode/OpenTDC2008"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-438055764635293302?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/438055764635293302/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=438055764635293302' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/438055764635293302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/438055764635293302'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/07/open-tdc-2008.html' title='Open TDC - 2008'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/__xJ0nFziV5I/SGrnv9VKUyI/AAAAAAAAACg/OnXG4iXvrMU/s72-c/0081.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-355548914323466191</id><published>2008-06-11T20:30:00.000-07:00</published><updated>2008-06-11T21:09:28.569-07:00</updated><title type='text'>JBoss Resteasy JAXRS: REST in Peace</title><content type='html'>Estou aproveitando a noite para colocar alguns posts em dia... obs.: Sport 2x0 Corinthians - Sport bate Corinthians e leva Copa do Brasil pela 1ª vez...&lt;br /&gt;&lt;br /&gt;Em um dos dias de consultoria, retornei ao escritório para conversar com o Edgar sobre um dos projetos. Ao chegar, o vi muito empolgado com REST - &lt;a href="http://jcp.org/en/jsr/detail?id=311"&gt;(JSR 311: JAX-RS: The Java&lt;span style=""&gt;&lt;sup&gt;TM&lt;/sup&gt;&lt;/span&gt; API for RESTful Web Services)&lt;/a&gt;, que está se tornando cada vez mais popular como alternativa para arquiteturas baseadas em SOAP.&lt;br /&gt;&lt;br /&gt;É uma spec que tem por objetivo disponibilizar uma API em Java para o rápido desenvolvimento de REST ful WebServices totalmente baseada em anotações (Java 5).&lt;br /&gt;&lt;br /&gt;No fundo, a explicação mais básica para o objetivo da API é uma forma rápida de desenvolver um retorno (que pode ser um XML, Texto, etc) sem precisar saber de Servlets ou JAX-WS, por exemplo... :) ... de forma padronizada. O que torna o desenvolvimento muito produtivo.&lt;br /&gt;&lt;br /&gt;Atualmente para implementar REST em Java acaba sendo um pouco sofrível, e esta JSR veio para facilitar e agilizar nossa vida.&lt;br /&gt;&lt;br /&gt;Aproveitem para ver um &lt;a href="http://edgarsilva.com.br/2008/05/07/jboss-resteasy-implementacao-rest-da-jboss/"&gt;mini-tutorial&lt;/a&gt; de fácil entendimento sobre JBoss Resteasy feito pelo Edgar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-355548914323466191?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/355548914323466191/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=355548914323466191' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/355548914323466191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/355548914323466191'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/06/jboss-resteasy-jaxrs-rest-in-peace.html' title='JBoss Resteasy JAXRS: REST in Peace'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-3508233830023831592</id><published>2008-06-11T20:07:00.000-07:00</published><updated>2008-06-11T20:29:37.433-07:00</updated><title type='text'>JBoss Messaging 2.0 Alpha</title><content type='html'>Estou meio atrasado com o post sobre o JBoss Messaging 2.0 Alpha, mas vale a intenção :).&lt;br /&gt;&lt;br /&gt;Dia 02/06 foi lançada a mais nova versão do JBoss Messaging, a qual tem foco em performance e o principal objetivo é ser a número 1 em providers de mensageria open-source.&lt;br /&gt;&lt;br /&gt;Abaixo algumas das principais características:&lt;br /&gt;- Arquitetura 100% baseada em POJOs&lt;br /&gt;- Pode ser executado fora do JBoss AS, ou seja, independente do JBoss AS... não precisa ter o Application Server de pé.&lt;br /&gt;- Alta performance utilizando Journal, podendo ser executado via Java NIO ou Linux Asynchronous IO&lt;br /&gt;- Utilização de Apache MINA&lt;br /&gt;&lt;br /&gt;Veja algumas comparações com outros providers, incluindo o JBossMQ e ActiveMQ:&lt;br /&gt;&lt;a href="http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/performance.html#performance.results"&gt;http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/performance.html#performance.results&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;User Guide: &lt;a href="http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/index.html"&gt;http://www.jboss.org/file-access/default/members/jbossmessaging/freezone/docs/userguide-2.0.0.alpha1/html/index.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jbossfox.blogspot.com/2008/03/high-performance-persistence-with-jboss.html"&gt;Tim Fox's blog: http://jbossfox.blogspot.com/2008/03/high-performance-persistence-with-jboss.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://clebertsuconic.blogspot.com/2008/05/speeding-up-io-on-files.html"&gt;Clebert Suconic's Blog: http://clebertsuconic.blogspot.com/2008/05/speeding-up-io-on-files.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-3508233830023831592?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/3508233830023831592/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=3508233830023831592' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/3508233830023831592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/3508233830023831592'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/06/jboss-messaging-20-alpha.html' title='JBoss Messaging 2.0 Alpha'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-8640503882120396253</id><published>2008-03-20T11:44:00.000-07:00</published><updated>2008-05-25T13:31:32.338-07:00</updated><title type='text'>Alterando Portas do JBoss</title><content type='html'>Um dos maiores problemas que muitos administradores JBoss passam é como subir mais de uma configuração na mesma máquina. Há algumas formas de realizar isto, uma delas é criar um IP virtual e subir o JBoss com o parâmetro -b.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;./run.sh -c &amp;lt;configuracao&amp;gt; -b &amp;lt;host&amp;gt;&lt;br /&gt;&lt;br /&gt;Outra forma é subir as duas configurações trocando as portas comuns para evitar conflitos. A forma mais fácil de trocar as portas é alterar o arquivo &lt;span style="font-weight: bold;"&gt;conf/jboss-service.xml&lt;/span&gt; descomentando o MBean &lt;span style="font-weight: bold;"&gt;org.jboss.services.binding.ServiceBindingManager&lt;/span&gt; e alterando o atributo &lt;span style="font-weight: bold;"&gt;ServerName&lt;/span&gt; para ports-02 ou ports-03, ou ports-n.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exemplo:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.services.binding.ServiceBindingManager"&lt;br /&gt;name="jboss.system:service=ServiceBindingManager"&amp;gt;&lt;br /&gt;&amp;lt;attribute name="ServerName"&amp;gt;ports-02&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name="StoreURL"&amp;gt;${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name="StoreFactoryClassName"&amp;gt;&lt;br /&gt;  org.jboss.services.binding.XMLServicesStoreFactory&lt;br /&gt;&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A instalação do JBoss AS já disponibiliza um arquivo exemplo para o binding das portas, o ideal é copia-lo para o diretório conf da sua configuração customizando conforme seja necessário. Exemplo: &lt;span style="font-weight: bold;"&gt;/server/conf/port-bindings.xml&lt;/span&gt;&lt;br /&gt;ou copia-lo no diretório server adicionando todas as possibilidades de binding de portas para cada configuração do JBoss. Exemplo:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/server/port-bindings.xml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Referências:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossRunParameters" target="_blank"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossRunParameters&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jboss.org/wiki/Wiki.jsp?page=UsingJBossBehindAFirewall" target="_blank"&gt;http://www.jboss.org/wiki/Wiki.jsp?page=UsingJBossBehindAFirewall&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfiguringMultipleJBossInstancesOnOneMachine" target="_blank"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfiguringMultipleJBossInstancesOnOneMachine&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossDTDs" target="_blank"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossDTDs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-8640503882120396253?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/8640503882120396253/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=8640503882120396253' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/8640503882120396253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/8640503882120396253'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/03/2-jboss-na-mesma-mquina-alterando.html' title='Alterando Portas do JBoss'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-785762937230839333</id><published>2008-03-05T11:25:00.000-08:00</published><updated>2008-03-05T11:28:15.442-08:00</updated><title type='text'>De UTF-8 para ISO-8859-1 e vice-versa</title><content type='html'>Para converter arquivos UTF-8 para ISO-8859-1 e vice-versa no Linux pode-se utilizar o &lt;span style="font-weight: bold;"&gt;iconv&lt;/span&gt; ou o &lt;span style="font-weight: bold;"&gt;recode&lt;/span&gt;.&lt;br /&gt;No &lt;a href="http://jfmitre.blogspot.com/2006/05/convertendo-arquivos-utf-8-em-iso-8859.html"&gt;Blog do Mitre&lt;/a&gt; há bons exemplos do iconv:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resumindo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;iconv -f utf-8 -t iso-8859-1 arquivo &gt; novo_arquivo&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-785762937230839333?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/785762937230839333/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=785762937230839333' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/785762937230839333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/785762937230839333'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/03/de-utf-8-para-iso-8859-1-e-vice-versa.html' title='De UTF-8 para ISO-8859-1 e vice-versa'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-1515028711222084624</id><published>2008-02-29T13:06:00.000-08:00</published><updated>2008-02-29T13:23:14.336-08:00</updated><title type='text'>JBoss Portal: User Role</title><content type='html'>Para validar se um usuário possui uma determina Role no JBoss Portal basta fazer o seguinte:&lt;br /&gt;&lt;br /&gt;No seu código Java do portlet:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;request.isUserInRole("Admin");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Seguindo a jsr-168, as roles utilizadas no método isUserInRole precisam ser declaradas no portlet.xml para serem reconhecidas em um portlet container. Se não for declarado, sempre retornará false. Veja abaixo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;portlet-app&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;portlet&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;   &amp;lt;security-role-ref&amp;gt;&lt;br /&gt;      &amp;lt;role-name&amp;gt;Admin&amp;lt;/role-name&amp;gt;&lt;br /&gt;   &amp;lt;/security-role-ref&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;&amp;lt;/portlet&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/portlet-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-1515028711222084624?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/1515028711222084624/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=1515028711222084624' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/1515028711222084624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/1515028711222084624'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/02/jboss-portal-user-role.html' title='JBoss Portal: User Role'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-4196712166660644396</id><published>2008-02-29T05:07:00.000-08:00</published><updated>2008-02-29T05:18:20.479-08:00</updated><title type='text'>Clustering Scheduler</title><content type='html'>JBoss possui um MBean para agendamento de tarefas chamado Scheduler, o qual muitas pessoas se perguntam sobre sua atuação durante uma configuração em Cluster.&lt;br /&gt;A idéia de uma configuração em cluster seria iniciar a execução do scheduler em apenas um nó (Master Node ) e caso este nó saia do cluster, a execução deve ser iniciada em um outro nó.&lt;br /&gt;&lt;br /&gt;Para isso, a configuração do Scheduler deve ser a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.varia.scheduler.Scheduler"&lt;br /&gt;         name="Order:service=Scheduler"&amp;gt;&lt;br /&gt; &amp;lt;depends&amp;gt;jboss.ha:service=HASingletonDeployer,type=Barrier&amp;lt;/depends&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="StartAtStartup"&amp;gt;true&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="SchedulableClass"&amp;gt;org.jboss.scheduler.OrderUpdateScheduler&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="InitialStartDate"&amp;gt;NOW&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="SchedulePeriod"&amp;gt;20000&amp;lt;/attribute&amp;gt;&lt;br /&gt;      &amp;lt;attribute name="InitialRepetitions"&amp;gt;-1&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;&lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=128528" target="_blank"&gt;http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=128528&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=HASingletonDeployer" target="_blank"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=HASingletonDeployer&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-4196712166660644396?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/4196712166660644396/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=4196712166660644396' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4196712166660644396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4196712166660644396'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/02/clustering-scheduler.html' title='Clustering Scheduler'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-4815235768848019491</id><published>2008-02-25T11:57:00.000-08:00</published><updated>2008-03-19T10:16:14.920-07:00</updated><title type='text'>JBoss Portal: Informações importantes</title><content type='html'>Abaixo irei descrever algumas informações importantes sobre JBoss Portal, a qual todos os desenvolvedores iniciantes de portlets devem se deparar.&lt;br /&gt;&lt;br /&gt;Onde obter informações:&lt;br /&gt;http://labs.jboss.com/jbossportal/docs/&lt;br /&gt;&lt;br /&gt;FAQ:&lt;br /&gt;http://jboss.org/index.html?module=bb&amp;amp;op=viewforum&amp;amp;f=215&lt;br /&gt;&lt;br /&gt;No PortletSwap você consegue baixar alguns exemplos de portlets e temas  já prontos para utilização no JBoss Portal:&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://labs.jboss.com/portletswap/downloads/"&gt;http://labs.jboss.com/portletswap/downloads/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No site de downloads do JBoss (Portlets) também é possível obter outros  portlets (Wiki, Forum e Blog):&lt;br /&gt;&lt;a class="moz-txt-link-freetext" href="http://labs.jboss.com/projects/download/"&gt;http://labs.jboss.com/projects/download/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ao criar seu portlet, utilize a classe org.jboss.portlet.JBossPortlet ao invés GenericPortlet. Com JBossPortlet você consegue obter informações importantes, como:&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;protected void doView(JBossRenderRequest request, JBossRenderResponse response) throws PortletException, IOException, UnavailableException {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//o usuário logado&lt;/span&gt;&lt;br /&gt;User user = request.getUser();&lt;br /&gt;user.getUserName()&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//portlet utilizado&lt;/span&gt;&lt;br /&gt;PortalNode node = request.getPortalNode();&lt;br /&gt;node.getName();&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//portal node&lt;/span&gt;&lt;br /&gt;PortalNode portal = (PortalNode) request.getAttribute("org.jboss.portal.api.PORTAL_NODE");&lt;br /&gt;  while (portal.getType() != PortalNode.TYPE_PORTAL)   {&lt;br /&gt;     portal = portal.getParent();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;entre muitas outras coisas.&lt;br /&gt;&lt;br /&gt;Um bom exemplo de uso disso, é a classe TestPortlet que vem junto com os Samples do JBoss Portal, vale a pena dar uma olhada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-4815235768848019491?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/4815235768848019491/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=4815235768848019491' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4815235768848019491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4815235768848019491'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/02/jboss-portal-informaes-importantes.html' title='JBoss Portal: Informações importantes'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-1121530786477889782</id><published>2008-02-19T12:10:00.000-08:00</published><updated>2008-02-19T12:25:39.473-08:00</updated><title type='text'>Utilizando P6Spy JBoss</title><content type='html'>O P6Spy é uma ferramenta que permite realizar o monitoramento de queries realizadas utilizando JPA, Hibernate, etc. Sua utilização é bem simples para o JBoss, bastando apenas poucas configurações.&lt;br /&gt;&lt;br /&gt;Copie o arquivo p6spy.jar para o diretório lib de sua configuração do JBoss:&lt;br /&gt;cp p6spy.jar $JBOSS_HOME/server/sua_configuracao/lib&lt;br /&gt;&lt;br /&gt;Copie o arquivo spy.properties para o diretório conf referente a sua configuração do JBoss:&lt;br /&gt;cp spy.properties $JBOSS_HOME/server/sua_configuracao/conf&lt;br /&gt;&lt;br /&gt;Edite o arquivo spy.properties para utilizar o driver jdbc referente ao banco de dados a ser utilizado, no meu caso, irei utilizar MySQL, entao irei utilizar a configuração:&lt;br /&gt;&lt;br /&gt;# mysql Connector/J driver&lt;br /&gt;realdriver=com.mysql.jdbc.Driver&lt;br /&gt;&lt;br /&gt;Configure a propriedade logfile informando o arquivo onde será gravado os logs do P6Spy, no meu caso irei utilizar /tmp/spy.log&lt;br /&gt;&lt;br /&gt;logfile     = /tmp/spy.log&lt;br /&gt;&lt;br /&gt;Edite o arquivo de configuração do seu DataSource no mudando o atributo driver-class para utilizar o P6Spy:&lt;br /&gt;&lt;driver-class&gt;com.p6spy.engine.spy.P6SpyDriver&lt;/driver-class&gt;&lt;br /&gt;&lt;br /&gt;Pronto, com isso o arquivo spy.log receberá as queries executadas em seu sistema.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;http://www.p6spy.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-1121530786477889782?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/1121530786477889782/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=1121530786477889782' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/1121530786477889782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/1121530786477889782'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/02/utilizando-p6spy-jboss.html' title='Utilizando P6Spy JBoss'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-172408668080278158</id><published>2008-02-19T12:05:00.000-08:00</published><updated>2008-02-19T12:08:12.514-08:00</updated><title type='text'>Encoding MySQL para UTF-8</title><content type='html'>Basta alterar o arquivo my.cnf da seguinte forma:&lt;br /&gt;character-set-server=utf8&lt;br /&gt;default-collation=utf8_unicode_ci&lt;br /&gt;&lt;br /&gt;ou logo após se conectar utilizar o comando:&lt;br /&gt;SET NAMES utf8&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-172408668080278158?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/172408668080278158/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=172408668080278158' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/172408668080278158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/172408668080278158'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/02/encoding-mysql-para-utf-8.html' title='Encoding MySQL para UTF-8'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-5373625267807341591</id><published>2008-01-29T14:56:00.001-08:00</published><updated>2008-03-19T18:42:39.317-07:00</updated><title type='text'>Pneumotórax</title><content type='html'>Febre, hemoptise, dispnéia e suores noturnos.&lt;br /&gt;A vida inteira que podia ter sido e que não foi.&lt;br /&gt;Tosse, tosse, tosse.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mandou chamar o médico:&lt;br /&gt;— Diga trinta e três.&lt;br /&gt;— Trinta e três . . . trinta e três . . . trinta e três . . .&lt;br /&gt;— Respire.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...............................................................................................................&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;— O senhor tem uma escavação no pulmão esquerdo e o pulmão direito infiltrado.&lt;br /&gt;— Então, doutor, não é possível tentar o pneumotórax?&lt;br /&gt;— Não. A única coisa a fazer é tocar um tango argentino.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Manuel Bandeira&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-5373625267807341591?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/5373625267807341591/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=5373625267807341591' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5373625267807341591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5373625267807341591'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/pneumotrax.html' title='Pneumotórax'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-7006452942692227233</id><published>2008-01-29T14:40:00.000-08:00</published><updated>2008-03-19T18:46:37.090-07:00</updated><title type='text'>Java - Gerando RSS com ROME</title><content type='html'>ROME &lt;span style="font-weight: bold;"&gt;R&lt;/span&gt;SS and At&lt;span style="font-weight: bold;"&gt;om&lt;/span&gt; Utiliti&lt;span style="font-weight: bold;"&gt;e&lt;/span&gt;s é um framework java que serve para gerar arquivos RSS de forma fácil e rápida. Sua utilização basicamente consiste na criação de um objeto Feed e uma lista de Entries a qual será atribuida ao Feed.&lt;br /&gt;&lt;br /&gt;A seguir há um exemplo de um Servlet que processa uma lista de Notícias gravada em um banco de dados e gera o RSS utilizando PrintWriter.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//imports...&lt;br /&gt;&lt;br /&gt;public class FeedWriter extends HttpServlet {&lt;br /&gt;&lt;br /&gt;public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;response.setContentType("text/xml");&lt;br /&gt;OutputStream os = response.getOutputStream();&lt;br /&gt;OutputStreamWriter osw = new OutputStreamWriter(os , "UTF-8");&lt;br /&gt;PrintWriter pw = new PrintWriter(osw);&lt;br /&gt;create("rss_2.0", pw);&lt;br /&gt;writer.close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected void create(String feedType, Writer writer) {&lt;br /&gt; try {&lt;br /&gt;     SyndFeed feed = new SyndFeedImpl();&lt;br /&gt;     feed.setFeedType(feedType);&lt;br /&gt;&lt;br /&gt;     feed.setTitle("Noticias)");&lt;br /&gt;     feed.setLink("http://rome.dev.java.net");&lt;br /&gt;     feed.setDescription("BLA BLA BLA");&lt;br /&gt;&lt;br /&gt;     List entries = new ArrayList();&lt;br /&gt;     SyndEntry entry;&lt;br /&gt;     SyndContent description;&lt;br /&gt;&lt;br /&gt;     Dao dao = new Dao();&lt;br /&gt;     for (Noticia noticia : dao.findAllNoticias()) {&lt;br /&gt;         entry = new SyndEntryImpl();&lt;br /&gt;         entry.setTitle(noticia.getTitulo());&lt;br /&gt;         entry.setLink(noticia.getLink());&lt;br /&gt;         entry.setPublishedDate(noticia.getDataPost());&lt;br /&gt;         description = new SyndContentImpl();&lt;br /&gt;         description.setType("text/plain");&lt;br /&gt;         description.setValue(noticia.getDescricao());&lt;br /&gt;         entry.setDescription(description);&lt;br /&gt;         entries.add(entry);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     feed.setEntries(entries);&lt;br /&gt;&lt;br /&gt;     SyndFeedOutput output = new SyndFeedOutput();&lt;br /&gt;     output.output(feed,writer);&lt;br /&gt; } catch (Exception ex) {&lt;br /&gt;     ex.printStackTrace();&lt;br /&gt;     System.out.println("ERROR: "+ex.getMessage());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;O retorno será algo semelhante a:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/__xJ0nFziV5I/R5-s56DZjTI/AAAAAAAAABA/M5xZ3HBrXrw/s1600-h/Screenshot-Mozilla+Firefox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/__xJ0nFziV5I/R5-s56DZjTI/AAAAAAAAABA/M5xZ3HBrXrw/s320/Screenshot-Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5161033808825912626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para saber mais sobre o ROME, acesse &lt;a href="http://wiki.java.net/bin/view/Javawsxml/Rome" target="blank"&gt;http://wiki.java.net/bin/view/Javawsxml/Rome&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-7006452942692227233?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/7006452942692227233/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=7006452942692227233' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7006452942692227233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/7006452942692227233'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/gerando-rss-com-rome.html' title='Java - Gerando RSS com ROME'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/__xJ0nFziV5I/R5-s56DZjTI/AAAAAAAAABA/M5xZ3HBrXrw/s72-c/Screenshot-Mozilla+Firefox.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-3103048024700926140</id><published>2008-01-28T18:37:00.000-08:00</published><updated>2008-01-29T14:55:56.098-08:00</updated><title type='text'>Saudades de Toronto</title><content type='html'>Saudades de andar nas ruas de Toronto às 2:00am e se sentir seguro...&lt;br /&gt;&lt;br /&gt;Rafael José diz:&lt;br /&gt;volta pra cá&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;rs&lt;br /&gt;Rafael José diz:&lt;br /&gt;mas e agora? vai fazer oq?&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;fiz o BO&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;fazer nada&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;fazer o q?&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;nao tem o q fazer&lt;br /&gt;Bruno Rossetto diz:&lt;br /&gt;só resta tocar o tango argentino...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edgarsilva.com.br/2008/01/16/o-seu-salario-e-uma-bosta/"&gt;http://edgarsilva.com.br/2008/01/16/o-seu-salario-e-uma-bosta/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-3103048024700926140?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/3103048024700926140/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=3103048024700926140' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/3103048024700926140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/3103048024700926140'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/saudades-de-toronto.html' title='Saudades de Toronto'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-2971200776528497069</id><published>2008-01-24T06:17:00.000-08:00</published><updated>2008-01-24T06:31:43.579-08:00</updated><title type='text'>JBoss Profiler para detectar Memory Leaks</title><content type='html'>Após alguns estudos e testes utilizando JBoss profiler encontrei um artigo muito legal de Clebert Suconic e Michael Juntao Yuan sobre Memory Leaks, porém ao fazer a configuração adicional para utilizar o inventoryReport tive o seguinte erro:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;12:06:35,596 ERROR [[HtmlAdaptor]] Servlet.service() for servlet HtmlAdaptor threw exception&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;javax.management.RuntimeErrorException&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.interceptor.ReflectedDispatcher.handleInvocationExceptions(ReflectedDispatcher.java:178)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:163)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Caused by: java.lang.UnsatisfiedLinkError: notifyInventory&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para corrigi-lo, basta rodar os scripts de compilação para regerar os arquivos libjbossAgent.so e libjbossInspector.so e coloca-los em seu &lt;code&gt;$LD_LIBRARY_PATH.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;span style="font-weight: bold;"&gt;Artigo sobre Memory Leaks:&lt;/span&gt;&lt;br /&gt;http://developer.redhatmagazine.com/2006/09/18/use-jboss-profiler-to-detect-memory-leaks/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Outros links úteis:&lt;/span&gt;&lt;br /&gt;http://www.jboss.org/wiki/Wiki.jsp?page=JBossProfiler&lt;br /&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=HowToConfigureJBossProfiler&lt;br /&gt;http://weblogs.java.net/blog/edgars/archive/2007/06/looking_as_deep.html&lt;br /&gt;http://www.jboss.org/?module=bb&amp;amp;op=viewtopic&amp;amp;t=102793&lt;br /&gt;http://www.jboss.com/index.html?module=bb&amp;amp;op=viewtopic&amp;amp;p=4009745#4009745&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-2971200776528497069?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/2971200776528497069/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=2971200776528497069' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2971200776528497069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2971200776528497069'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/jboss-profiler-para-detectar-memory.html' title='JBoss Profiler para detectar Memory Leaks'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-4085798477732053308</id><published>2008-01-14T03:58:00.000-08:00</published><updated>2008-01-16T11:59:42.129-08:00</updated><title type='text'>Caracteres Chineses no Red Hat (ctrl + space)</title><content type='html'>Ctrl + space é uma das combinações mais importantes em IDEs Java (autoclomplete), porém a partir da versão 3 do Red Hat EL o ctrl + space ativa um esquema de caracteres não-ocidentais (Chinês Tradicional e Simplificado). Isto é disponibilizado pelo scim, e a forma mais fácil de desativar isso é desinstalando-o (a não ser que você precise de caracteres em Chinês).&lt;br /&gt;&lt;br /&gt;Para desisntala-lo basta digitar em linha de comando: yum remove scim e desinstalar todas as suas dependências.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-4085798477732053308?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/4085798477732053308/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=4085798477732053308' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4085798477732053308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4085798477732053308'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/caracteres-chineses-no-red-hat-ctrl.html' title='Caracteres Chineses no Red Hat (ctrl + space)'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-506444965306061223</id><published>2008-01-08T08:39:00.000-08:00</published><updated>2008-01-08T08:53:39.541-08:00</updated><title type='text'>compilerTargetVM compilerSourceVM source level 5</title><content type='html'>Caso queira utilizar recursos referentes à versão 5.0 da vm no JBoss em JSPs basta alterar o arquivo &lt;span style="font-weight: bold; font-style: italic;"&gt;/jboss-web.deployer/conf/web.xml &lt;/span&gt;adicionando 2 parâmetros:&lt;br /&gt;&lt;br /&gt;- compilerTargetVM = 1.5&lt;br /&gt;- compilerSourceVM = 1.5&lt;br /&gt;&lt;br /&gt;para o servlet &lt;span style="font-weight: bold;"&gt;org.apache.jasper.servlet.JspServlet&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  compilerTargetVM    Compiler target VM                            &lt;br /&gt;                      default is System.properties                  &lt;br /&gt;                       java.specification.version &gt; 1.4             &lt;br /&gt;                       [1.5] else [1.4]                             &lt;br /&gt;                                                                    &lt;br /&gt;  compilerSourceVM    Compiler source VM                            &lt;br /&gt;                      default is System.properties                  &lt;br /&gt;                       java.specification.version &gt; 1.4             &lt;br /&gt;                       [1.5] else [1.4]&lt;br /&gt;&lt;br /&gt;Syntax error, parameterized types are only available if source level is 5.0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-506444965306061223?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/506444965306061223/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=506444965306061223' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/506444965306061223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/506444965306061223'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/compilertargetvm-compilersourcevm.html' title='compilerTargetVM compilerSourceVM source level 5'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-4509671447572371060</id><published>2008-01-07T11:08:00.000-08:00</published><updated>2008-01-07T11:51:53.125-08:00</updated><title type='text'>Lendo propriedades de arquivo no JMeter</title><content type='html'>Praticamente todo mundo já leu alguma coisa sobre JMeter, ou já viu alguma apresentação em um dos vários eventos Java no país, ou até mesmo já colocou a mão na massa para realizar algum teste de stress com esta ferramenta. De fato, é muito simples realizar um teste de stress básico com JMeter, até mesmo em sistemas web.&lt;br /&gt;&lt;br /&gt;Porém, o JMeter possui muitas características para incrementar seus testes de stress e deixá-los muito poderosos, como testes distribuídos, variáveis e funções, beanshell, etc...&lt;br /&gt;&lt;br /&gt;Neste post irei mostrar como ler propriedades de um arquivo texto utilizando o componente CSV Data Set Config (element -&gt; config).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Declarando as propriedades&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O config CSV Data Set Config é atualmente a forma mais simples de ler propriedades de um arquivo, para isso, basta criar um arquivo texto com valores separados por vírgula.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;a1, b1, c1&lt;br /&gt;&lt;br /&gt;Adicione o CSV Data Set Config em sua Thread Group configurando as propriedades da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/__xJ0nFziV5I/R4J-1G6COgI/AAAAAAAAAAw/sCkN8nt7XtI/s1600-h/jmeter.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/__xJ0nFziV5I/R4J-1G6COgI/AAAAAAAAAAw/sCkN8nt7XtI/s320/jmeter.gif" alt="" id="BLOGGER_PHOTO_ID_5152820374517463554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Filename: path do arquivo texto, ex: "../teste.txt" (os paths relativos são resolvidos a partir com o path do test plan ativo, também pode-se utilizar path absoluto)&lt;br /&gt;Variable names: "a,b,c" (este será o nome das propriedades utilizadas para acessar os valores)&lt;br /&gt;Delimiter (use '\t' for tab): ","&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Exibindo propriedades&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;A partir da versão 2.3.1 foi adicionado o componente Debug Sampler o qual lista diversas coisas, entre elas, os valores das variáveis do arquivo.&lt;br /&gt;&lt;br /&gt;Adicione o Debug Sampler em seu Thread Group (sampler -&gt; debug sampler), e adicioner também um View Results Tree. O Debug Sampler irá trabalhar em conjunto com o View Results Tree, exibindo separadamente os valores referentes a cada request.&lt;br /&gt;&lt;br /&gt;Abaixo está o resultado de um teste simples com leitura de propriedades de um arquivo.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/__xJ0nFziV5I/R4KBTm6COhI/AAAAAAAAAA4/DjJmoJopbmo/s1600-h/jmeter2.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/__xJ0nFziV5I/R4KBTm6COhI/AAAAAAAAAA4/DjJmoJopbmo/s320/jmeter2.gif" alt="" id="BLOGGER_PHOTO_ID_5152823097526729234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Links relacionados&lt;br /&gt;&lt;/span&gt;&lt;span&gt;http://jakarta.apache.org/jmeter/usermanual/component_reference.html#CSV_Data_Set_Config&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;http://jakarta.apache.org/jmeter/usermanual/functions.html&lt;br /&gt;http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Debug_Sampler&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-4509671447572371060?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/4509671447572371060/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=4509671447572371060' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4509671447572371060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/4509671447572371060'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2008/01/lendo-propriedades-de-arquivo.html' title='Lendo propriedades de arquivo no JMeter'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/__xJ0nFziV5I/R4J-1G6COgI/AAAAAAAAAAw/sCkN8nt7XtI/s72-c/jmeter.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-5098746419643956038</id><published>2007-12-28T10:17:00.000-08:00</published><updated>2007-12-28T10:49:37.243-08:00</updated><title type='text'>Outras configurações para JBoss Messaging</title><content type='html'>&lt;ul&gt;&lt;li&gt;A primeira coisa que deve ser feita após a instalação inicial é alterar o atributo SuckerPassword no arquivo $JBOSS_HOME/server/messaging/deploy/jboss-messaging.sar/messaging-service.xml. O atributo estará comentado, basta descomentá-lo e atribuir uma password. Veja abaixo:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&amp;lt;attribute name="SuckerPassword"&amp;gt;m3ss@g3&amp;lt;/attribute&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;É importante aterar este atributo para evitar que outras pessoas acessem todos os "destinos" no servidor.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;A próxima alteração se refere ao jboss-remoting.jar. O JBoss Messaging precisa ter o patch instalado (JBoss Remoting 2.2.2.SP3-brew) que pode ser obtido &lt;a href="http://repository.jboss.com/jboss/remoting/2.2.2.SP3-brew/lib/" target="_blank"&gt;aqui&lt;/a&gt;. Faça o download e copie-o para o diretório $JBOSS_HOME/server/messaging/lib.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Edite o arquivo $JBOSS_HOME/server/messaging/conf/standardjboss.xml e altere todos os valores dos atributos CreateJBossMQDestination para false.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;De:&lt;br /&gt;&amp;lt;createjbossmqdestination&amp;gt;true&amp;lt;/createjbossmqdestination&amp;gt;&lt;br /&gt;&lt;br /&gt;Para:&lt;br /&gt;&amp;lt;createjbossmqdestination&amp;gt;false&amp;lt;/createjbossmqdestination&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edite o arquivo $JBOSS_HOME/server/messaging/conf/jboss-service.xml excluindo a linha&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&amp;lt;attribute name="JMSService"&amp;gt;jboss.mq:service=DestinationManager&amp;lt;/attribute&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Edite o arquivo $JBOSS_HOME/server/messaging/conf/login-config.xml excluindo o application-policy referente ao jbossmq. O trecho que deve ser excluído está abaixo:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;application-policy name = "jbossmq"&amp;gt;&lt;br /&gt;     &amp;lt;authentication&amp;gt;&lt;br /&gt;        &amp;lt;login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"&lt;br /&gt;           flag = "required"&amp;gt;&lt;br /&gt;           &amp;lt;module-option name = "unauthenticatedIdentity"&amp;gt;guest&amp;lt;/module-option&amp;gt;&lt;br /&gt;           &amp;lt;module-option name = "dsJndiName"&amp;gt;java:/DefaultDS&amp;lt;/module-option&amp;gt;&lt;br /&gt;           &amp;lt;module-option name = "principalsQuery"&amp;gt;SELECT PASSWD FROM JMS_USERS WHERE USERID=?&amp;lt;/module-option&amp;gt;&lt;br /&gt;           &amp;lt;module-option name = "rolesQuery"&amp;gt;SELECT ROLEID, 'Roles' FROM JMS_ROLES WHERE USERID=?&amp;lt;/module-option&amp;gt;&lt;br /&gt;        &amp;lt;/login-module&amp;gt;&lt;br /&gt;     &amp;lt;/authentication&amp;gt;&lt;br /&gt;  &amp;lt;/application-policy&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-5098746419643956038?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/5098746419643956038/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=5098746419643956038' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5098746419643956038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5098746419643956038'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2007/12/mais-algumas-coisas-para-sua-configurao.html' title='Outras configurações para JBoss Messaging'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-742514510585461960</id><published>2007-12-27T10:28:00.000-08:00</published><updated>2007-12-27T14:19:53.959-08:00</updated><title type='text'>JBoss Messaging</title><content type='html'>JBoss Messaging é o novo provider para mensagens JMS da JBoss e veio para substituir seu antecessor JBossMQ. Ele atende a spec 1.1 de JMS, sendo que seu foco está em manter a performance e escalabilidade com alto throughput e latencia baixa.&lt;br /&gt;&lt;br /&gt;Podemos utiliza-lo em JBoss 4.2.x ou superior, sendo que é necessário retirar o JBossMQ antes de instala-lo, não há a possibilidade de usar os 2 providers na mesma configuração. O Messaging será o provider default do JBoss AS a partir da versão 5, que atualmente está em Beta3.&lt;br /&gt;&lt;br /&gt;O JBoss messaging está atualmente na versão 1.4.0.SP3, sendo que já está sendo utilizado em produção em diversas empresas.&lt;br /&gt;&lt;br /&gt;Para utiliza-lo na versão 4.2.x do JBoss, basta seguir os passos abaixo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Acesse http://labs.jboss.com/jbossmessaging/downloads/ fazendo download de JBoss Messaging 1.4.0 Service Pack 3 (binary distribution) que é um arquivo .zip (jboss-messaging-1.4.0.SP3.zip).&lt;/li&gt;&lt;li&gt;Descompacte-o em qualquer lugar.&lt;/li&gt;&lt;li&gt;Certifique-se que seu JBoss não possui alterações em sua configuração DEFAULT&lt;/li&gt;&lt;li&gt;Entre no diretório em que vc descompactou o jboss-messaging, entre no diretório &lt;span style="font-weight: bold; font-style: italic;"&gt;util&lt;/span&gt; e digite &lt;span style="font-weight: bold; font-style: italic;"&gt;ant -f release-admin.xml&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Se fez tudo certo até agora, irá aparecer algo como:&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;br /&gt;[bmachado@bmachado util]$ ant -f release-admin.xml&lt;br /&gt;Buildfile: release-admin.xml&lt;br /&gt;&lt;br /&gt;default:&lt;br /&gt;&lt;br /&gt;validate-jboss:&lt;br /&gt;&lt;br /&gt;prevent-messaging-overwrite:&lt;br /&gt;&lt;br /&gt;validate-messaging-artifact:&lt;br /&gt;&lt;br /&gt;create-server-config:&lt;br /&gt;[echo] Creating JBoss Messaging configuration 'messaging' for /usr/local/jboss-4.2.0.GA based on configuration 'default' with jboss-messaging.sar&lt;br /&gt;[mkdir] Created dir: /usr/local/jboss-4.2.0.GA/server/messaging&lt;br /&gt;[copy] Copying 320 files to /usr/local/jboss-4.2.0.GA/server/messaging&lt;br /&gt;&lt;br /&gt;expand-sar:&lt;br /&gt;[unjar] Expanding: /home/bmachado/Desktop/jboss-messaging-1.4.0.SP3/jboss-messaging.sar into /usr/local/jboss-4.2.0.GA/server/messaging/deploy/jboss-messaging.sar&lt;br /&gt;[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/lib&lt;br /&gt;[copy] Copying 2 files to /usr/local/jboss-4.2.0.GA/server/messaging/conf/props&lt;br /&gt;[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/deploy&lt;br /&gt;[copy] Copying 1 file to /usr/local/jboss-4.2.0.GA/server/messaging/deploy&lt;br /&gt;&lt;br /&gt;BUILD SUCCESSFUL&lt;br /&gt;Total time: 3 seconds&lt;br /&gt;&lt;/pre&gt;Com isso seu Messaging já estará instalado da forma mais básica que existe. Ele criará uma nova configuração em server/default chamada messaging. Veja server/default/messaging.&lt;br /&gt;&lt;br /&gt;Para testa-lo, suba seu JBoss, entrando no diretório $JBOSS_HOME/bin e executando o comando .&lt;span style="font-weight: bold; font-style: italic;"&gt;/run.sh -c messaging &lt;/span&gt;para startar a nova configuração.&lt;br /&gt;&lt;br /&gt;Em seguida, entre no diretório do messaging que foi descompactado, haverá diversos exemplos para teste. Entre no &lt;span style="font-weight: bold; font-style: italic;"&gt;jboss-messaging-1.4.0.SP3/examples/queue&lt;/span&gt; e digite ant.&lt;br /&gt;&lt;br /&gt;Se tudo estiver ok, será exibida a seguinte mensagem no seu console:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Buildfile: build.xml&lt;br /&gt;&lt;br /&gt;identify:&lt;br /&gt; [echo] ###########################################################################&lt;br /&gt; [echo] #                       Running the QUEUE example                         #&lt;br /&gt; [echo] ###########################################################################&lt;br /&gt; [echo] The queue:      testQueue&lt;br /&gt; [echo] The client jar: ../..//jboss-messaging-client.jar&lt;br /&gt;&lt;br /&gt;sanity-check:&lt;br /&gt;&lt;br /&gt;init:&lt;br /&gt;&lt;br /&gt;compile:&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt; [java] Queue /queue/testQueue exists&lt;br /&gt; [java] The message was successfully sent to the testQueue queue&lt;br /&gt; [java] Received message: Hello!&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     [java] The example connected to JBoss Messaging version 1.4.0.SP3 (1.4)&lt;/span&gt;&lt;br /&gt; [java]&lt;br /&gt; [java] #####################&lt;br /&gt; [java] ###    SUCCESS!   ###&lt;br /&gt; [java] #####################&lt;br /&gt;&lt;br /&gt;BUILD SUCCESSFUL&lt;br /&gt;Total time: 3 seconds&lt;br /&gt;&lt;/pre&gt;Note  a mensagem: &lt;span style="font-weight: bold;"&gt;The example connected to JBoss Messaging version 1.4.0.SP3 (1.4).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pronto, você já está executando mensageria usando JBoss Messaging em sua configuração mais básica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-742514510585461960?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/742514510585461960/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=742514510585461960' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/742514510585461960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/742514510585461960'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2007/12/jboss-messaging.html' title='JBoss Messaging'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-5041428944686166843</id><published>2007-12-24T05:34:00.000-08:00</published><updated>2007-12-24T05:35:48.837-08:00</updated><title type='text'>Blog Bruno "Baboo" Rossetto</title><content type='html'>Meu antigo blog está parado já há algum tempo, mas tem alguns posts legais.&lt;br /&gt;&lt;br /&gt;http://www.jroller.com/rossetto/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-5041428944686166843?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/5041428944686166843/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=5041428944686166843' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5041428944686166843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/5041428944686166843'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2007/12/blog-bruno-baboo-rossetto.html' title='Blog Bruno &quot;Baboo&quot; Rossetto'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6832240145669780170.post-2635157173932011548</id><published>2007-12-19T15:25:00.001-08:00</published><updated>2008-01-02T10:57:58.362-08:00</updated><title type='text'>persistence.xml Hibernate JPA</title><content type='html'>Abaixo o persistence.xml para usar Hibernate com JPA no JBoss com Datasource.&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;persistence-unit name="jpaPU"&amp;gt;&lt;br /&gt;&amp;lt;provider&amp;gt;org.hibernate.ejb.HibernatePersistence&amp;lt;/provider&amp;gt;&lt;br /&gt;&amp;lt;jta-data-source&amp;gt;java:/DerbyDS&amp;lt;/jta-data-source&amp;gt;&lt;br /&gt;&amp;lt;class&amp;gt;com.jboss.entities.Country&amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt; &amp;lt;property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;/persistence-unit&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;JBoss já disponibiliza uma série de propriedades pré-configuradas para o uso de JPA com Hibernate no arquivo /server/default/deploy/ejb3.deployer/META-INF/persistence.properties. Você pode usa-lo para ter uma idéia das propriedades que poderão ser sobrescritas no seu persistence.xml.&lt;br /&gt;&lt;br /&gt;Segue a lista abaixo:&lt;br /&gt;&lt;pre&gt;hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup&lt;br /&gt;#hibernate.connection.release_mode=after_statement&lt;br /&gt;#hibernate.transaction.flush_before_completion=false&lt;br /&gt;#hibernate.transaction.auto_close_session=false&lt;br /&gt;#hibernate.query.factory_class=org.hibernate.hql.ast.ASTQueryTranslatorFactory&lt;br /&gt;#hibernate.hbm2ddl.auto=create-drop&lt;br /&gt;#hibernate.hbm2ddl.auto=create&lt;br /&gt;hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider&lt;br /&gt;# Clustered cache with TreeCache&lt;br /&gt;#hibernate.cache.provider_class=org.jboss.ejb3.entity.TreeCacheProviderHook&lt;br /&gt;#hibernate.treecache.mbean.object_name=jboss.cache:service=EJB3EntityTreeCache&lt;br /&gt;#hibernate.dialect=org.hibernate.dialect.HSQLDialect&lt;br /&gt;hibernate.jndi.java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory&lt;br /&gt;hibernate.jndi.java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces&lt;br /&gt;hibernate.bytecode.use_reflection_optimizer=false&lt;br /&gt;# I don't think this is honored, but EJB3Deployer uses it&lt;br /&gt;hibernate.bytecode.provider=javassist&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6832240145669780170-2635157173932011548?l=brmachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brmachado.blogspot.com/feeds/2635157173932011548/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6832240145669780170&amp;postID=2635157173932011548' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2635157173932011548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6832240145669780170/posts/default/2635157173932011548'/><link rel='alternate' type='text/html' href='http://brmachado.blogspot.com/2007/12/persistencexml-hibernate-jpa.html' title='persistence.xml Hibernate JPA'/><author><name>Bruno Rossetto Machado</name><uri>http://www.blogger.com/profile/01890241021185093911</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://bp3.blogger.com/__xJ0nFziV5I/R3Qsqh4TIEI/AAAAAAAAAAk/VYhID6rUTYs/S220/profile.jpg'/></author><thr:total>0</thr:total></entry></feed>
