<?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>Lucas Teixeira &#187; jar</title>
	<atom:link href="http://lucastex.com.br/tag/jar/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucastex.com.br</link>
	<description>@lucastex</description>
	<lastBuildDate>Fri, 07 Jan 2011 12:44:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Como fazer o deploy de uma app grails no JBoss</title>
		<link>http://lucastex.com.br/2010/02/14/como-fazer-o-deploy-de-uma-app-grails-no-jboss/</link>
		<comments>http://lucastex.com.br/2010/02/14/como-fazer-o-deploy-de-uma-app-grails-no-jboss/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 12:51:56 +0000</pubDate>
		<dc:creator>Lucas Teixeira</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[erro]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jar]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[validator]]></category>

		<guid isPermaLink="false">http://lucastex.com.br/?p=289</guid>
		<description><![CDATA[

Neste fim de semana quis fazer alguns testes pela primeira vez com uma aplicação grails no jboss.
Já tinha acompanhado na grails-users que existem alguns problemas para efetuar o deploy, e para cada um deles, uma sequência de passos obscuros para fazer o deploy acontecer com sucesso. Minha versão de grails neste procedimento é a 1.2.1 [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Flucastex.com.br%252F2010%252F02%252F14%252Fcomo-fazer-o-deploy-de-uma-app-grails-no-jboss%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdCFz4H%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Como%20fazer%20o%20deploy%20de%20uma%20app%20grails%20no%20JBoss%20%22%20%7D);"></div>
<p>Neste fim de semana quis fazer alguns testes pela primeira vez com uma aplicação grails no jboss.</p>
<p>Já tinha acompanhado na <strong>grails-users</strong> que existem alguns problemas para efetuar o deploy, e para cada um deles, uma sequência de passos obscuros para fazer o deploy acontecer com sucesso. Minha versão de grails neste procedimento é a 1.2.1 e do JBoss é a 5.1.0.GA</p>
<p>Efetivamente, o que acontece é que jboss traz junto com suas common libs vários jars que são empacotados juntamente com a sua aplicação quando você utiliza o comando <strong>grails war</strong>.</p>
<p>Existem alguns workarounds na internet que te mostram como modificar o <strong>BuildConfig.groovy</strong> (arquivo que define propriedades do empacotamento de sua app) para que após montar a estrutura de arquivos que irão ser empacotados, remova estes arquivos (principalmente o log4j onde o problema é mais aparente) do chamado <strong>stagingDir</strong> e os deixe de fora do pacote final.</p>
<p>Particularmente, achei a solução <a href="http://www.comerciaisnet.com.br/clientes/difermig_representacoes/minasul/marreta.jpg" target="_blank">um tanto quanto diferente</a> e acabei achando no <a href="http://www.grails.org/FAQ" target="_blank">FAQ do Grails</a> e depois com mais detalhes <a href="http://community.jboss.org/wiki/ClassLoadingConfiguration" target="_blank">nesta página</a> uma solução menos intrusiva ao pacote, que é definir a prioridade de carregamento dos jars da aplicação.</p>
<p>Bom, para isso, precisamos criar um arquivo <strong>jboss-web.xml</strong> dentro do diretório <strong>WEB-INF</strong> de nossa aplicação que irá mostrar ao jboss que queremos &#8220;blindar&#8221; nossa aplicação para utilizar os jars que estão dentro de seu lib, e que estes por sua vez não deverão ser sobrescritos pelos jars do classpath do servidor. O conteúdo do arquivo segue abaixo:</p>
<pre class="brush: xml; title: ;">&lt;jboss-web&gt;
   &lt;context-root&gt;/projeto&lt;/context-root&gt;
   &lt;class-loading java2ClassLoadingCompliance=&quot;false&quot;&gt;
      &lt;loader-repository&gt;
         projeto:archive=projeto.war
         &lt;loader-repository-config&gt;java2ParentDelegation=false&lt;/loader-repository-config&gt;
      &lt;/loader-repository&gt;
   &lt;/class-loading&gt;
&lt;/jboss-web&gt;</pre>
<p>Na tag <strong>context-root</strong> estamos apenas aproveitando que a aplicação terá seu arquivo de configuração específico para o jboss e definindo o contexto em que ela será publicada. Nas tags seguintes pedimos para o jboss criar o nosso classloader isolado, com o nome &#8220;projeto:archive=projeto.war&#8221;. Com este nome (que deve ser único, por isto leva em consideração o nome do projeto), garantimos que as classes pedidas pelo nosso projeto serão procuradas ali, e caso não encontradas, nos classpaths seguintes (common/lib, depois no tomcat).</p>
<p>Basicamente isto seria suficiente para conseguir que o projeto rodasse sem problemas. Porém no meu cenário de versões (grails 1.2.1 e jboss-5.1.0.GA) existe outro ponto de conflito. O Hibernate Validator que está junto ao jboss também difere em versão e gera conflito com o grails. Neste caso a solução é <a href="http://www.comerciaisnet.com.br/clientes/difermig_representacoes/minasul/marreta.jpg" target="_blank">ainda mais interessante</a> e simples que a anterior.</p>
<p>Para resolver o problema no deploy que indica claramente problema de versão no Hibernate Validator, basta que você faça o download da última versão deste jar (no meu caso, 4.0.2-GA) nesta url: <a href="https://www.hibernate.org/30.html" target="_blank">https://www.hibernate.org/30.html</a>. Depois disto, resta apenas colocar o jar do hibernate validator dentro da pasta <strong>&lt;jboss_home&gt;/common/lib</strong>.</p>
<p>Pronto, a aplicação está rodando e funcional dentro do jboss!</p>
<pre class="brush: plain; title: ;">10:36:32,815 INFO  [[/projeto]] Initializing Spring root WebApplicationContext
10:36:41,155 INFO  [[/projeto]] Initializing Spring FrameworkServlet 'grails'</pre>
<p>PS: Vale lembrar que o arquivo <strong>jboss-web.xml</strong> é padrão para arquivos <strong>war</strong>, se você quiser configurar a ordem do classpath para aplicações <strong>ear</strong> ou<strong> sar</strong>, consulte o link acima para entender as diferenças.</p>

]]></content:encoded>
			<wfw:commentRss>http://lucastex.com.br/2010/02/14/como-fazer-o-deploy-de-uma-app-grails-no-jboss/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

