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

<channel>
	<title>Rafael Liu Blog &#187; JBoss</title>
	<atom:link href="http://rafaelliu.net/category/jboss/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafaelliu.net</link>
	<description>Café, pinguins e outras coisas</description>
	<lastBuildDate>Mon, 05 Dec 2011 19:08:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Medindo consecutivos tempos de subida do JBoss</title>
		<link>http://rafaelliu.net/2011/12/05/medindo-consecutivos-tempos-de-subida-do-jboss/</link>
		<comments>http://rafaelliu.net/2011/12/05/medindo-consecutivos-tempos-de-subida-do-jboss/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 19:01:26 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Diverso]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=585</guid>
		<description><![CDATA[Estava com um problema que causava congelamentos de até 10 minutos nas máquinas do JBoss em um cliente. Estes congelamentos eram intermitentes e aconteciam sempre no boot do JBoss. A fim de fazer testes com várias configurações diferentes e gerar um relatório com dados precisos, escrevi um script que executa o init script do JBoss, [...]]]></description>
			<content:encoded><![CDATA[<p>Estava com um problema que causava congelamentos de até 10 minutos nas máquinas do JBoss em um cliente. Estes congelamentos eram intermitentes e aconteciam sempre no boot do JBoss.</p>
<p>A fim de fazer testes com várias configurações diferentes e gerar um relatório com dados precisos, escrevi um script que executa o init script do JBoss, espera ele inicializar completamente, grava o tempo de inicialização e mata o processo. Faz isso 50 vezes.</p>
<p>Estou postando ele aqui na esperança de ser útil para mais alguém. Ele é bastante auto-explicativo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># Notes: all Java processes are going to the KILLED and</span>
<span style="color: #666666; font-style: italic;"># previous probe.log ERASED!</span>
&nbsp;
<span style="color: #007800;">JBOSS_LOG_FILE</span>=<span style="color: #ff0000;">&quot;/opt/jboss/server/default/log/server.log&quot;</span>
<span style="color: #007800;">REPEAT</span>=<span style="color: #000000;">50</span>
&nbsp;
<span style="color: #007800;">START_STRING</span>=<span style="color: #ff0000;">&quot;Started in&quot;</span>
<span style="color: #007800;">RESULT_FILE</span>=<span style="color: #ff0000;">&quot;/root/probe.log-<span style="color: #780078;">`date +%F`</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$RESULT_FILE</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">1</span> <span style="color: #007800;">$REPEAT</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span>
	<span style="color: #666666; font-style: italic;"># clean</span>
	<span style="color: #c20cb9; font-weight: bold;">killall</span> <span style="color: #660033;">-9</span> java
	<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$JBOSS_LOG_FILE</span>
&nbsp;
	<span style="color: #666666; font-style: italic;"># init and wait</span>
	<span style="color: #c20cb9; font-weight: bold;">sh</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>jboss start
	<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;x<span style="color: #007800;">$( grep &quot;$START_STRING&quot; $JBOSS_LOG_FILE )</span>&quot;</span> == <span style="color: #ff0000;">&quot;x&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span>
		<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">1</span>
	<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
	<span style="color: #666666; font-style: italic;"># log</span>
	<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$JBOSS_LOG_FILE</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$START_STRING</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$RESULT_FILE</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Done&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/12/05/medindo-consecutivos-tempos-de-subida-do-jboss/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Separando logs por aplicação no JBoss</title>
		<link>http://rafaelliu.net/2011/10/20/separando-logs-por-aplicacao-no-jboss/</link>
		<comments>http://rafaelliu.net/2011/10/20/separando-logs-por-aplicacao-no-jboss/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 21:56:45 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[separar]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=526</guid>
		<description><![CDATA[Separar logs de aplicações no JBoss é uma tarefa comum e existem alguns modos de fazer isso: 1. Adicionando uma Category ao $JBOSS_CONF/conf/jboss-log4j.xml pegando todos o package da aplicação e usando um Appender específico. Por exemplo: &#60;category name=&#34;net.rafaelliu&#34;&#62; &#60;priority value=&#34;INFO&#34; /&#62; &#60;appender-ref ref=&#34;BLOG_LOG&#34;/&#62; &#60;/category&#62; Embora seja a solução mais fácil, a separação não está perfeita. [...]]]></description>
			<content:encoded><![CDATA[<p>Separar logs de aplicações no JBoss é uma tarefa comum e existem alguns modos de fazer isso:</p>
<p><strong>1. Adicionando uma Category</strong> ao <code>$JBOSS_CONF/conf/jboss-log4j.xml</code> pegando todos o package da aplicação e usando um Appender específico. Por exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;net.rafaelliu&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;priority</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;INFO&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
     <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender-ref</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;BLOG_LOG&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Embora seja a solução mais fácil, a separação não está perfeita. Como estamos separando por pacotes, um erro no Hibernate por exemplo, ainda vai ser escrito no server.log, mesmo tendo sido lançado pela aplicação.</p>
<p>&nbsp;</p>
<p><strong>2. Usando Filters</strong> é possível criar um <code>TCLFilter</code> para pegar apenas logs de determinada aplicação. Basta criar um Appender específico:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;appender</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;BLOG_LOG&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.jboss.logging.appender.DailyRollingFileAppender&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;errorHandler</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.jboss.logging.util.OnlyOnceErrorHandler&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;File&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${jboss.server.log.dir}/blog.log&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Append&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;DatePattern&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;'.'yyyy-MM-dd&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;layout</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.apache.log4j.PatternLayout&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;ConversionPattern&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;%d %-5p [%c] (%t) %m%n&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/layout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
      <span style="color: #808080; font-style: italic;">&lt;!-- filter --&gt;</span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.jboss.logging.filter.TCLFilter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;AcceptOnMatch&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;DeployURL&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;blog.war&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>    
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filter</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.apache.log4j.varia.DenyAllFilter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/appender<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>O problema aqui é que, embora o log seja gravado separadamente (inclusive de pacotes do Hibernate, por exemplo), ele será gravado duas vezes: uma vez no blog.log que definimos e uma vez no server.log do JBoss. Isso resulta em mais IO e mais espaço em disco.</p>
<p>&nbsp;</p>
<p><strong>3. Empacotando um log4j na própria aplicação</strong>, em <code>WEB-INF/lib</code>, é possível inverter o classloader e fazer com que as configurações do log4j valham apenas para sua aplicação:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;jboss-web<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;class-loading</span> <span style="color: #000066;">java2ClassLoadingCompliance</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;loader-repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			net.rafaelliu:loader=blog.war
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;loader-repository-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>java2ParentDelegation=false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/loader-repository-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/loader-repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/class-loading<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/jboss-web<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Feito isso, é preciso criar o <code>log4j.properties</code> (ou xml) normalmente:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">log4j.rootLogger=<span style="color: #800000;">${jboss.server.log.threshold}</span>, fileout
&nbsp;
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=<span style="color: #800000;">${jboss.server.log.dir}</span><span style="color: #000000; font-weight: bold;">/</span>blog.log
log4j.appender.fileout.Append=<span style="color: #c20cb9; font-weight: bold;">true</span>
log4j.appender.fileout.DatePattern=<span style="color: #ff0000;">'.'</span>yyyy-MM-dd
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=<span style="color: #000000; font-weight: bold;">%</span>d <span style="color: #000000; font-weight: bold;">%</span>-5p <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">%</span>c<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">%</span>t<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>n</pre></div></div>

<p>O log4j faz parse de system properties, que podem ser usadas no arquivo de configuração. Uma observação importante é que não é possível usar classes do JBoss aqui! Isso causaria <code>ClassCastExceptions</code>. Algumas dicas:</p>
<ul>
<li>No JBoss 5, use o <code>jboss.server.log.dir</code> e o <code>jboss.server.log.threshold</code>. Isso facilitará o deploy da sua aplicação em outros ambientes;</li>
<li><strong> </strong> Use o mesmo Appender do jboss-log4j (provavelmente uma classe da JBoss estará lá, veja o equivalente da Apache). Isso deixa os logs do JBoss e das aplicações sincronizados, facilitando o correlacionamento de erros;</li>
</ul>
<p>O problema dessa abordagem é que perdemos o &#8220;hot deploy&#8221; do jboss-log4j.xml, que nos permite alterar o nível de log sem indisponibilidade.</p>
<p><strong>Referências:</strong><br />
<a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html">http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html</a><br />
<a href="http://viragine.blogspot.com/2009/02/separando-o-log-do-jboss-as-por.html">http://viragine.blogspot.com/2009/02/separando-o-log-do-jboss-as-por.html</a><br />
<a href="http://community.jboss.org/wiki/SeparatingApplicationLogs">http://community.jboss.org/wiki/SeparatingApplicationLogs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/10/20/separando-logs-por-aplicacao-no-jboss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SumUp do JBossInBossa 2011</title>
		<link>http://rafaelliu.net/2011/10/11/sumup-do-jbossinbossa-2011/</link>
		<comments>http://rafaelliu.net/2011/10/11/sumup-do-jbossinbossa-2011/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 16:28:24 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Evento]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBoss In Bossa]]></category>
		<category><![CDATA[JBossInBossa]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=508</guid>
		<description><![CDATA[EDIT: slides da palestra disponíveis no SlideShare Foi muito bom! Um dia inteiro com geeks das mais diversas áreas num ambiente de troca de conhecimento incrível. As fotos estão no Picasa. O local do evento ficou apertado para o tanto de gente que deu. Em algumas apresentações as salas ficaram abarrotadas, como a do @brunorst [...]]]></description>
			<content:encoded><![CDATA[<p><strong>EDIT:</strong> <a title="Slides" href="http://www.slideshare.net/rafaelliu/jboss-portlet-bridge" target="_blank">slides da palestra</a> disponíveis no SlideShare</p>
<p>Foi muito bom! Um dia inteiro com geeks das mais diversas áreas num ambiente de troca de conhecimento incrível. <a title="JBossInBossa 2011" href="https://picasaweb.google.com/114838761141227062246/JBossInBossa2011" target="_blank">As fotos estão no Picasa</a>.</p>
<p>O local do evento ficou apertado para o tanto de gente que deu. Em algumas apresentações as salas ficaram abarrotadas, como a do @brunorst e @claudio4j falando de <strong>Tuning de JBoss</strong> e a do @vtcorrea e @g_luszczynski falando de <strong>Alta Disponibilidade</strong>. Ambas as palestras muito bem criticadas e ambas não pude ver..</p>
<p>O @salaboy abriu o evento com um keynote sobre <strong>jBPM5</strong> seguido do @jedgarsilva, com toda sua manha de fazer apresentações, falando sobre <strong>Cloud</strong>. O @porcelli e o Pedro Igor falaram sobre <strong>noSQL</strong> e <strong>data grids</strong> e se complementaram bem o primeiro dando um banho (muito bem dado) de conceitos e o segundo falando de produto mesmo, o <strong>Infinispan</strong>. Para mim foram as apresentações mais interessantes porque nunca tinha ido atrás desses assuntos, que já estão há um bom tempo ai como buzzwords.</p>
<p>Uma apresentação que eu queria muito ter visto e perdi foi a do @jpviragine falando sobre Federação de Dados com o <strong>Teiid</strong>. No horário da apresentação dele eu estava na outra sala falando sobre <strong>JBoss Portlet Bridge</strong>. Uma pena, ainda mais vendo a boa repercussão que teve =/</p>
<p>Teve também <strong>Weld</strong> e <strong>Seam</strong> com o @rimolive e a @hannelita, que cobriram muito bem o assunto. O @rafabene e o @osmanlira mandaram muito bem na apresentação de <strong>Drools</strong>. O @rafaeltuelho falou sobre <strong>RHQ</strong>, com uma demo que pelo que ouvi foi massa. E restou à Flávia Rainone fechar o evento falando sobre <strong>JBoss7</strong>.</p>
<p>O evento foi nota 10, mesmo sendo apenas a primeira edição em Brasília. Fiquei muito feliz de ter podido palestrar nele porque o público estava muito interessado e não tem nada melhor do que ver gente interessada perguntando na sua palestra =)</p>
<p>Aos que não foram, recomendo não perderem a chance de se inscrever para a edição de 2012 já já deve tá vindo ai.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/10/11/sumup-do-jbossinbossa-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rodando GateIn no Eclipse</title>
		<link>http://rafaelliu.net/2011/09/30/rodando-gatein-no-eclipse/</link>
		<comments>http://rafaelliu.net/2011/09/30/rodando-gatein-no-eclipse/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 14:04:31 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[gatein]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=494</guid>
		<description><![CDATA[Graças ao módulo WCI, o GateIn pode rodar em vários servidores. A JBoss distribui ele em duas formas: baseado no JBoss e baseado no Tomcat. Desenvolver portlets para o GateIn utilizando o empacotamento em JBoss é bem simples, basta adicionar um novo servidor (é preciso ter o módulo WTP, e preferencialmente o JBoss Tools também) [...]]]></description>
			<content:encoded><![CDATA[<p>Graças ao módulo WCI, o GateIn pode rodar em vários servidores. A JBoss distribui ele em duas formas: baseado no JBoss e baseado no Tomcat. Desenvolver portlets para o GateIn utilizando o empacotamento em JBoss é bem simples, basta adicionar um novo servidor (é preciso ter o <a title="Eclipse WTP" href="http://www.eclipse.org/webtools/" target="_blank">módulo WTP</a>, e preferencialmente o<a title="JBoss Tools" href="http://www.jboss.org/tools" target="_blank"> JBoss Tools</a> também) JBoss apontando para a instalação do GateIn e está tudo resolvido.</p>
<p>Se você quer utilizar o GateIn com Tomcat é um pouco mais complicado, mas nada preciso adicionar a instalação do Tomcat do GateIn normalmente fazer algumas alterações:</p>
<p>1. Mudar no &#8220;Server Location&#8221; para &#8220;Use Tomcat installation (takes control of Tomcat installation)&#8221;</p>
<p>2. No  &#8221;Launch Configuration&#8221; configurar o &#8220;Working directory&#8221; com o $TOMCAT_HOME</p>
<p>3. Ainda no  &#8221;Launch Configuration&#8221; adicionar os parâmetros:</p>
<p style="padding-left: 30px;">-Djava.security.auth.login.config=../conf/jaas.conf</p>
<p style="padding-left: 30px;">-Dexo.conf.dir.name=gatein/conf</p>
<p>4. Provavelmente será também preciso alterar limites de memória da JVM e timeouts de subida/descida do WTP.</p>
<p>Para desenvolver no GateIn, tanto no JBoss quanto no Tomcat, pode ser interessante adicionar o parâmetro <code>-Dexo.product.developing=true</code>, que desabilita vários caches e desabilita o merge/compressão de CSS e JS.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/09/30/rodando-gatein-no-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rapidinha: enviando mensagens JGroups no viewAccepted()</title>
		<link>http://rafaelliu.net/2011/08/21/rapidinha-enviando-mensagens-jgroups-no-viewaccepted/</link>
		<comments>http://rafaelliu.net/2011/08/21/rapidinha-enviando-mensagens-jgroups-no-viewaccepted/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 15:29:40 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[jgroups]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=455</guid>
		<description><![CDATA[No JGroups, e﻿nviar mensagens no viewAccepted() é útil quando novos nós precisam passar ao cluster alguma informação ao entrarem no cluster. No entanto nós do cluster apenas aceitam mensagens de nós que façam parte da sua view, o que pode trazer problemas. Imagine um cluster com view V1={A,B,C} e um novo nó D que entra [...]]]></description>
			<content:encoded><![CDATA[<p>No JGroups, e﻿nviar mensagens no viewAccepted() é útil quando novos nós precisam passar ao cluster alguma informação ao entrarem no cluster.</p>
<p>No entanto nós do cluster apenas aceitam mensagens de nós que façam parte da sua view, o que pode trazer problemas. Imagine um cluster com view V1={A,B,C} e um novo nó D que entra no cluster. Quando a nova view V2={A,B,C,D} é instalada no nó D, os outros nós A, B e/ou C podem ainda ter a view V1 (views são instaladas sem ordem específica). Isso quer dizer que eles  vão descartar mensagens enviadas por D, já que ele não faz parte do cluster (porque a view V2 ainda não foi instalada).</p>
<p>Para isso é possível usar o protocolo FLUSH [1] (já existe uma configuração padrão no JGroups chamada flush-udp.xml) que resolve o problema de outros nós não terem a mesma view do nó que enviou a mensagem. No entanto é preciso subir outra thread ao enviar mensagens com o FLUSH no view Accepted() [2].</p>
<p>Referências<br />
[1] <a href="http://www.jgroups.org/manual-3.x/html/user-channel.html#Receiver">http://www.jgroups.org/manual-3.x/html/user-channel.html#Receiver<br />
</a>[2] <a href="http://community.jboss.org/wiki/SendingOfMessagesInViewAcceptedCallback">http://community.jboss.org/wiki/SendingOfMessagesInViewAcceptedCallback<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/08/21/rapidinha-enviando-mensagens-jgroups-no-viewaccepted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weld no Tomcat 7</title>
		<link>http://rafaelliu.net/2011/05/29/weld-no-tomcat-7/</link>
		<comments>http://rafaelliu.net/2011/05/29/weld-no-tomcat-7/#comments</comments>
		<pubDate>Sun, 29 May 2011 15:44:03 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[weld tomcat]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=428</guid>
		<description><![CDATA[Havia escrito há muito tempo atrás como fazer o deploy de uma aplicação Seam no Tomcat. Daquele tempo para cá muita coisa mudou: o Seam junto com outros frameworks de IoC gerou a JSR-299 de Contexts and Dependency Injection (CDI), a JBoss criou o Weld (implementação de referência CDI), o Seam 3 foi lançado baseado [...]]]></description>
			<content:encoded><![CDATA[<p>Havia <a title="JBoss Seam no Tomcat" href="/?p=25" target="_blank">escrito há muito</a> tempo atrás como fazer o deploy de uma aplicação Seam no Tomcat. Daquele tempo para cá muita coisa mudou: o Seam junto com outros frameworks de IoC gerou a JSR-299 de Contexts and Dependency Injection (CDI), a JBoss criou o Weld (implementação de referência CDI), o Seam 3 foi lançado baseado na nova especificação.</p>
<p>Com a padronização numa JSR, agora implementações CDI são obrigadas a suportar uma variedade maior de ambientes de forma <em>vendor neutral</em>. O <a title="Weld Environments" href="http://docs.jboss.org/weld/reference/latest/en-US/html/environments.html" target="_self">Weld faz isso</a> e entre os ambientes suportados está o Tomcat. Portanto não há necessidade de configurações extras e gambiarras! O próprio projeto Weld provê archetypes maven com várias configuração, para criar uma aplicação para rodar em um <em>servlet container</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">mvn archetype:generate <span style="color: #660033;">-DarchetypeArtifactId</span>=weld-jsf-servlet-minimal \
                       <span style="color: #660033;">-DarchetypeGroupId</span>=org.jboss.weld.archetypes \
                       <span style="color: #660033;">-DarchetypeVersion</span>=1.0.0.Beta1 \
                       <span style="color: #660033;">-DarchetypeRepository</span>=central</pre></div></div>

<p>E um projeto pronto para ser executado no Tomcat/Jetty será criado. O problema é que, devido a <a title="Tomcat 7 container is identified as Tomcat 6" href="https://issues.jboss.org/browse/WELD-879" target="_blank">um bug</a>, no Tomcat 7 pode ser que você veja a seguinte exceção:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">SEVERE<span style="color: #339933;">:</span> <span style="color: #003399;">Exception</span> sending context initialized event to listener instance of <span style="color: #000000; font-weight: bold;">class</span> org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">weld</span>.<span style="color: #006633;">environment</span>.<span style="color: #006633;">servlet</span>.<span style="color: #006633;">Listener</span>
java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">NoClassDefFoundError</span><span style="color: #339933;">:</span> org<span style="color: #339933;">/</span>apache<span style="color: #339933;">/</span>AnnotationProcessor
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">defineClass1</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Native</span> <span style="color: #003399;">Method</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">defineClass</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">634</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">security</span>.<span style="color: #003399;">SecureClassLoader</span>.<span style="color: #006633;">defineClass</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">SecureClassLoader</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">142</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">findClassInternal</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">2820</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">findClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1143</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1638</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1516</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">defineClass1</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Native</span> <span style="color: #003399;">Method</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">defineClass</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">ClassLoader</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">634</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">security</span>.<span style="color: #003399;">SecureClassLoader</span>.<span style="color: #006633;">defineClass</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">SecureClassLoader</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">142</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">findClassInternal</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">2820</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">findClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1143</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1638</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1516</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">weld</span>.<span style="color: #006633;">environment</span>.<span style="color: #006633;">tomcat</span>.<span style="color: #006633;">Tomcat6Container</span>.<span style="color: #006633;">initialize</span><span style="color: #009900;">&#40;</span>Tomcat6Container.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">47</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">weld</span>.<span style="color: #006633;">environment</span>.<span style="color: #006633;">servlet</span>.<span style="color: #006633;">Listener</span>.<span style="color: #006633;">contextInitialized</span><span style="color: #009900;">&#40;</span>Listener.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">184</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardContext</span>.<span style="color: #006633;">listenerStart</span><span style="color: #009900;">&#40;</span>StandardContext.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">4544</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardContext</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>StandardContext.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">5016</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">LifecycleBase</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>LifecycleBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">ContainerBase</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>ContainerBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1035</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardHost</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>StandardHost.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">738</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">LifecycleBase</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>LifecycleBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">ContainerBase</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>ContainerBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1035</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardEngine</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>StandardEngine.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">289</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">LifecycleBase</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>LifecycleBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardService</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>StandardService.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">442</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">LifecycleBase</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>LifecycleBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">core</span>.<span style="color: #006633;">StandardServer</span>.<span style="color: #006633;">startInternal</span><span style="color: #009900;">&#40;</span>StandardServer.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">674</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">util</span>.<span style="color: #006633;">LifecycleBase</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>LifecycleBase.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">140</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">startup</span>.<span style="color: #006633;">Catalina</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>Catalina.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">596</span><span style="color: #009900;">&#41;</span>
	at sun.<span style="color: #006633;">reflect</span>.<span style="color: #006633;">NativeMethodAccessorImpl</span>.<span style="color: #006633;">invoke0</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Native</span> <span style="color: #003399;">Method</span><span style="color: #009900;">&#41;</span>
	at sun.<span style="color: #006633;">reflect</span>.<span style="color: #006633;">NativeMethodAccessorImpl</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>NativeMethodAccessorImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">57</span><span style="color: #009900;">&#41;</span>
	at sun.<span style="color: #006633;">reflect</span>.<span style="color: #006633;">DelegatingMethodAccessorImpl</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>DelegatingMethodAccessorImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">43</span><span style="color: #009900;">&#41;</span>
	at java.<span style="color: #006633;">lang</span>.<span style="color: #006633;">reflect</span>.<span style="color: #003399;">Method</span>.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Method</span>.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">616</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">startup</span>.<span style="color: #006633;">Bootstrap</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span>Bootstrap.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">303</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">startup</span>.<span style="color: #006633;">Bootstrap</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#40;</span>Bootstrap.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">431</span><span style="color: #009900;">&#41;</span>
Caused by<span style="color: #339933;">:</span> java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">ClassNotFoundException</span><span style="color: #339933;">:</span> org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">AnnotationProcessor</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1671</span><span style="color: #009900;">&#41;</span>
	at org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">catalina</span>.<span style="color: #006633;">loader</span>.<span style="color: #006633;">WebappClassLoader</span>.<span style="color: #006633;">loadClass</span><span style="color: #009900;">&#40;</span>WebappClassLoader.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1516</span><span style="color: #009900;">&#41;</span>
	... <span style="color: #cc66cc;">36</span> more</pre></div></div>

<p>O problema é que o Weld identifica erroneamente o Tomcat 7 como Tomcat 6. Para resolver o problema podemos definir explicitamente que o container que estamos usando é o Tomcat 7. Isso é feito criando-se um arquivo <code>META-INF/services/org.jboss.weld.environment.Container</code> no classpath com o conteúdo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">org.jboss.weld.environment.tomcat7.Tomcat7Container</pre></div></div>

<p>Note que estamos definindo na mão o container! Ou seja, abrimos mão da portabilidade. Vamos esperar o bug ser corrigido, mas até lá é isso!</p>
<p>Referência: <a href="https://issues.jboss.org/browse/WELD-879">https://issues.jboss.org/browse/WELD-879</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2011/05/29/weld-no-tomcat-7/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Configurando o JBoss Messaging em cluster</title>
		<link>http://rafaelliu.net/2010/05/30/configurando-o-jboss-messaging-em-cluster/</link>
		<comments>http://rafaelliu.net/2010/05/30/configurando-o-jboss-messaging-em-cluster/#comments</comments>
		<pubDate>Sun, 30 May 2010 15:48:17 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[messaging]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=383</guid>
		<description><![CDATA[Uma das grandes evoluções do JBoss Messaging sobre o JBossMQ (seu predecessor) foi a robustez da solução em cluster. Introdução (ou como era com o JBossMQ) Antigamente, o JBossMQ já era clusterizável (ouch.. neologismo..) mas conseguia isso usando o HA Singleton do JBoss. O JBoss quando configurado em cluster pode ser serviços deployados (ouch de [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes evoluções do JBoss Messaging sobre o JBossMQ (seu predecessor) foi a robustez da solução em cluster.</p>
<h4>Introdução (ou como era com o JBossMQ)</h4>
<p>Antigamente, o JBossMQ já era clusterizável (ouch.. neologismo..) mas conseguia isso usando o HA Singleton do JBoss. O JBoss quando configurado em cluster pode ser serviços deployados (ouch de novo..) como singletons através do cluster. Funciona assim: você diz ao JBoss que aquele serviço é um HA Singleton e o JBoss vai garantir a você que em seu cluster haverá sempre um, e apenas um, serviço ativo no cluster (enquanto restar nós no cluster, claro). Essa é uma funcionalidade muito interessante pois permite serviços <em>cluster unaware</em> serem clusterizáveis.</p>
<p>O balanceamento de carga pudia ser feito através dos consumidores: implementando um <a title="JBossMQReceiverImpl" href="http://community.jboss.org/wiki/JBossMQReceiverImpl">ReceiverImpl</a> consumidores iriam receber as mensagens <em>a la</em> round robin. Melhor que nada.</p>
<h4>JBoss Messaging</h4>
<p>O JBoss Messaging é a implementação padrão do JBoss 5. Com o JBoss Messaging a infraestrutura de clusterização melhorou Muito. Podemos agora criar um cluster ativo/ativo, que quando um nó falhar o outro se encarregará de enfileirar suas mensagens. E ainda mais, temos balanceamento de carga de fato: cada conexão aberta usará uma fila diferente, round robin <em>way</em>.</p>
<h4>Montando o cluster</h4>
<p>Configurar o JBoss Messaging em cluster é extremamente fácil:</p>
<ul>
<li>Ative a clusterização nos arquivos de configuração do JBoss Messaging e configure um banco de dados compartilhado;</li>
<li>User um ConnectionFactory e uma Queue/Topic marcados como clusterizados.</li>
</ul>
<p>Bom, vamos aos bits. As versões usadas seguem:</p>
<ul>
<li>JBoss 5.1.0.GA</li>
<li>JBoss Messaging 1.4.3.GA (a que vem por padrão)</li>
</ul>
<h5>Configurando o JBoss Messaging</h5>
<p>Para fazer o <em>failover</em>, o JBoss Messaging precisa usar um banco de dados compartilhado. Copie de $JBOSS_HOME/examples/config o XML apropriado sobrescrevendo o $JBOSS_HOME/server/all/deploy/messaging/hsqldb-persistence-service.xml (lembre de configurar/iniciar o banco de dados!). Vou usar o MySQL:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>all<span style="color: #000000; font-weight: bold;">/</span>deploy<span style="color: #000000; font-weight: bold;">/</span>messaging<span style="color: #000000; font-weight: bold;">/</span>hsqldb-persistence-service.xml
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>examples<span style="color: #000000; font-weight: bold;">/</span>config<span style="color: #000000; font-weight: bold;">/</span>mysql-persistence-service.xml <span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>all<span style="color: #000000; font-weight: bold;">/</span>deploy<span style="color: #000000; font-weight: bold;">/</span>messaging</pre></div></div>

<p>Ative a clusterização:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Clustered&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/attribute<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;FailoverOnNodeLeave&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/attribute<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Aponte para apontar para o datasource do seu banco:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;DataSource&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>java:/DefaultDS<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/attribute<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h5>Criando as filas e factories</h5>
<p>Vamos usar o ClusteredConnectionFactory, que é uma factory padrão do JBoss que vá vem configurada em cluster, se quiser ver como é feito: $JBOSS_HOME/server/all/deploy/messaging/connection-factories-service.xml.</p>
<p>Só precisamos criar nossas filas clusterizadas. Adicionem um arquivo $JBOSS_HOME/server/all/deploy/clustered-destinations-service.xml com o seguinte conteúdo:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mbean</span> <span style="color: #000066;">code</span>=<span style="color: #ff0000;">&quot;org.jboss.jms.server.destination.QueueService&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;jboss.messaging.destination:service=Queue,name=clusteredQueue&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">xmbean-dd</span>=<span style="color: #ff0000;">&quot;xmdesc/Queue-xmbean.xml&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;depends</span> <span style="color: #000066;">optional-attribute-name</span>=<span style="color: #ff0000;">&quot;ServerPeer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>jboss.messaging:service=ServerPeer<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/depends<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;depends<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>jboss.messaging:service=PostOffice<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/depends<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Clustered&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/attribute<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mbean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h5>Criando os profiles</h5>
<p>Se queremos criar um cluster vamos precisar de dois nós! Então copie o profile all e crie dois outros profiles:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> all jms1
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> all jms2</pre></div></div>

<h4>Testando</h4>
<p>Vamos subir os dois nós usando o serviço de ServiceBinding do JBoss para não haver conflitos de porta ou ip:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>run.sh <span style="color: #660033;">-c</span> jms1 -Djboss.service.binding.set=ports-01 -Djboss.messaging.ServerPeerID=<span style="color: #000000;">1</span>
.<span style="color: #000000; font-weight: bold;">/</span>run.sh <span style="color: #660033;">-c</span> jms2 -Djboss.service.binding.set=ports-02 -Djboss.messaging.ServerPeerID=<span style="color: #000000;">2</span></pre></div></div>

<p>Agora vamos usar uns programinhas que fiz para produzir e consumir mensagens, ele é bem simples e intuitivo e é empacotado junto com os fontes. Vamos usá-lo para testar nosso cluster.</p>
<p>Iniciamos um <em>consumer</em> para cada nó do cluster:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java <span style="color: #660033;">-cp</span> JmsSample.jar:<span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>client<span style="color: #000000; font-weight: bold;">/</span>jbossall-client.jar net.rafaelliu.jms.JmsConsumer 127.0.0.1:<span style="color: #000000;">1100</span> ClusteredConnectionFactory queue<span style="color: #000000; font-weight: bold;">/</span>clusteredQueue
java <span style="color: #660033;">-cp</span> JmsSample.jar:<span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>client<span style="color: #000000; font-weight: bold;">/</span>jbossall-client.jar net.rafaelliu.jms.JmsConsumer 127.0.0.1:<span style="color: #000000;">1200</span> ClusteredConnectionFactory queue<span style="color: #000000; font-weight: bold;">/</span>clusteredQueue</pre></div></div>

<p><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">E iniciar o nosso <em>producer</em>:</span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">java <span style="color: #660033;">-cp</span> JmsSample.jar:<span style="color: #007800;">$JBOSS_HOME</span><span style="color: #000000; font-weight: bold;">/</span>client<span style="color: #000000; font-weight: bold;">/</span>jbossall-client.jar net.rafaelliu.jms.JmsProducer 127.0.0.1:<span style="color: #000000;">1100</span>,127.0.0.1:<span style="color: #000000;">1200</span> ClusteredConnectionFactory queue<span style="color: #000000; font-weight: bold;">/</span>clusteredQueue <span style="color: #000000;">10</span> <span style="color: #000000;">1</span> <span style="color: #ff0000;">&quot;Mensagem de teste&quot;</span></pre></div></div>

<p><span style="font-weight: normal;">Viram que as mensagens foram balanceadas? Agora podemos tentar o seguinte:</span></p>
<ul>
<li><span style="font-weight: normal;">fechar um dos consumers: as mensagens são enviadas para o outro consumer;</span></li>
<li><span style="font-weight: normal;">fechar um dos consumers enquanto estão sendo enviadas mensagens: o outro consumer assume a partir da última mensagem; </span></li>
<li><span style="font-weight: normal;">pausar e despausar um consumer: as mensagens vão sendo enfileiradas e quando despausamos, elas são todas consumidas;</span></li>
<li><span style="font-weight: normal;">pausar um consumer e depois fechar: as mensagens vão sendo enfileiradas e quando fechamos, elas são repassadas para o outro nó.</span></li>
</ul>
<p><span style="font-weight: normal;">Dá pra brincar muito!</span></p>
<h4>Futuro</h4>
<p>Atualmente, sendo empacotado junto com o último Milestone do JBoss 6, o serviço de mensageria foi trocado pelo HornetQ. Isso significa ainda outra evolução na área do MOM para a JBoss. Vamos ver se quando for para GA não escrevo sobre ele. Até a próxima o/</p>
<p>PS: para produção dêem uma olhada nos parâmetros <code>DefaultPreserveOrdering</code> e <code>SuckerPassword</code>.</p>
<p>Binário: <a href="http://github.com/downloads/rafaelliu/rafaelliu.net/JmsSample.jar">http://github.com/downloads/rafaelliu/rafaelliu.net/JmsSample.jar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2010/05/30/configurando-o-jboss-messaging-em-cluster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Abertas inscrições para o JBoss In Bossa 2010</title>
		<link>http://rafaelliu.net/2010/04/10/abertas-inscricoes-para-o-jboss-in-bossa-2010/</link>
		<comments>http://rafaelliu.net/2010/04/10/abertas-inscricoes-para-o-jboss-in-bossa-2010/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 22:42:47 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Evento]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JBoss In Bossa]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=371</guid>
		<description><![CDATA[Ainda que tarde, vale a pena anunciar. Foram abertas as incrições para o JBoss In Bossa 2010 que acontecerá em São Paulo dias 7 e 8 de maio. O evento é o maior da América Latina relacionado a JBoss e contará com a presença de palestrantes internacionais como o Peter Muir (project lead do Seam [...]]]></description>
			<content:encoded><![CDATA[<p>Ainda que tarde, vale a pena anunciar.</p>
<p>Foram abertas as incrições para o <a title="JBoss In Bossa 2010" href="http://www.jbossinbossa.com.br/2010/index.htm">JBoss In Bossa 2010</a> que acontecerá em São Paulo dias 7 e 8 de maio. O evento é o maior da América Latina relacionado a JBoss e contará com a presença de palestrantes internacionais como o Peter Muir (project lead do Seam e do Weld), Benjamin Mestrallet (CEO da eXo Platform) e Mauricio Salatino (CTO da PlugTree).</p>
<p>Veja alguns dos principais assuntos previstos na agenda:</p>
<ul>
<li>O novo JBoss 6</li>
<li>Tuning JBoss</li>
<li>Java Persistence API</li>
<li>Seam</li>
<li>Weld</li>
<li>Contexts and Dependency Injection</li>
<li>Java ServerFaces 2.0</li>
<li>Teiid</li>
<li>Drools</li>
<li>Jopr</li>
<li><a title="Agenda" href="http://www.jbossinbossa.com.br/2010/agenda.html">E a lista continua.</a>.</li>
</ul>
<p>É uma ótima oportunidade para conhecer pessoalmente alguns nomes de peso na comunidade e fazer networking. <a title="Inscreva-se" href="http://www.jbossinbossa.com.br/app/precosinscricoes.html" target="_blank">Se inscreva!</a></p>
<p>Acompanhe também o evento via <a title="Tweeter" href="http://twitter.com/jbossinbossa" target="_blank">@jbossinbossa</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2010/04/10/abertas-inscricoes-para-o-jboss-in-bossa-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java.lang.IllegalArgumentException: LifecycleId already added for id: SEAM_PORTLET.</title>
		<link>http://rafaelliu.net/2010/03/07/java-lang-illegalargumentexception-lifecycleid-already-added-for-id-seam_portlet/</link>
		<comments>http://rafaelliu.net/2010/03/07/java-lang-illegalargumentexception-lifecycleid-already-added-for-id-seam_portlet/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 15:08:02 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[gatein]]></category>
		<category><![CDATA[portlet]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=364</guid>
		<description><![CDATA[It&#8217;s almost a tradition now in this blog posting fixes to common Exceptions, so here is another one This one goes to people using JBoss Portlet Bridge 2.0.0.CR1 (don&#8217;t know about other versions). The stacktrace is the following: Caused by: java.lang.IllegalArgumentException: LifecycleId already added for id: SEAM_PORTLET. at com.sun.faces.lifecycle.LifecycleFactoryImpl.addLifecycle&#40;LifecycleFactoryImpl.java:199&#41; at org.jboss.portletbridge.lifecycle.PortletLifecycleFactory.addLifecycle&#40;PortletLifecycleFactory.java:60&#41; at org.jboss.portletbridge.lifecycle.PortletLifecycleFactory.&#40;PortletLifecycleFactory.java:48&#41; ... 195 [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s almost a tradition now in this blog posting fixes to common Exceptions, so here is another one <img src='http://rafaelliu.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>This one goes to people using JBoss Portlet Bridge 2.0.0.CR1 (don&#8217;t know about other versions). The stacktrace is the following:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"> Caused by<span style="color: #339933;">:</span> java.<span style="color: #006633;">lang</span>.<span style="color: #003399;">IllegalArgumentException</span><span style="color: #339933;">:</span> LifecycleId already added <span style="color: #000000; font-weight: bold;">for</span> id<span style="color: #339933;">:</span> SEAM_PORTLET.
         <span style="color: #006633;">at</span> com.<span style="color: #006633;">sun</span>.<span style="color: #006633;">faces</span>.<span style="color: #006633;">lifecycle</span>.<span style="color: #006633;">LifecycleFactoryImpl</span>.<span style="color: #006633;">addLifecycle</span><span style="color: #009900;">&#40;</span>LifecycleFactoryImpl.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">199</span><span style="color: #009900;">&#41;</span>
         at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">portletbridge</span>.<span style="color: #006633;">lifecycle</span>.<span style="color: #006633;">PortletLifecycleFactory</span>.<span style="color: #006633;">addLifecycle</span><span style="color: #009900;">&#40;</span>PortletLifecycleFactory.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">60</span><span style="color: #009900;">&#41;</span>
         at org.<span style="color: #006633;">jboss</span>.<span style="color: #006633;">portletbridge</span>.<span style="color: #006633;">lifecycle</span>.<span style="color: #006633;">PortletLifecycleFactory</span>.<span style="color: #009900;">&#40;</span>PortletLifecycleFactory.<span style="color: #006633;">java</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">48</span><span style="color: #009900;">&#41;</span>
         ... <span style="color: #cc66cc;">195</span> more</pre></div></div>

<h4>The long history:</h4>
<p>Portlet Bridge uses a custom JSF Lifecycle for handling behaviour specific to portlets. It does so by means of a embedded <code>faces-config.xml</code> in it&#8217;s jar. The problem is that it tries to add this SEAM_PORTLET even if it already exists. That means that having 2 Portlet Bridges JAR in your application&#8217;s classpath will cause confusion.</p>
<p>That raises a not so trivial scenario. Even tho you have only one Portlet Bridge JAR, depending on how your JBoss classloading configuration is set, this Exception can occur. That&#8217;s because JBoss uses temporary folders to unpack Javar Archives in it&#8217;s <code>&lt;JBOSS_HOME&gt;/server/default/tmp</code> (or whatever configuration you are using). These folders have unique auto-generated names, so between startups your WAR may be unpacked to a folder in tmp while there&#8217;s already an older version there with a different name.</p>
<h4>The short history:</h4>
<p>Delete your JBoss configuration&#8217;s tmp and work (don&#8217;t worry, it&#8217;s safe) folder or search for some duplicated <code>portletbridge-impl.jar</code>.</p>
<p>Reference: <a title="LifecycleId already added for id: SEAM_PORTLET." href="https://jira.jboss.org/jira/browse/PBR-147" target="_blank">JIRA</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2010/03/07/java-lang-illegalargumentexception-lifecycleid-already-added-for-id-seam_portlet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBossInBossa 2010</title>
		<link>http://rafaelliu.net/2010/02/04/jbossinbossa-2010/</link>
		<comments>http://rafaelliu.net/2010/02/04/jbossinbossa-2010/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 16:07:25 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[Evento]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JBossInBossa]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=352</guid>
		<description><![CDATA[O evento ocorrerá dias 16 e 17 de Abril em São Paulo O JBossInBossa 2010 é a conferência anual da comunidade JBoss brasileira, ele contará com palestrantes internacionais que são líderes de projetos opensource, bem como palestras da comunidade brasileira que desenvolve e fomenta tecnologias relaciodas além do time brasileiro JBoss que atua em diversos [...]]]></description>
			<content:encoded><![CDATA[<p>O evento ocorrerá dias 16 e 17 de Abril em São Paulo</p>
<blockquote><p>O JBossInBossa 2010 é a conferência anual da comunidade JBoss brasileira, ele contará com palestrantes internacionais que são líderes de projetos opensource, bem como palestras da comunidade brasileira que desenvolve e fomenta tecnologias relaciodas além do time brasileiro JBoss que atua em diversos projetos de missão crítica que usam tecnologias de ponta em projetos em todos os lugares do Brasil.</p></blockquote>
<p style="text-align: center;"><object id="W46928cc51133af174b6aefa913d10b6d" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="432" height="240" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="data" value="http://widgets.clearspring.com/o/46928cc51133af17/4b6aefa913d10b6d/46928cc51133af17/44379462/-cpid/532e09fe780e801c" /><param name="wmode" value="transparent" /><param name="allowNetworking" value="all" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="src" value="http://widgets.clearspring.com/o/46928cc51133af17/4b6aefa913d10b6d/46928cc51133af17/44379462/-cpid/532e09fe780e801c" /><param name="allowfullscreen" value="true" /><embed id="W46928cc51133af174b6aefa913d10b6d" type="application/x-shockwave-flash" width="432" height="240" src="http://widgets.clearspring.com/o/46928cc51133af17/4b6aefa913d10b6d/46928cc51133af17/44379462/-cpid/532e09fe780e801c" allowfullscreen="true" allowscriptaccess="always" allownetworking="all" wmode="transparent" data="http://widgets.clearspring.com/o/46928cc51133af17/4b6aefa913d10b6d/46928cc51133af17/44379462/-cpid/532e09fe780e801c"></embed></object></p>
<p>Mais informações: <a title="JBossInBossa 2010" href="http://www.jbossinbossa.com.br/2010/index.htm" target="_blank">JBossInBossa</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2010/02/04/jbossinbossa-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

