<?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; seam</title>
	<atom:link href="http://rafaelliu.net/tag/seam/feed/" rel="self" type="application/rss+xml" />
	<link>http://rafaelliu.net</link>
	<description>Café, pinguins e outras coisas</description>
	<lastBuildDate>Wed, 28 Mar 2012 21:54:28 +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>Two components with the same name and precedence</title>
		<link>http://rafaelliu.net/2009/01/08/two-components-with-the-same-name-and-precedence/</link>
		<comments>http://rafaelliu.net/2009/01/08/two-components-with-the-same-name-and-precedence/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 12:54:03 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[seam]]></category>

		<guid isPermaLink="false">http://rafaelliu.net/?p=52</guid>
		<description><![CDATA[Há um tempo atrás me pediram ajuda com a seguinte exceção: java.lang.IllegalStateException: Two components with the same name and precedence - component name: authenticator, component classes: com.app.security.Authenticator, com.app.security.Authenticator at org.jboss.seam.init.Initialization.addComponentDescriptor(Initialization.java:596) at org.jboss.seam.init.Initialization.installScannedComponentAndRoles(Initialization.java:949) at org.jboss.seam.init.Initialization.scanForComponents(Initialization.java:889) at org.jboss.seam.init.Initialization.init(Initialization.java:701) at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:35) Essa exceção pode ocorrer, claro, quando existirem duas classes com o mesmo @Name, ou pode ocorrer num [...]]]></description>
			<content:encoded><![CDATA[<p>Há um tempo atrás me pediram ajuda com a seguinte exceção:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.IllegalStateException: Two components with the same name and precedence - component name: authenticator, component classes: com.app.security.Authenticator, com.app.security.Authenticator
at org.jboss.seam.init.Initialization.addComponentDescriptor(Initialization.java:596)
at org.jboss.seam.init.Initialization.installScannedComponentAndRoles(Initialization.java:949)
at org.jboss.seam.init.Initialization.scanForComponents(Initialization.java:889)
at org.jboss.seam.init.Initialization.init(Initialization.java:701)
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:35)</pre></div></div>

<p>Essa exceção pode ocorrer, claro, quando existirem duas classes com o mesmo @Name, ou pode ocorrer num caso mais sutil. O Seam possui um modo de debug em que ele faz <em>hot deploy</em> de páginas Facelets e pages.xml&#8217;s. Projetos criados pelo seam-gen já vêm com esse modo habilitado:</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;core:init</span> <span style="color: #000066;">debug</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Nesse modo o Seam usa um classloader próprio ao invés do classloader do container para carregar as classes. Ele faz isso criando um pasta WEB-INF/dev de onde carrega as classes. Isso não vale para EJB3 (então sem <em>hot deploy</em> de <em>entity beans</em>..) e as classes não serão visíveis para o container ou para outros projetos Seam (já que o Seam usa uma instância própria de classloader).</p>
<p>O problema é que de algum jeito o Seam (na verdade deve ser o JBoss Tools) se confunde em algumas situações e tenta fazer um novo <em>deploy</em> do componente, ao invés de fazer um <em>redeploy</em>. Com isso há um conflito de @Name. Não consegui identificar em que casos exatamente isso ocorre. Fazer um Clean, Build, etc não adianta porque a pasta dev não é mexida.</p>
<p>Bom, para resumir, basta apagar a pasta WEB-INF/dev <img src='http://rafaelliu.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2009/01/08/two-components-with-the-same-name-and-precedence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estrutura de um projeto Seam</title>
		<link>http://rafaelliu.net/2008/08/30/estrutura-de-um-projeto-seam/</link>
		<comments>http://rafaelliu.net/2008/08/30/estrutura-de-um-projeto-seam/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 21:15:50 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://rafaelliu.wordpress.com/?p=59</guid>
		<description><![CDATA[O seam-gen é um gerador de scaffolding muito útil para quem programa em Seam. O seam-gen em si é uma ferramenta CLI, mas o JBoss Tools nos dá uma GUI para facilitar nossa vida. Bom, então o primeiro passo é instalar o plugin do JBoss Tools. É só baixar do site deles e descompactar no [...]]]></description>
			<content:encoded><![CDATA[<p>O seam-gen é um gerador de <em>scaffolding</em> muito útil para quem programa em Seam. O seam-gen em si é uma ferramenta CLI, mas o JBoss Tools nos dá uma GUI para facilitar nossa vida. Bom, então o primeiro passo é instalar o plugin do JBoss Tools. É só baixar do site deles e descompactar no diretório do Eclipse, nada de mais.</p>
<p>Você notará que serão adicionadas várias perspectivas, entre elas, a Seam. Vamos selecionar essa perspectiva e criar um novo Seam Project. Com isso já temos um projeto funcional com segurança, apresentação de erros, e conexão com banco de dados. Também é criado um projeto &lt;projeto&gt;-Test para testes. Vamos entender um pouco do que nos foi gerado.</p>
<ol>
<li>classe usada pelo Seam para autenticação<a href="/wp-content/uploads/2009/04/seam-gen-structure.png"><img class="alignright size-medium wp-image-141" title="seam-gen-structure" src="http://rafaelliu.net/wp-content/uploads/2009/04/seam-gen-structure-97x300.png" alt="seam-gen-structure" width="97" height="300" /></a></li>
<li>arquivo chave. Indica ao Seam que ele deve procurar nesse diretório por componentes</li>
<li>persistence.xml do JPA</li>
<li>arquivo com algumas propriedados a serem substituidas pelo Ant no components.xml</li>
<li>import.sql do Hibernate</li>
<li>mensagens para internacionalização</li>
<li>arquivo Drools com regras de autorização</li>
<li>datasource gerado para o JBoss</li>
<li>arquivo de configuração do Seam (componentes, integração)</li>
<li>arquivo de configuração WAR do JBoss</li>
<li>arquivo de configuração do Seam (regras de fluxo, segurança, controle de conversação)</li>
<li>similar ao arquivo pages.xml, mas específico para o login.xhtml</li>
<li>arquivo de configuração do plugin Hibernate Console</li>
</ol>
<p>Vamos ver por alto algumas configurações interessantes. Na parte de segurança temos no components.xml:</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;event</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;org.jboss.seam.security.notLoggedIn&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">execute</span>=<span style="color: #ff0000;">&quot;#{redirect.captureCurrentView}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/event<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;event</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;org.jboss.seam.security.loginSuccessful&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">execute</span>=<span style="color: #ff0000;">&quot;#{redirect.returnToCapturedView}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/event<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>O Seam possui o conceito de eventos. Eventos são mensagens que podem ser capturadas ou lançadas, no estilo <em>broadcast</em>. O Seam em si lança vários eventos e podemos capturar esses eventos através de XML, como no exemplo acima. O trecho acima está invocando métodos do componente <em>built-in </em><code>#{redirect}</code> quando eventos de segurança forem lançados. Ele especifica que a <em>view id </em>JSF deve ser salva quando o usuário não-logado tentar acessar uma página restrita e que essa view id deve ser restaurada uma vez que ele se autentique.<br />
Um outro trecho especifica que componente é responsável pela autenticaçã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;security:identity</span> <span style="color: #000066;">authenticate-method</span>=<span style="color: #ff0000;">&quot;#{authenticator.authenticate}&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">security-rules</span>=<span style="color: #ff0000;">&quot;#{securityRules}&quot;</span></span>
<span style="color: #009900;"><span style="color: #000066;">remember-me</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>E no pages.xml dizemos que página deve ser utilizada para login:</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;exception</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.jboss.seam.security.NotLoggedInException&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;redirect</span> <span style="color: #000066;">view-id</span>=<span style="color: #ff0000;">&quot;/login.xhtml&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Please log in first<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/message<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/redirect<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/exception<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Aqui temos um tratamento de exceção bem parecido com o de servlets que definimos no web.xml. O usuário será redirecionado para a página login.xhtml e uma mensagem JSF será adicionada.<br />
Se olharmos no login.pages.xml vemos ainda:</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;navigation</span> <span style="color: #000066;">from-action</span>=<span style="color: #ff0000;">&quot;#{identity.login}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rule</span> <span style="color: #000066;">if</span>=<span style="color: #ff0000;">&quot;#{identity.loggedIn}&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;redirect</span> <span style="color: #000066;">view-id</span>=<span style="color: #ff0000;">&quot;/home.xhtml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/navigation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>O que nos lembra bastante as <em>navigation rules</em> JSF. De fato parecem muito, mas as extendem em funcionalidade, podendo não só enviar o usuário para outra página como também lançar um evento, executar um método para avaliar qual será a próxima página, e algumas coisas mais avançadas.</p>
<p>O objetivo desse post é apenas nos familiarizar mais com o Seam e dar uma visão sobre o <em>scaffold</em> que nos foi gerado de base e que iremos usar para desenvolver nossa aplicação. Ainda vamos falar com mais detalhes de eventos, componentes e configurações.</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2008/08/30/estrutura-de-um-projeto-seam/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Parte I: O que é Seam?</title>
		<link>http://rafaelliu.net/2008/08/12/parte-i-o-que-e-seam/</link>
		<comments>http://rafaelliu.net/2008/08/12/parte-i-o-que-e-seam/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 11:08:52 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://rafaelliu.wordpress.com/?p=53</guid>
		<description><![CDATA[Como recebo vários hints no post JBoss Seam no Tomcat, resolvi escrever mais sobre Seam. Esse post abre uma série de tutoriais de Seam. Seam é um framework muito amplo. Pegue alguns dos frameworks mais representativos, ponha algumas práticas de desenvolvimento e misture: assim que vejo o Seam. O Seam em sua plenitude usa os [...]]]></description>
			<content:encoded><![CDATA[<p>Como recebo vários <em>hints</em> no <em>post</em> <a title="JBoss Seam no Tomcat" href="http://rafaelliu.wordpress.com/2008/07/28/jboss-seam-no-tomcat/" target="_blank">JBoss Seam no Tomcat</a>, resolvi escrever mais sobre Seam. Esse <em>post</em> abre uma série de tutoriais de Seam.</p>
<p>Seam é um <em>framework</em> <strong>muito</strong> amplo. Pegue alguns dos <em>frameworks</em> mais representativos, ponha algumas práticas de desenvolvimento e misture: assim que vejo o Seam. O Seam em sua plenitude usa os <em>frameworks:</em> EJB3, JSF, Facelets, Hibernate, Hibernate Validations, Richfaces, Ajax4JSF, jBPM, Drools (qualquer associação ao nome JBoss é mera coincidência). É muita coisa. Mas ele não só usa esses <em>frameworks,</em> ele também provê uma integração entre eles, disponibiliza componentes <em>built-in</em> (à la Spring, cujo qual inclusive pode-se integrar) e introduz algumas melhorias sobre eles. Além disso ele apregoa algumas práticas como desenvolvimento orientado a componentes e desencoraja outras, como desenvolvimento em camadas.</p>
<p>Vou deixar de lado o que cada <em>framework</em> faz, pois não entra no mérito do que o Seam tem a oferecer. Dando um enfoque bem prático, o Seam:</p>
<ul>
<li>Reduz plumbing code do JSF. Quem já programou com JSF sabe do que estou falando (Não? FacesContext? faces-config.xml?).</li>
<li>Resolve o infame problema do &#8220;<em>back button</em>&#8221; em JSF. E <em>reload,</em> e <em>bookmarking,</em> e &#8230;</li>
<li>Facilita o uso de JPA. Tem um código cheio de merges()? Usa uma <em>long-running transaction</em> num <em>page flow</em>?</li>
<li>Possibilita <em>page flows</em> usando o jBPM.</li>
<li>Permite aplicações <em>multi-windows</em>. E finalmente poder clicar &#8220;Abrir em nova janela&#8221; nos links!</li>
<li>Permite o uso de <em>workspaces.</em> Como no Linux.</li>
<li>Faz uso extensivo de anotações. Mas também permiti o uso de XML.</li>
<li>Possui uma penca de tags JSF. Uns muito úteis, uns bem exóticos&#8230;</li>
<li>E muito mais!</li>
</ul>
<p>Dada essa introdução, vou detalhar nos próximos posts cada um desses itens dizendo como realizamos eles com o uso so Seam. Esse blog não é sobre Seam, então esperem outros posts no meio. Até mais!</p>
<p>referência: http://docs.jboss.com/seam/latest/reference/en-US/html/Book-Preface.html</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2008/08/12/parte-i-o-que-e-seam/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JBoss Seam no Tomcat</title>
		<link>http://rafaelliu.net/2008/07/28/jboss-seam-no-tomcat/</link>
		<comments>http://rafaelliu.net/2008/07/28/jboss-seam-no-tomcat/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 12:54:19 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://rafaelliu.wordpress.com/?p=33</guid>
		<description><![CDATA[EDIT: esse post é para o Seam 2. Utilizar o Weld (com Seam 3) no Tomcat ficou bem mais fácil, veja um post mais recente sobre o assunto. Quem está começando a aprender JBoss Seam pode ter a impressão que ele roda apenas no JBoss AS, o que não é verdade. Devido à maioria da [...]]]></description>
			<content:encoded><![CDATA[<p><strong>EDIT: </strong>esse post é para o Seam 2. Utilizar o Weld (com Seam 3) no Tomcat ficou bem mais fácil, veja um <a href="http://rafaelliu.net/?p=428" target="_self">post mais recente sobre o assunto</a>.</p>
<p>Quem está começando a aprender <a title="Seam Framework - JBoss Seam" href="http://seamframework.org/" target="_blank">JBoss Seam</a> pode ter a impressão que ele roda apenas no JBoss AS, o que não é verdade. Devido à maioria da documentação ser provida pelo pessoal do JBoss é claro que tudo é feito tendo-se em mente o AS deles. Mesmo quem sabe ser possível rodar sobre outros ASs, muitas vezes não tem idéia de como fazê-lo.</p>
<p>O Seam em si não é um serviço no JBoss, mas sim um <em>framework</em>, o que possibilita sua utilização em vários ASs. Caso não seja usada nenhuma facilidade EE (ou mesmo algumas que o Seam cobre), é possível fazer o <em>deploy</em> de uma aplicação Seam até mesmo sobre um simples <em>container web</em> como o Tomcat e esse <em>post</em> sobre esse caso.</p>
<p>Sendo o Seam uma biblioteca, dificuldades em fazer deploy em <em>containers</em> se limitam a conflitos e dependências. Mas quem já usou Seam sabe da grande mão na roda que é o seam-gen para geração de <em>scaffold </em>(inclusa no <a title="JBoss Tools Project" href="http://www.jboss.org/tools/" target="_blank">JBoss Tools</a>). O problema é que o <em>scaffold </em>gerado é feito para o JBoss.</p>
<p>Então nossos esforços serão basicamente mudar configurações do JBoss para o Tomcat e passar para o Seam o tratamento de <em>features</em> enterprise. As instruções são para o seguinte ambiente:</p>
<ul>
<li>Eclipse 3.3.2 com JBoss Tools 2.1.1.GA</li>
<li>JBoss Seam 2.0.3.CR1</li>
<li>Apache Tomcat 6.0.16</li>
</ul>
<p>Vamos lá:</p>
<ol>
<li>Já que estamos rodando num<em> container web</em> não temos o controle transacional provido pelo AS, então devemos passá-lo para o Seam.</li>
<p>No persistence.xml alteramos o <code>transaction-type</code> da <code>persistence-unit</code> para <code>RESOURCE_LOCAL</code> e removemos a property <code>hibernate.transaction.manager_lookup_class</code>. Vamos mudar também a linha do data source, para utilizar ENC. Ela deve refletir:</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;non-jta-data-source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>java:comp/env/jdbc/meuDatasource<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/non-jta-data-source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Note que aqui perdemos a possibilidade de transações distribuídas.</p>
<li>Vamos definir agora no components.xml que o Seam será responsável pelo controle transcional. Adicionamos a seguinte linha:</li>

<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;transaction:entity-transaction</span> <span style="color: #000066;">entity-manager</span>=<span style="color: #ff0000;">&quot;#{entityManager}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Onde <code>#{entityManager}</code> é o nome da <code>managed-persistence-context</code>, que é o persistence context que será usado pelo Seam nas conversações. A definição do <em>namespace</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">xmlns:transaction=&quot;http://jboss.com/products/seam/transaction&quot;
xsi:schemaLocation=&quot;http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.0.xsd&quot;</pre></div></div>

<li>Para finalizarmos com essa parte de persistência falta apenas criar o próprio datasource. Quem usa o Sysdeo deve ir nas propriedades do Tomcat Project fazer isso, mas quem usa o WTP (usem!) não tem essa opção. Ao invés disso podemos usar o esquema de deploy de contexto do Tomcat. Crie um arquivo context.xml em seu WEB-INF/META-INF contendo seu data source. No meu caso:</li>

<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;context<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resource</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;jdbc/meuDatasource&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;javax.sql.DataSource&quot;</span> <span style="color: #000066;">driverClassName</span>=<span style="color: #ff0000;">&quot;org.hsqldb.jdbcDriver&quot;</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;jdbc:hsqldb:meuBD&quot;</span> <span style="color: #000066;">username</span>=<span style="color: #ff0000;">&quot;sa&quot;</span> <span style="color: #000066;">password</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">auth</span>=<span style="color: #ff0000;">&quot;Container&quot;</span> <span style="color: #000066;">maxActive</span>=<span style="color: #ff0000;">&quot;20&quot;</span> <span style="color: #000066;">maxIdle</span>=<span style="color: #ff0000;">&quot;5&quot;</span> <span style="color: #000066;">maxWait</span>=<span style="color: #ff0000;">&quot;10000&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/context<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<li>Por último temos que adicionar as seguintes bibliotecas que não vêm no Tomcat:</li>
<p style="padding-left: 30px;">persistence-api.jar<br />
hibernate.jar<br />
hibernate-entitymanager.jar<br />
hibernate-validator.jar<br />
hibernate-annotations.jar<br />
dom4j.jar<br />
jta.jar<br />
hibernate-commons-annotations.jar<br />
cglib-nodep.jar<br />
antlr.jar<br />
jboss-common-core.jar</p>
<p style="padding-left: 30px;">jsf-api.jar<br />
jsf-impl.jar</p>
<p style="padding-left: 30px;">commons-logging-1.1.1.jar<br />
commons-collections-3.2.1.jar<br />
javassist.jar</p>
<p>A maioria delas pode ser achada na pasta lib do Seam. No meu caso criei uma User Libraries e as marquei como dependência para a Web Library, assim organizo meus jars e torno mais fácil a adição desses frameworks em projetos futuros.</ol>
<p>Assumi que se sabe somo criar um projeto Seam. Deixei a idéia de um tutorial básico de lado, quero ainda falar do uso do JBoss Tools para geração de código e um pouco da integração com o Drools e com o jBPM (muito interessante!!).</p>
<p>Dêem o feedback sobre o que querem ler! Que se houver muita manifestação de interesse faço um <em>post</em>, até se for o caso, sobre o gorado tutorial ou o passo-a-passo para a criação de um projeto Seam.</p>
<p>referência: <a href="http://edemmorny.wordpress.com/2008/02/02/setup-of-seam-20-applications-for-tomcat-60/" target="_blank">Edem Morny’s Tech Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2008/07/28/jboss-seam-no-tomcat/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Treinamento Seam</title>
		<link>http://rafaelliu.net/2008/06/10/treinamento-seam/</link>
		<comments>http://rafaelliu.net/2008/06/10/treinamento-seam/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 13:52:46 +0000</pubDate>
		<dc:creator>rafaelliu</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[seam]]></category>
		<category><![CDATA[treinamento]]></category>
		<category><![CDATA[web beans]]></category>

		<guid isPermaLink="false">http://rafaelliu.wordpress.com/?p=17</guid>
		<description><![CDATA[Começei essa semana no treinamento JB170 JBoss: SEAM Essentials, da Red Hat. Ele está sendo ministrado pelo João Paulo na Mirante. Nunca havia mexido com Seam embora já tivesse lido bastante sobre em artigos. É uma palavrinha que vem aparecendo cada vez mais no dia-a-dia de quem mexe com tecnologia e muitos livros vêm sendo [...]]]></description>
			<content:encoded><![CDATA[<p>Começei essa semana no treinamento <em>JB170 JBoss: SEAM Essentials</em>, da Red Hat. Ele está sendo ministrado pelo João Paulo na Mirante. Nunca havia mexido com Seam embora já tivesse lido bastante sobre em artigos. É uma palavrinha que vem aparecendo cada vez mais no dia-a-dia de quem mexe com tecnologia e muitos livros vêm sendo lançados.</p>
<p>Tive a primeira aula ontem e me pareceu ter idéias muito interessantes. Os não tão atuais esforços de padronizar a idéia do Seam sobre a <a title="Web Beans" href="http://jcp.org/en/jsr/detail?id=299" target="_blank">JSR 299</a> (Web Beans) deverão dar um maior impulso e maior adesão ao Seam. Vejo vários indícios de um futuro próspero para esse framework.</p>
<p>Acabado o curso pretendo dar um overview sobre o Seam e quem sabe fazer um tutorial ao longo de vários <em>posts</em>. Aguardem!</p>
]]></content:encoded>
			<wfw:commentRss>http://rafaelliu.net/2008/06/10/treinamento-seam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

