<?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>Hespanha &#187; jboss</title>
	<atom:link href="http://www.hespanha.com.br/blog/category/jboss/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hespanha.com.br/blog</link>
	<description>Apenas um programador que ama o que faz e servo do Senhor Jesus</description>
	<lastBuildDate>Sat, 24 Jul 2010 18:59:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Carreira em Y existe, ao menos nos EUA!</title>
		<link>http://www.hespanha.com.br/blog/2009/09/carreira-em-y-existe-ao-menos-nos-eua/</link>
		<comments>http://www.hespanha.com.br/blog/2009/09/carreira-em-y-existe-ao-menos-nos-eua/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 04:18:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jboss]]></category>
		<category><![CDATA[carreira]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=53</guid>
		<description><![CDATA[Esse ano, pela primeira vez, tive a oportunidade de participar de um evento de computacao internacional fora do pais. Especificamente, eu participei do JBoss World 2009 em Chicago nos EUA. Pretendo blogar aqui tudo que vi e vivi durante o evento. Pra comecar, uma coisa me deixou impressionado, a faixa etaria do evento era bem [...]]]></description>
			<content:encoded><![CDATA[<p>Esse ano, pela primeira vez, tive a oportunidade de participar de um evento de computacao internacional fora do pais. Especificamente, eu participei do JBoss World 2009 em Chicago nos EUA. Pretendo blogar aqui tudo que vi e vivi durante o evento. Pra comecar, uma coisa me deixou impressionado, a faixa etaria do evento era bem alta. Eu costumo participar de varios eventos brasileiros, e sempre a faixa etaria eh baixa, a grande maioria dos participantes estao ou sao recem-saidos da faculdade, eu mesmo me incluo nisso. Jah aqui nos EUA, a maioria dos participantes sao pessoas com mais de 30 anos, muitos, mas muitos mesmo, com mais de 50! Isso me fez ver uma coisa que eu jah sabia, que diferente do Brasil, nos EUA, chegar aos 50, 60 anos programando eh sinal de sucesso. No Brasil, infelizmente, isso nao eh uma verdade na maioria esmagadora das empresas. Cansei e canso de ver, casos de bons programadores com futuro virarem pessimos gerentes por pressao cultural do Brasil, onde carreira em Y eh igual ao monstro do lago Ness, todo mundo diz que existe mas ninguem nunca viu. Aqui, quando o cara tah realmente ficando bom, ganhando experiencia, maturidade com desenvolvimento, ele vira gerente e comeca a ter que mexer com Excel. Acho que esse eh um dos motivos que no Brasil nos somos mais usuarios de tecnologia do que criadores de tecnologia. </p>
<p>Durante o Jboss World eu tive a oportunidade de conversar com um senhor de aproximadamente 60 anos que era programador na NASA. Ele era feliz e bem sucedido no que fazia, e eu fiquei imaginando qual prazeroso deve ser trabalhar com uma pessoa dessas que tem tanta experiencia pra passar.<br />
Eu realmente espero que um dia essa cultura brasileira mude, e vire gerente apenas quem tem perfil gerencial, e nao mais seja o unico caminho para ter uma &#8220;carreira de sucesso&#8221;. Que os brasileiros aprendam isso com os americanos!</p>
<p>PS: Desculpem se o texto nao ficou bem escrito, eh que to em Chicago ainda e estou bem cansado! hehehehe</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/09/carreira-em-y-existe-ao-menos-nos-eua/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rumo ao JBoss World 2009, Chicago, USA</title>
		<link>http://www.hespanha.com.br/blog/2009/08/rumo-ao-jboss-world-2009-chicago-usa/</link>
		<comments>http://www.hespanha.com.br/blog/2009/08/rumo-ao-jboss-world-2009-chicago-usa/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 17:13:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jboss world]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=49</guid>
		<description><![CDATA[Na próxima semana estarei pela primeira vez indo para os EUA participar do Jboss World. Como no projeto que eu estou atualmente aqui no UOL nós usamos 4 ferramentas da Jboss: JBoss AS, JBoss Drools, JBoss jBPM e Hibernate, a empresa acredita que é interessante a minha ida ao evento para estar acompanhando as últimas [...]]]></description>
			<content:encoded><![CDATA[<p>Na próxima semana estarei pela primeira vez indo para os EUA participar do Jboss World. Como no projeto que eu estou atualmente aqui no UOL nós usamos 4 ferramentas da Jboss: JBoss AS, JBoss Drools, JBoss jBPM e Hibernate, a empresa acredita que é interessante a minha ida ao evento para estar acompanhando as últimas novidades do mundo JBoss.</p>
<p>Pretendo postar aqui as coisas bacanas que eu ver, e estarei em real-time twittando o que eu ver de legal por lá, então, se alguém tiver interesse e quiser me seguir, o meu twitter é luiz_hespanha.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/08/rumo-ao-jboss-world-2009-chicago-usa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Monitorando arquiteturas JMS</title>
		<link>http://www.hespanha.com.br/blog/2009/06/monitorando-arquiteturas-jms/</link>
		<comments>http://www.hespanha.com.br/blog/2009/06/monitorando-arquiteturas-jms/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:42:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=39</guid>
		<description><![CDATA[Qualquer sistema sério precisa de monitoração, isso é um fato. Existem vários pontos para serem monitorados dentro de um sistema, o pessoal da Globo.com fez uma excelente apresentação sobre isso no FISL. Veja em: http://www.slideshare.net/denao/fisl-monitoracao-inteligente No sistema que eu trabalho aqui na empresa, usamos muito JMS, então para nós, é imprecindível uma monitoração em cima [...]]]></description>
			<content:encoded><![CDATA[<p>Qualquer sistema sério precisa de monitoração, isso é um fato. Existem vários pontos para serem monitorados dentro de um sistema, o pessoal da Globo.com fez uma excelente apresentação sobre isso no FISL. Veja em: <a href="http://www.slideshare.net/denao/fisl-monitoracao-inteligente">http://www.slideshare.net/denao/fisl-monitoracao-inteligente</a></p>
<p>No sistema que eu trabalho aqui na empresa, usamos muito JMS, então para nós, é imprecindível uma monitoração em cima dessa tecnologia.</p>
<p>Para quem não sabe, uma aplicação tenta enviar uma mensagem JMS um número configurado de vezes, caso a aplicação que recebe essa mensagem tenha problemas para receber a mensagem. Após o número X de vezes, a mensagem é enviada para uma DLQ, que traduzindo para o português é &#8220;fila-morta&#8221;. É este o ponto que estamos monitorando na nossa aplicação.</p>
<p>Criamos um método JMX que é chamado pelo Nagios de tempos em tempos, e que retorna OK se não existe nenhuma mensagem na DLQ, e NOK cc.</p>
<p>Caso retorne NOK, a minha equipe é avisada para que entre em ação e investigar o porquê da mensagem ter ido para a DLQ, e após isso, resgatar a mensagem da DLQ caso necessário.</p>
<p>O código para fazer isso é o seguinte:</p>
<pre name="code" class="java">
public String validateMessagesSentToDLQ() {
   logger.info("+++++ Validando se ha ou nao mensagens na DLQ +++++");
   ObjectName name = null;
   List&lt;SpyMessage&gt; listMessages = null;
   String ret = RETURN_NOK;

   try {
      name = new ObjectName("jboss.mq.destination:service=Queue,name=DLQ");
      listMessages = (List&lt;SpyMessage&gt;) getRmiAdaptor().invoke(name, "listMessages", null, null);
      logger.info("Quantidade de mensages na DLQ: " + listMessages.size());
      if (listMessages.size() == 0) {
         ret = RETURN_OK;
      }
   } catch (Exception e) {
      logger.error("Problemas ao verificar se há mensagens na DLQ!", e);
   }
   return ret;
}
</pre>
<p>Este código funciona no JBoss 4.0.4. Não sei dizer se funciona em outros servidores ou versões do JBoss, mas se não funcionar, não deve ser difícil adaptar ele.</p>
<p>Bom, tá aí a dica! Recomendo essa monitoração. Já nos ajudou bastante aqui no UOL!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/06/monitorando-arquiteturas-jms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheduler do JBoss rodando uma hora depois do configurado</title>
		<link>http://www.hespanha.com.br/blog/2009/06/scheduler-do-jboss-rodando-uma-hora-depois-do-configurado/</link>
		<comments>http://www.hespanha.com.br/blog/2009/06/scheduler-do-jboss-rodando-uma-hora-depois-do-configurado/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 20:48:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=21</guid>
		<description><![CDATA[Nós passamos por um problema curioso no projeto que eu estou trabalhando aqui no UOL. Nós tinhamos um processo batch que estava configurado para rodar todos os dias as 3:00 da manhã. Esse processo batch era iniciado via scheduler do Jboss. O problema é que surpreendentemente o processo ao invez de rodar as 3:00 da [...]]]></description>
			<content:encoded><![CDATA[<p>Nós passamos por um problema curioso no projeto que eu estou trabalhando aqui no UOL. Nós tinhamos<br />
um processo batch que estava configurado para rodar todos os dias as 3:00 da manhã. Esse processo<br />
batch era iniciado via scheduler do Jboss. O problema é que surpreendentemente o processo ao invez<br />
de rodar as 3:00 da manhã, começpi a rodar as 4:00 da manhã sem nenhum motivo aparente.</p>
<p>A configuração estava feita da seguinte forma:</p>
<pre name="code" class="xml">
&lt;mbean code="org.jboss.varia.scheduler.Scheduler"
name="jboss.docs:service=MyScheduler"&gt;
&lt;attribute name="TimerName"&gt;jboss:service=MyTimer&lt;/attribute&gt;
&lt;attribute name="SchedulableClass"&gt;br.com.uol.MyScheduler&lt;/attribute&gt;
&lt;attribute name="StartAtStartup"&gt;true&lt;/attribute&gt;
&lt;attribute name="DateFormat"&gt;dd/MM/yyyy HH:mm&lt;/attribute&gt;
&lt;attribute name="InitialStartDate"&gt;01/01/2006 03:00&lt;/attribute&gt;
&lt;attribute name="SchedulePeriod"&gt;86400000&lt;/attribute&gt;&lt;!-- Roda uma vez por dia --&gt;
&lt;attribute name="InitialRepetitions"&gt;-1&lt;/attribute&gt;
&lt;depends&gt;administration:custom=MyJMX&lt;/depends&gt;
&lt;depends&gt;
&lt;mbean code="javax.management.timer.Timer"
name="jboss:service=MyTimer"/&gt;
&lt;/depends&gt;

&lt;/mbean&gt;
</pre>
<p>Foram levantadas hipóteses que o horário da máquina estava configurado errado, que o timezone estava errado, que<br />
o horário de verão estava configurado errado etc. A gente investigou uma por uma e tudo estava OK.</p>
<p>Até que começou a fase do desespero, de começar a etapa de tentar resolver o problema por tentativa e erro, e dessa<br />
forma, descobrimos o problema.</p>
<p>Por uma razão desconhecida, se o campo &#8220;InitialStartDate&#8221; é configurado para alguma data dentro do horário de verão,<br />
ele só inicia no horário correto quando estamos no horário de verão. Para resolver esse problema, nós apelamos<br />
e mudamos este campo para 01/09/2006, e finalmente o scheduler começou a rodar conforme esperado, as 3:00 da manhã.</p>
<p>Fica aí a dica para caso alguém também passe por este problema. A versão do JBoss usada é 4.0.4_GA.</p>
<p>É impressionante como horário de verão sempre traz problemas, mesmo a cada ano a gente cercando cada vez mais, sempre<br />
tem algum efeito colateral!</p>
<p>[]&#8216;s e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/06/scheduler-do-jboss-rodando-uma-hora-depois-do-configurado/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mensagens JMS agendadas Just-In-Time</title>
		<link>http://www.hespanha.com.br/blog/2008/08/mensagens-jms-agendadas-just-in-time/</link>
		<comments>http://www.hespanha.com.br/blog/2008/08/mensagens-jms-agendadas-just-in-time/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 15:17:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jms]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=15</guid>
		<description><![CDATA[Uma feature muito legal de mensagens JMS é a possibilidade de poder agendar quando uma mensagem deverá ser recebida pelo MDB. Eu não sei se isso faz parte da especificação, ou se apenas o JBoss possui isso. O exemplo que eu vou demonstrar funciona apenas para o JBoss. Primeiro vamos a um cenário onde este [...]]]></description>
			<content:encoded><![CDATA[<p>Uma feature muito legal de mensagens JMS é a possibilidade de poder agendar quando uma mensagem deverá ser recebida pelo MDB. Eu não sei se isso faz parte da especificação, ou se apenas o JBoss possui isso. O exemplo que eu vou demonstrar funciona apenas para o JBoss.</p>
<p>Primeiro vamos a um cenário onde este agendamento é útil.</p>
<p>Vamos supor que a seguinte regra é solicitada: Ao tentarmos cobrar o cartão do cliente, se a operadora retornar transação negada, o sistema deve re-tentar cobrar este cartão por mais 2 dias, sendo que cada tentativa deve ser feita após 24hs.</p>
<p>É possível resolver este requisito usando banco de dados e as famosas flags, mas essa definitivamente não é uma solução elegante. Imagina que você precisaria ficar fazendo pooling no banco para ver quais cobranças já passaram de 24 horas para processa-las novamente. Ou seja, horrível.</p>
<p>Com JMS dá pra fazer algo muito melhor. Se quando a compra é feita, retornar negado, basta enviar uma mensagem JMS pra fila, agendando essa mensagem para ser processada apenas após 24 horas. Quando der essas 24hhs, o MDB lê a mensagem e chama novamente o módulo de cobrança.</p>
<p>Muito simples e elegante. Sem pooling, sem ficar controlando status manualmente, nem nada desse tipo.</p>
<p>O código para fazer isso é extremamente simples:</p>
<p><code>[sourcecode language='java']<br />
ObjectMessage message = session.createObjectMessage();</code></code></code></p>
<p>message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", (new Date().getTime() + (1000 * 60 * 60 * 24)));[/sourcecode]</p>
<p>Pronto, você acabou de agendar a entrega da sua mensagem para daqui a 24 horas. Essa conta maluca aí é porque a data precisa ser passada em milisegundos. <img src='http://www.hespanha.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Eu sou um grande fã de JMS, e essa é mais uma das caracteristicas que me fazem gostar dessa tecnologia.</p>
<p>[]'s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2008/08/mensagens-jms-agendadas-just-in-time/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
