<?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"
	>

<channel>
	<title>MouseOver Studio &#187; Uncategorized</title>
	<atom:link href="http://www.mouseoverstudio.com/blog/category/uncategorized/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.mouseoverstudio.com/blog</link>
	<description></description>
	<pubDate>Wed, 25 Aug 2010 02:03:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Indexação de documentos em JRuby com ActiveLucene</title>
		<link>http://www.mouseoverstudio.com/blog/2010/01/27/indexacao-de-documentos-em-jruby-com-activelucene/</link>
		<comments>http://www.mouseoverstudio.com/blog/2010/01/27/indexacao-de-documentos-em-jruby-com-activelucene/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 03:20:05 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Api]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[gem]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jruby]]></category>

		<category><![CDATA[jvm]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[active_lucene]]></category>

		<category><![CDATA[active_record]]></category>

		<category><![CDATA[engine]]></category>

		<category><![CDATA[full]]></category>

		<category><![CDATA[lucene]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[search]]></category>

		<category><![CDATA[Solr]]></category>

		<category><![CDATA[sphinx]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=192</guid>
		<description><![CDATA[ActiveLucene é uma interface para o Lucene similar com a interface do ActiveRecord e/ou ActiveModel.
Isso quer dizer que você pode gerar um scaffold numa aplicação Rails, ir no modelo, trocar ActiveRecord::Base por ActiveLucene::Document e tudo deveria continuar funcionando, com a diferença do modelo estar sendo salvo num índice do Lucene e não num banco de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/dcrec1/active_lucene">ActiveLucene</a> é uma interface para o <a href="http://lucene.apache.org/java/docs/index.html">Lucene</a> similar com a interface do <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html">ActiveRecord</a> e/ou <a href="http://github.com/rails/rails/tree/master/activemodel">ActiveModel</a>.</p>
<p>Isso quer dizer que você pode gerar um <a href="http://en.wikipedia.org/wiki/Scaffold_(programming)">scaffold</a> numa aplicação <a href="http://rubyonrails.org/">Rails</a>, ir no modelo, trocar ActiveRecord::Base por ActiveLucene::Document e tudo deveria continuar funcionando, com a diferença do modelo estar sendo salvo num índice do Lucene e não num banco de dados relacional.</p>
<p>Dado que os documentos são salvos num índice do Lucene, podemos procurar eles utilizando a <a href="http://lucene.apache.org/java/3_0_0/queryparsersyntax.html">sintaxe de query</a> do Lucene, sem esquecer que por ter uma interface similar à do ActiveRecord, podemos também procurar eles por um id.</p>
<p>A classe base do ActiveLucene se chama Document porque ao igual que os documentos de outros sistemas, não tem uma estrutura definida e todos os atributos são dinâmicos, pelo que você não tem que se preocupar com eles.</p>
<p>o ActiveLucene foi extraído do <a href="http://github.com/dcrec1/lunr">Lunr</a>, um servidor do qual vou falar num futuro post, mas hoje também pode ser utilizado em aplicações nas quais ter um banco de dados relacionais no faz muito sentido e especialmente nas quais se deseja procurar documentos por texto. </p>
<p>A restrição do ActiveLucene é que somente funciona com <a href="http://jruby.org/">JRuby</a>, dado que o Lucene é uma biblioteca em <a href="http://java.sun.com/">Java</a> que roda sobre a JVM. Mesmo assim, caso isso não for um problema, utilizar o ActiveLucene deve ser bem mais simples e leve que utilizar uma solução como o Sphinx ou o Solr, onde dependendo do caso pode resultar numa grande vantagem.</p>
<p>O Lucene tem um monte de funcionalidades e o ActiveLucene não suporta todas elas, mas dependendo das necessidades das pessoas elas serão indo adicionadas ao projeto. Hoje existe um suporte a highlighting e um pouco a paginação, como pode ser visto no seguinte video, junto com uma demonstração básica de como funciona a ferramenta:</p>
<p><object width="501" height="313"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9010209&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9010209&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="501" height="313"></embed></object>
<p><a href="http://vimeo.com/9010209">Full text search in JRuby with ActiveLucene</a> from <a href="http://vimeo.com/user1245982">Diego Carrion</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><em>Se você gostou do ActiveLucene, considera me <a href="http://www.workingwithrails.com/recommendation/new/person/13580-diego-carrion">recomendar</a> no <a href="http://workingwithrails.com/">Working With Rails</a>. Para ficar mais perto das novidades, não deixa de me <a href="http://twitter.com/dcrec1">seguir</a> no Twitter.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2010/01/27/indexacao-de-documentos-em-jruby-com-activelucene/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Plugins de Remarkable para ActsAsTaggableOn, Paperclip e ThinkingSphinx</title>
		<link>http://www.mouseoverstudio.com/blog/2009/05/09/plugins-de-remarkable-para-actsastaggableon-paperclip-e-thinkingsphinx/</link>
		<comments>http://www.mouseoverstudio.com/blog/2009/05/09/plugins-de-remarkable-para-actsastaggableon-paperclip-e-thinkingsphinx/#comments</comments>
		<pubDate>Sat, 09 May 2009 20:51:05 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[ActsAsTaggableOn]]></category>

		<category><![CDATA[Paperclip]]></category>

		<category><![CDATA[RSpec::Rails]]></category>

		<category><![CDATA[Remarkable]]></category>

		<category><![CDATA[ThinkingSphinx]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[rspec]]></category>

		<category><![CDATA[acts_as_taggable_on]]></category>

		<category><![CDATA[rspec-rails]]></category>

		<category><![CDATA[thinking_sphinx]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=166</guid>
		<description><![CDATA[Trabalhado num projeto me vi na necessidade de criar três plugins para o Remarkable: Remarkable::ActsAsTaggableOn, Remarkable::Paperclip e Remarkable::ThinkingSpinx.
Basicamente permitem escrever código como o seguinte:
describe User do
  should_act_as_taggable_on :categories

  should_have_attached_file :logo

  should_index 'addresses.city', :as => :address
  should_have_index_attribute :priority
end
Se esses plugins ajudaram você, considera por favor também me ajudar me recomendando no Working [...]]]></description>
			<content:encoded><![CDATA[<p>Trabalhado num projeto me vi na necessidade de criar três plugins para o <a href="http://github.com/carlosbrando/remarkable/tree/master">Remarkable</a>: <a href="http://github.com/dcrec1/remarkable_acts_as_taggable_on/tree/master">Remarkable::ActsAsTaggableOn</a>, <a href="http://github.com/dcrec1/remarkable_paperclip/tree/master">Remarkable::Paperclip</a> e <a href="http://github.com/dcrec1/remarkable_thinking_sphinx/tree/master">Remarkable::ThinkingSpinx</a>.</p>
<p>Basicamente permitem escrever código como o seguinte:</p>
<pre class="prettyprint">describe User do
  should_act_as_taggable_on :categories

  should_have_attached_file :logo

  should_index 'addresses.city', :as => :address
  should_have_index_attribute :priority
end</pre>
<p><em>Se esses plugins ajudaram você, considera por favor também me ajudar me <a href="http://workingwithrails.com/recommendation/new/person/13580-diego-carrion">recomendando</a> no <a href="http://workingwithrails.com/">Working With Rails</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2009/05/09/plugins-de-remarkable-para-actsastaggableon-paperclip-e-thinkingsphinx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apresentando CompiledScript e Compilable para melhorar a performance de teus programas JRuby e similares</title>
		<link>http://www.mouseoverstudio.com/blog/2008/08/31/apresentando-compiledscript-e-compilable-para-melhorar-a-performance-de-teus-programas-jruby-e-similares/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/08/31/apresentando-compiledscript-e-compilable-para-melhorar-a-performance-de-teus-programas-jruby-e-similares/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 04:05:14 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jruby]]></category>

		<category><![CDATA[jsr]]></category>

		<category><![CDATA[optimizacao]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=119</guid>
		<description><![CDATA[Quando avaliamos alguma script na JVM utilizando o método eval da classe javax.script.ScriptEngine basicamente são realizadas duas tarefas: a compilação do script e a execução dele.
Caso queiramos avaliar x vezes o mesmo script e estejamos chamando o método eval mencionado, o script ira ser compilado x vezes.
O mesmo script precisa ser compilado x vezes?
Não!
O que [...]]]></description>
			<content:encoded><![CDATA[<p>Quando avaliamos alguma script na JVM utilizando o método <em>eval</em> da classe <em>javax.script.ScriptEngine</em> basicamente são realizadas duas tarefas: a compilação do script e a execução dele.</p>
<p>Caso queiramos avaliar x vezes o mesmo script e estejamos chamando o método <em>eval</em> mencionado, o script ira ser compilado x vezes.</p>
<p><strong>O mesmo script precisa ser compilado x vezes?</strong></p>
<p>Não!</p>
<p><strong>O que fazer ao respeito?</strong></p>
<p>A especificação JSR-233 conta com uma classe chamada <em>CompiledScript</em> que como o mesmo nome diz, representa um script compilado, de modo que quando queiramos avaliar o script o único que vamos ter que fazer é executar ele.</p>
<p>Para compilar um script primeiro temos que realizar um casting do engine para a interfase Compilable e logo chamar o metodo <em>compile</em>:</p>
<pre class="prettyprint">CompiledScript compiledScript = ((Compilable) engine).compile(script)</pre>
<p>Logo, quando queiramos avaliar o script compilado o único que vamos ter que fazer e chamar o método <em>eval</em>, passando como parâmetro o contexto (opcional):</p>
<pre class="prettyprint">Object result = compiledScript.eval(context)</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/08/31/apresentando-compiledscript-e-compilable-para-melhorar-a-performance-de-teus-programas-jruby-e-similares/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Problemas com Ubuntu e RSpec</title>
		<link>http://www.mouseoverstudio.com/blog/2008/08/25/problemas-com-ubuntu-e-rspec/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/08/25/problemas-com-ubuntu-e-rspec/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 22:38:56 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rake]]></category>

		<category><![CDATA[rcov]]></category>

		<category><![CDATA[rspec]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rubygems]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=116</guid>
		<description><![CDATA[Peguei hoje a máquina com Ubuntu de um amigo para mostrar para ele a excelente combinação Rake + RSpec + RCov utilizando um script similar a esse de aqui. Ao executar uma das tasks do script recebi o seguinte erro:
no such file to load -- spec/rake/spectask
O RSpec tinha sido instalado utilizando gem install mas aparentemente [...]]]></description>
			<content:encoded><![CDATA[<p>Peguei hoje a máquina com Ubuntu de um amigo para mostrar para ele a excelente combinação <a href="http://rake.rubyforge.org/">Rake</a> + <a href="http://rspec.info/">RSpec</a> + <a href="http://eigenclass.org/hiki.rb?rcov">RCov</a> utilizando um script similar a esse de <a href="http://rspec.info/documentation/tools/rcov.html">aqui</a>. Ao executar uma das tasks do script recebi o seguinte erro:</p>
<pre class="prettyprint">no such file to load -- spec/rake/spectask</pre>
<p>O RSpec tinha sido instalado utilizando <em>gem install</em> mas aparentemente existia algo errado com os caminhos: a pasta spec estava sendo procurada em  <em>/var/lib/gems/1.8/gems/rspec-1.1.4/lib</em> quando ela estava  em <em>/usr/lib/ruby/1.8/</em> . Após ver essa <a href="http://www.jetbrains.net/jira/browse/RUBY-1181">issue</a> descobri que não era um problema tão pessoal e tal vez algum problema relacionado à Ubuntu e RubyGems . De qualquer jeito, se algum dia alguem chegar aqui procurando a solução a tao problema, eu consegui solucioná-lo criando um link simbólico entre as duas pastas:</p>
<pre class="prettyprint">sudo ln -s /var/lib/gems/1.8/gems/rspec-1.1.4/lib/spec /usr/lib/ruby/1.8/spec</pre>
<p>Executei de novo meu script Rake e dessa vez obteve:</p>
<pre class="prettyprint">/usr/bin/rcov:516:in `load': no such file to load -- /usr/lib/ruby/bin/spec (LoadError)
        from /usr/bin/rcov:516</pre>
<p>Aparentemente ta tudo zoado!</p>
<p>Tomara que exista uma melhor solução para esses problemas de paths que sair criando links simbólicos, como fiz novamente nesse caso:</p>
<pre class="prettyprint">sudo ln -s /var/lib/gems/1.8/bin/spec /usr/lib/ruby/bin/spec</pre>
<p>Que saudades senti do meu <a href="http://www.apple.com/macosx/">leopardo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/08/25/problemas-com-ubuntu-e-rspec/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Classloaders e aplicações isoladas no JBoss</title>
		<link>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 22:48:19 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Tutoriales]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jboss]]></category>

		<category><![CDATA[tomcat]]></category>

		<category><![CDATA[classloader]]></category>

		<category><![CDATA[classloading]]></category>

		<category><![CDATA[ear]]></category>

		<category><![CDATA[isolação]]></category>

		<category><![CDATA[isolation]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=90</guid>
		<description><![CDATA[Tudo começou com uma discussão sobre o classloader do Java. A discussão surgiu porque existiam duas aplicações que queriam compartilhar dados de uma classe estática localizada numa biblioteca x. Nesse momento surgiu a seguinte pergunta: 
Como isolar aquelas duas aplicações de modo que possam utilizar uma biblioteca compartilhada que não possa ser utilizada por uma [...]]]></description>
			<content:encoded><![CDATA[<p>Tudo começou com uma discussão sobre o classloader do Java. A discussão surgiu porque existiam duas aplicações que queriam compartilhar dados de uma classe estática localizada numa biblioteca x. Nesse momento surgiu a seguinte pergunta: </p>
<p><strong>Como isolar aquelas duas aplicações de modo que possam utilizar uma biblioteca compartilhada que não possa ser utilizada por uma terceira aplicação?</strong></p>
<p>Para responder a pergunta era necessário entender o conceito de classloader e também como trabalham os classloaders do servidor envolvido, que nesse caso era o JBoss.</p>
<p>Caso alguem não entenda muito bem o que são os classloaders e como eles trabalham, pode ler esse excelente <a href="http://nullability.org/?p=95">post</a> e lapidar o aprendizado com esse <a href="http://www.kumpera.net/blog/index.php/2007/05/09/classloader-hell/">feedback</a> muito bom do Rodrigo Kumpera.</p>
<p>Vou dizer que menti faz um pouco. Na verdade não é necessário entender o conceito de classloader para poder isolar aplicações devido a que JBoss torna o processo muito simples e transparente, mas eu acho conveniente para ter uma idéia de como funciona o negócio, o que é realizado por trás.</p>
<p>Mas então, o que deve ser feito? Existem varias alternativas mas a mais simples é criar um arquivo .ear contendo os projetos desejados e alterar o arquivo ear-deployer.xml localizado na pasta deploy do servidor JBoss. No arquivo mencionado devera ser trocado o valor do atributo <em>Isolated</em> para true:</p>
<p><code class="prettyprint">&lt;attribute name=\&quot;Isolated\&quot;&gt;true&lt;/attribute&gt;</code></p>
<p>O JBoss utilizara um classloader para cada deploy ear, pelo que as aplicações dentro dele ficaram num contexto isolado.</p>
<p>Agora, o que acontece se eu <strong>tenho somente uma aplicação e quero que ela fique totalmente isolada</strong>, preciso por ela num ear? Não, nesse caso não, seria meio que uma gambiarra. No caso que queiramos um classloader para uma única aplicação e não um grupo delas o que devemos fazer é colocar as bibliotecas que desejamos sejam carregadas pelo classloader na pasta WEB-INF/lib da aplicação. Não tenho certeza se isto é uma especificação mas o JBoss Web e o Tomcat entendem que o que esta dentro da pasta WEB-INF é somente visível para a própria aplicação pelo que não teria sentido se as bibliotecas dentro da pasta lib fossem carregadas por um classloader de alto nível.</p>
<p>Finalmente, eu<strong> quero que minhas bibliotecas sejam visíveis para tudo mundo</strong>, onde devo colocar elas? Nesse caso a resposta é mais fácil, nesse caso basta colocar a biblioteca na pasta lib do servidor ou dentro de uma pasta (lib de preferencia) dentro do projeto ear, somente não esquecer de declarar ela no arquivo application.xml:</p>
<p><code class="prettyprint">&lt;library-directory&gt;lib&lt;/library-directory&gt;</code></p>
<p>Isso e tudo, não se esqueçam que agora a pagina conta com um formulário de contato e toda duvida sera respondida com plácer =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/06/24/classloaders-e-aplicacoes-isoladas-no-jboss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Replicação de sessões HTTP no JBoss</title>
		<link>http://www.mouseoverstudio.com/blog/2008/06/20/replicacao-de-sessoes-http-no-jboss/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/06/20/replicacao-de-sessoes-http-no-jboss/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 19:13:46 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=89</guid>
		<description><![CDATA[Quando trabalhamos com aplicações web é muito comum salvar dados nas sessões dos usuários. No caso que estejamos trabalhando também com cluster, a melhor opção na maioria das vezes é replicar as sessões em todas as instancias do nosso servidor de modo que os usuários possam se conetar em qualquer nodo do cluster e a [...]]]></description>
			<content:encoded><![CDATA[<p>Quando trabalhamos com aplicações web é muito comum salvar dados nas sessões dos usuários. No caso que estejamos trabalhando também com cluster, a melhor opção na maioria das vezes é replicar as sessões em todas as instancias do nosso servidor de modo que os usuários possam se conetar em qualquer nodo do cluster e a sessão este disponível para eles em tudo momento.</p>
<p>Talvez tenham se perguntado: qual é a outro opção? Bom, a outra opção e utilizar “sticky sessions”, de modo que o balanceador sempre se conete com o mesmo membro do cluster, o qual possui a sessão do usuário. O ruim das sticky sessions é que ao cair algum nodo do cluster, os dados que se encontravam neles serão perdidos dado que não foram replicados.</p>
<p>Nesse artigo vamos configurar nossa aplicação web para que o JBoss 4.2.2.GA replique a sessão HTTP ao longo de todos os nodos do cluster cade vez que ela sofrer alguma alteração. A configuração é realizada no JBoss Web que utiliza o Tomcat, pelo que a configuração num Tomcat independente não deveria fugir muito do que ira ser mostrado aqui.</p>
<p><strong>Mãos na obra</strong></p>
<p>A configuração é bem simples, são necessários somente dois passos.</p>
<p>O primeiro passo é indicar que nossa aplicação é distribuída. Possivelmente esta configuração já foi feita devido a que estamos supondo que a aplicação já foi configurada para rodar num cluster. De qualquer modo, a configuração é realizada no arquivo web.xml da aplicação; devemos inserir o seguinte trecho dentro do nodo web-app:</p>
<p><code class="prettyprint">&lt;distributable /&gt;</code></p>
<p>O segundo e último passo é configurar um arquivo chamado jboss-web.xml, que sera localizado na pasta WEB-INF. Esse arquivo indicara ao JBoss como e quando replicar a sessão da aplicação:</p>
<p><code class="prettyprint">&lt;jboss-web&gt;<br />
    &lt;replication-config&gt;<br />
        &lt;replication-trigger&gt;SET&lt;/replication-trigger&gt;<br />
        &lt;replication-granularity&gt;SESSION&lt;/replication-granularity&gt;<br />
    &lt;/replication-config&gt;<br />
&lt;/jboss-web&gt;</code></p>
<p>O nodo replication-trigger indica quando o JBoss deve replicar os dados. Nesse caso estamos indicando que os dados devem ser replicados cada vez que seja chamado o método setAttribute da sessão (HttpSession). </p>
<p>O nodo replication-granularity indica o que devera ser replicado. Se a sessão não for muito grande, SESSION é uma boa opção porque sera replicada a sessão inteira. Quando a sessão é grande demais, a opção ATTRIBUTE resulta num ganho de performance devido a que somente serão replicados os atributos da sessão que sofreram alteração. </p>
<p><strong>Testando a configuração</strong></p>
<p>Fiz uma aplicação web bem simples para poder testar e comprovar que o JBoss esta replicando os dados da sessão dela. A aplicação guarda na sessão o número de acesos e printa o valor na tela.  Cada vez que acessarmos a aplicação, deveria aparecer quantas vezes realizamos a operação, independente de qual nodo do cluster o balanceador escolher para servir.</p>
<p>A aplicação pode ser descarregada de <a href="http://code.google.com/p/hsr-test/">aqui</a> .</p>
<p>Para finalizar, agora o blog possui uma pagina de contato. Qualquer duvida ou pergunta que não quiserem colocar nos comentários pode ser enviada mediante o formulário e eu responderei assim chegar na minha caixa de email.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/06/20/replicacao-de-sessoes-http-no-jboss/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
