Tutorial: Seam 3 + JBoss AS 7 + Maven 3 + MySQL 5.5 (NetBeans 7.1.2 ou Eclipse Indigo)

Fiz um guia pra mim mesmo com o passo a passo pra criar um projeto web baseado em Seam 3 e JBoss AS 7 e pensei em compartilhar aqui, pois muita gente apanha (como apanhei) pra fazer esse mix funcionar. Por enquanto esse guia ensina a montar um projeto a partir de um archetype Maven que exibe uma página simples e foi montado pegando “retalhos” pela internet, sendo que alguns que guardei a fonte estão citados no texto. Mais pra frente complementarei o tutorial ensinando a usar o framework para persistência, JSF e beans gerenciados. Também pretendo “formalizar” o tutorial e enviar pro GUJ no formato padrão.

Espero que seja útil. [size=18]Por favor, se este tutorial te ajudar, deixe um comentário. [/size] Se não funcionar, procure no Google usando a descrição da exceção ou o código de erro. 99,9% dos problemas que tive até hoje resolvi buscando por aí (tanto que acho que meu cadastro no GUJ é desse ano e não tenho outro em nenhum fórum). Se estiver arrancando os cabelos, descreva seu problema e coloque suas configurações e ajudarei da melhor maneira possível.

  • Tutorial desenvolvido usando Windows 7 64-bits - alguns passos podem precisar ser adaptados para outras versões do S.O.
  • Todas as instalações são feitas usando as configurações padrões, exceto quando ressalva em contrário

Tecnologias usadas:

  • Netbeans 7 + Seam 3 + JBoss AS 7 + Maven 3 + MySQL 5.5

[size=18]PREPARAÇÃO[/size]

Para este tutorial será utilizada a pasta c:\devel como raiz

  • Crie pasta “apps” e coloque todos os downloads nela
  • Crie a pasta “projetos”, onde serão colocados os arquivos de projeto

[size=18]DOWNLOADS[/size]


[size=18]INSTALAÇÃO DOS APLICATIVOS[/size]

  • Instalar Java EE

  • Instalar .NET (Executar como administrador)

  • Instalar Visual C++ ( OBS.: Mesmo que seu sistema seja 64-bits (x64), deve-se instalar a versão 32-bits (x86))

  • Instalar MySQL 5.5 (Perfil Developer)

  • Instalar NetBeans 7.1.2 (Sem Glassfish - já instalado pelo Java SDK)

  • Descompacte o arquivo “apache-maven-3.0.4-bin.zip” na pasta “Apps”

  • Descompacte o arquivo “jboss-as-7.1.1.Final.zip” na pasta “Apps”

  • Editar variáveis de ambiente de usuário
    – Iniciar -> Painel de controle -> Sistema e segurança -> Sistema -> Configurações avançadas do sistema -> Botão Variáveis de ambiente
    – Alternativamente: tecla WIN + Pause -> Configurações avançadas do sistema -> Botão Variáveis de ambiente
    – No quadro de cima, variáveis de usuário clique em “Novo” e adicione:

Nome da variável: JAVA_HOME
Valor da variável: C:\Program Files\Java\jdk1.7.0_04

Nome da variável: JBOSS_HOME
Valor da variável: C:\devel\apps\jboss-as-7.1.1.Final (SEM BARRA NO FINAL!)

Nome da variável: MAVEN_HOME
Valor da variável: C:\devel\apps\apache-maven-3.0.4

Nome da variável: Path
Valor da variável: %MAVEN_HOME%\bin;%JAVA_HOME%\bin

– Testar Maven digitando “mvn ?version” no cmd
– Testar Java digitando “java ?version” no cmd


[size=18]CONFIGURAÇÃO[/size]

MySQL

  • Abrir command line e digitar (alternativamente use o MySQL Workbench para criar as tabelas e sincronizar com o servidor):
    – create database dbtutorial;

– criar tabela “usuario”
CREATE TABLE IF NOT EXISTS dbtutorial.usuario ( idusuario INT NOT NULL AUTO_INCREMENT , nome VARCHAR(80) NULL , cidade VARCHAR(50) NULL , PRIMARY KEY (idusuario) )ENGINE = InnoDB;

– Criar dados para consulta
INSERT INTO dbtutorial.usuario (idusuario, nome, cidade) VALUES (1, ‘Jose’, ‘Sao Paulo’);
INSERT INTO dbtutorial.usuario (idusuario, nome, cidade) VALUES (2, ‘Maria’, ‘Belo Horizonte’);
INSERT INTO dbtutorial.usuario (idusuario, nome, cidade) VALUES (3, ‘Joao’, ‘Brasilia’);
INSERT INTO dbtutorial.usuario (idusuario, nome, cidade) VALUES (4, ‘Joana’, ‘Salvador’);

MAVEN

  • Configurar o Maven para usar o repositório JBoss
    – Executar “C:\devel\apps\apache-maven-3.0.4\bin\mvn.bat”
    – Copiar arquivo “C:\devel\apps\apache-maven-3.0.4\conf\settings.xml” para a pasta “C:\Users\USERPROFILE.m2”
    – Substituir todo o arquivo com o conteúdo abaixo:

[code]<?xml version="1.0" encoding="UTF-8"?>

org.jboss.maven.plugins jboss-public-repository jboss-public-repository-group JBoss Public Maven Repository Group https://repository.jboss.org/nexus/content/groups/public-jboss/ default true never true never jboss-public-repository-group JBoss Public Maven Repository Group https://repository.jboss.org/nexus/content/groups/public-jboss/ default true never true never jboss-public-repository [/code]
  • Criar um .bat na pasta C:\devel\projetos\ contendo o comando:
    mvn archetype:generate -DinteractiveMode=n -DarchetypeArtifactId=jboss-javaee6-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeVersion=1.0.1.CR2 -DarchetypeRepository=central -DgroupId=br.com.tutorial -DartifactId=tutorial

– -DgroupId= nome dos packages de código fonte do projeto
– -DartifactId= nome do projeto Maven
– -DarchetupeArtifactId= id do artefato a ser utilizado. Lista de artefatos disponíveis:
http://search.maven.org/#search|ga|1|g%3A"org.jboss.weld.archetypes"

  • Execute o .bat

[size=18]CONSTRUINDO O PROJETO NO NETBEANS[/size]

  • Abrir e verificar se é necessário atualizar: Ajuda -> verificar Atualizações

  • Instalar e reinicializar o NetBeans

  • Abrir o projeto criado pelo Maven: Arquivo -> Abrir projeto…

  • Navegar até a pasta “C:\devel\projetos” e abrir o projeto “tutorial” com o ícone do Maven

  • Botão direito -> Exibir e resolver problemas -> Construção principal (demora um pouco)

  • Botão direito -> Definir Configuração -> <config. padrão>

  • Botão direito -> Construir com dependências.


[size=18]CONSTRUINDO O PROJETO NO ECLIPSE[/size]

  • Abrir IDE

  • Marketplace - Maven Integration for Eclipse WTP

  • Reinicar Eclipse

  • Marketplace - Jboss Tools (Indigo)

  • Reinicar Eclipse

  • Window -> Preferences -> Server -> Runtime Enviroments -> Add…
    – JBoss Community -> JBoss 7.1 Runtime
    – Mudar Home Directory para C:\devel\apps\jboss-as-7.1.1.Final

  • Botão direito no projeto -> Properties -> Java Compiler -> Annotation Processing
    – Marcar “Enable annotation processing”, “Apply” e faça o build do projeto
    Fonte: http://docs.jboss.org/hibernate/stable/jpamodelgen...ence/en-US/html_single/#d0e319

  • File -> Import -> Digitar “Maven” -> Existing Maven Projects
    – Root Directory c:\devel\projeto\tutorial -> Finish

  • Botão direito no projeto -> Properties -> Targeted Runtime
    – Selecionar servidor criado, apply, ok

  • Run as

  • Run on server -> Jboss 7.1 Runtime

  • Marcar “Always use this server when running this project” -> Finish

OBS.: O Eclipse dá vários warnings mas infelizmente não tive tempo de mostrar como resolver todos. Procure na Internet, 99,9% dos problemas podem ser encontrados nela.
No futuro irei melhorar essa seção.


EXECUTANDO NO GLASSFISH

Neste momento você pode executar o projeto criado a partir do archetype, no Glassfish. Nos passos seguintes, os arquivos do projeto serão retirados ou modificados para funcionar com o JBoss e não funcionarão no Glassfish.


  • Para limpar todos os arquivos do projeto modelo criado pelo Maven
    – Apagar os arquivos:
    – Pacotes de código fonte: todos arquivo .java (manter packages)
    – Pacotes de testes/br.com.tutorial.test/MemberRegistrationTest.java

  • Editar “Outros códigos-fontes/META-INF/persistence.xml”

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="primary" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source> <properties/> </persistence-unit> </persistence>

  • Editar "Outros códigos-fontes/resources-jbossas/default-ds.xml
  • Todo arquivo *-ds.xml é lido pelo JBoss AS 7 como um arquivo de configuração de datasource

[code]<?xml version="1.0" encoding="UTF-8"?>

java:jboss/datasources/MySqlDS true jdbc:mysql://localhost:3306/dbtutorial com.mysql.jdbc.Driver root ***********SENHA DO BANCO DE DADOS************** 5 20 [/code]
  • Editar “Páginas Web/index.xhtml”

[code]<?xml version="1.0" encoding="UTF-8"?>
<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:f=“http://java.sun.com/jsf/core
xmlns:h=“http://java.sun.com/jsf/html
template="/WEB-INF/templates/default.xhtml">
<ui:define name=“content”>

Welcome to Java EE 6!

    <p>You have successfully deployed a Java EE 6 web application.</p>

</ui:define>

</ui:composition>
[/code]

  • Adicionar servidor Glassfish (pro-forma, para driblar o IDE)
    – Ferramentas -> Servidores -> Adicionar servidor -> GlassFish Server 3+
    – Localização da instalação “C:\Users\USERPROFILE\GlassFish_Server” (encontrado automaticamente)
    – Next -> Finalizar

  • Limpar e construir o projeto (Shift + F11)


[size=18]EXECUTANDO NO JBOSS[/size]

Configuração

  • Adicionar usuário com o script “C:\devel\apps\jboss-as-7.1.1.Final\bin\add-user.bat”
    – No primeiro e no segundo atributo, apenas aperte enter

  • Instalar driver MySQL como módulo
    – Em “C:\devel\apps\jboss-as-7.1.1.Final\modules\com” criar a pasta “mysql” e dentro dela criar a pasta “main”
    – Copiar “C:\Program Files\NetBeans 7.1.2\ide\modules\ext\mysql-connector-java-5.1.13-bin.jar” na pasta criada (main)
    – criar arquivo “module.xml” na mesma pasta com o conteúdo:

<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-5.1.13-bin.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> <module name="javax.servlet.api" optional="true"/> </dependencies> </module>

FONTES:
https://community.jboss.org/wiki/DataSourceConfigurationinAS7#Installing_the_JDBC_Driver
http://planet.jboss.org/post/jboss_as_7_1_0_final_thunder_released_java_ee_6_full_profile_certified

  • Editar “C:\devel\apps\jboss-as-7.1.1.Final\standalone\configuration\standalone.xml” para adicionar um DataSource MySQL

<datasources> <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://localhost:3306/dbtutorial</connection-url> <driver>com.mysql</driver> <security> <user-name>root</user-name> <password>***********SENHA DO BANCO DE DADOS**************</password> </security> </datasource> <drivers> <driver name="com.mysql" module="com.mysql"> <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> </driver> </drivers> </datasources>

FONTE:
http://docs.jboss.org/ironjacamar/userguide/1.0/en-US/html/deployment.html#deployingds_descriptor


[size=18]FAZENDO O DEPLOY[/size]

Como ainda não encontrei uma maneira de fazer o deploy pelo “Executar” do NetBeans, uso um arquivo .bat que copia o novo WAR para a pasta de deploy e cria um arquivo “tutorial.war.dodeploy” - um arquivo vazio que sinaliza ao JBoss AS que há necessidade de se fazer o deploy do projeto.

  • Iniciar container “C:\devel\apps\jboss-as-7.1.1.Final\bin\standalone.bat”

  • Console: http://localhost:9990/ (logar com usuario criado anteriormente)

  • Página: http://localhost:8080/tutorial/

  • Criar um arquivo “redeploy.bat” na pasta “C:\devel\apps\jboss-as-7.1.1.Final\standalone\deployments” com o conteúdo abaixo:
    xcopy /U /Y C:\devel\projeto\tutorial\target\tutorial.war C:\devel\apps\jboss-as-7.1.1.Final\standalone\deployments
    echo>> tutorial.war.dodeploy

  • Executar o “redeploy.bat” e verificar se a aplicação está rodando em http://localhost:8080/tutorial/

OBS.: Ao fazer o redeploy várias exceções são lançadas no console do JBoss AS, relacionadas ao Logger. Como ela não influencia no funcionamento desse projeto básico, não procurei como corrigir.

Nota: Alterei o título pois o foco é a geração do projeto a partir do archetype e or funcionar nas duas IDE’s (NetBeans 7.1.2 e Eclipse Indigo)

Excelente, vou executar em casa no fds! :slight_smile:
A unica parte que eu desconsidero foi de ter que usar netbeans, mass, eu adapto ele confortavelmente para o eclipse :o)

[]'s

[quote=WRYEL]Excelente, vou executar em casa no fds! :slight_smile:
A unica parte que eu desconsidero foi de ter que usar netbeans, mass, eu adapto ele confortavelmente para o eclipse :o)

[]'s[/quote]

No Eclipse é melhor ainda pois ele já tem integração com o JBoss AS 7 e faz o deploy sozinho, preferi mostrar como fazer no NetBeans exatamente por ser mais complicado. Não sei se a persistencia que vem no projeto funciona no JBoss. Comecei a fazer o tutorial pra ele mas parei, segue o que fiz, se for util:

Eclipse

  • Baixar Eclipse

  • Marketplace - Maven Integration for Eclipse WTP

  • Reinicar Eclipse

  • Marketplace - Jboss Tools (Indigo)

  • Reinicar Eclipse

  • Window -> Preferences -> Server -> Runtime Enviroments -> Add…
    – JBoss Community -> JBoss 7.1 Runtime
    – Mudar Home Directory para C:\devel\apps\jboss-as-7.1.1.Final

  • Botão direito no projeto -> Properties -> Java Compiler -> Annotation Processing
    – Marcar “Enable annotation processing”, “Apply” e faça o build do projeto
    Fonte: http://docs.jboss.org/hibernate/stable/jpamodelgen/reference/en-US/html_single/#d0e319

  • File -> Import -> Digitar “Maven” -> Existing Maven Projects
    – Root Directory c:\devel\projeto\tutorial -> Finish

  • Botão direito no projeto -> Properties -> Targeted Runtime
    – Selecionar servidor criado, apply, ok

  • Run as

  • Run on server -> Jboss 7.1 Runtime

  • Marcar “Always use this server when running this project” -> Finish

:smiley:

Em tempo: a velocidade de carregamento e deploy do JBoss é absurdamente fantástica de rápida (pra quem estava acostumado com Tomcat e Glassfish sem uso do JEE6 e Seam 3).

[quote=kauedg]No Eclipse é melhor ainda pois ele já tem integração com o JBoss AS 7 e faz o deploy sozinho, preferi mostrar como fazer no NetBeans exatamente por ser mais complicado. [/quote]Cara, você é a primeira pessoa em toda minha vida de Java que eu ouço falar isso! Mahauhauha

Parabéns aí pelo tutorial! \o_

[quote=jakefrog][quote=kauedg]No Eclipse é melhor ainda pois ele já tem integração com o JBoss AS 7 e faz o deploy sozinho, preferi mostrar como fazer no NetBeans exatamente por ser mais complicado. [/quote]Cara, você é a primeira pessoa em toda minha vida de Java que eu ouço falar isso! Mahauhauha

Parabéns aí pelo tutorial! \o_[/quote]

Assumi ser um elogio, portanto muito obrigado :slight_smile:

Gostaria que deixassem um comentário se executaram o tutorial e tudo funcionou bem. Em breve farei outro ensinando como fazer um login usando os módulos Security e Persistence do Seam.

Legal hein
Parabéns :smiley:

Abraços

[size=18] Substituindo a ação “run” do NetBeans [/size]

No tutorial o deploy era feito manualmente tendo que rodar um arquivo .bat toda vez que quisesse fazer o deploy da aplicação. Para fazer isso automaticamente, personalize a ação “Run” (F6) no NetBeans:

  • Usando as estruturas do tutorial acima
  • Botão direito no projeto -> propriedades -> ações -> selecionar “Executar Projeto” -> “Executar metas” alterar para clean install -> apagar “Configurar Propriedades” -> OK
    – Esse procedimento cria o arquivo nbactions.xml na raiz do projeto

  • Adicione no arquivo standalone.xml do JBoss:

Assim toda vez que você apertar F6…

  • O NetBeans fará a construção do projeto
  • O Maven gerará o .war e
  • O JBoss ativará o autodeploy, tornando a aplicação rapidamente disponível em localhost:8080/tutorial

Eliminando a seção “Fazendo o deploy” do tutorial acima.

Ainda não tive tempo de ver como se faz isso no Eclipse e por enquanto não irei tentar… Just Google it.

Se por algum motivo você quiser que o maven execute um arquivo .exe ou .bat logo após o deploy do .war configure conforme abaixo. Usarei como exemplo o arquivo redeploy.bat do tutorial:

<?xml version="1.0" encoding="UTF-8"?> <actions> <action> <actionName>run</actionName> <goals> <goal>clean</goal> <goal>install</goal> <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1.jbossorg-3:exec</goal> </goals> <properties> <!-- <exec.args>war:exploded</exec.args> para fazer o deploy com o conteúdo exploded, descomente essa linha --> <exec.executable>redeploy (sem ".bat")</exec.executable> <exec.workingdir>/caminho/ate/a/pasta/que/contem/o/arquivo</exec.workingdir> </properties> </action> </actions>

Mais parâmetros e referências aqui:
http://mojo.codehaus.org/exec-maven-plugin/exec-mojo.html
http://mojo.codehaus.org/exec-maven-plugin/

E se configurarmos o nbactions.xml assim:

<?xml version="1.0" encoding="UTF-8"?> <actions> <action> <actionName>run</actionName> <goals> <goal>clean</goal> <goal>install</goal> <goal>org.codehaus.mojo:exec-maven-plugin:1.2.1.jbossorg-3:exec</goal> </goals> <properties> <exec.executable>standalone</exec.executable> <exec.workingdir>/devel/apps/jboss-as-7.1.1.Final/bin</exec.workingdir> </properties> </action> </actions>

O Jboss AS7 roda como se fosse um servidor Glassfish ou Tomcat, com saída no NetBeans e tudo…

Fazendo pelo seu jeito ou pelo create maven project do m2Eclipse, resulta no mesmo erro. o projeto funciona mas lança essas excessões quando inicio o JBoss AS 7.1: sendo que esses jars se encontram no classpath.

23:23:17,986 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-2) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Log4jLogger
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:152) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:86) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:115) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:171) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:336) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:82) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.weld.services.WeldService.start(WeldService.java:76) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32]
	at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Priority
	at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.6.0_32]
	at java.lang.Class.privateGetDeclaredFields(Class.java:2291) [rt.jar:1.6.0_32]
	at java.lang.Class.getDeclaredFields(Class.java:1743) [rt.jar:1.6.0_32]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:102) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.runAndWrap(SecureReflectionAccess.java:63) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections.getDeclaredFields(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.<init>(WeldClassImpl.java:153) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.of(WeldClassImpl.java:118) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:49) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:40) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)
	at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:149) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	... 11 more
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Priority from [Module "org.jboss.logging:main" from local module loader @5e176f (roots: C:\jboss-as-7.1.1.Final\modules)]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
	... 29 more

23:23:18,180 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.solder.resourceLoader.ResourceProvider from being installed as bean due to @Veto annotation
23:23:18,253 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-2) WELD-000119 Not generating any bean definitions from org.jboss.logging.Slf4jLogger because of underlying class loading error
23:23:18,257 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-2) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Slf4jLogger
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:152) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:86) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:115) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:171) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:336) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:82) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.weld.services.WeldService.start(WeldService.java:76) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32]
	at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]
Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
	at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.6.0_32]
	at java.lang.Class.privateGetDeclaredFields(Class.java:2291) [rt.jar:1.6.0_32]
	at java.lang.Class.getDeclaredFields(Class.java:1743) [rt.jar:1.6.0_32]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:102) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.runAndWrap(SecureReflectionAccess.java:63) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections.getDeclaredFields(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.<init>(WeldClassImpl.java:153) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.of(WeldClassImpl.java:118) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:49) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:40) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)
	at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:149) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	... 11 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger from [Module "org.jboss.logging:main" from local module loader @5e176f (roots: C:\jboss-as-7.1.1.Final\modules)]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
	... 29 more

23:23:18,344 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-2) WELD-000119 Not generating any bean definitions from org.jboss.logging.Slf4jLocationAwareLogger because of underlying class loading error
23:23:18,348 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-2) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Slf4jLocationAwareLogger
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:152) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:86) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:115) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:171) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:336) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:82) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.weld.services.WeldService.start(WeldService.java:76) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32]
	at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]
Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/spi/LocationAwareLogger;
	at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.6.0_32]
	at java.lang.Class.privateGetDeclaredFields(Class.java:2291) [rt.jar:1.6.0_32]
	at java.lang.Class.getDeclaredFields(Class.java:1743) [rt.jar:1.6.0_32]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:102) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections$4.work(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflectionAccess.runAndWrap(SecureReflectionAccess.java:63) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.util.reflection.SecureReflections.getDeclaredFields(SecureReflections.java:99) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.<init>(WeldClassImpl.java:153) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.introspector.jlr.WeldClassImpl.of(WeldClassImpl.java:118) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:49) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:40) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)
	at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)
	at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)
	at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:149) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	... 11 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.spi.LocationAwareLogger from [Module "org.jboss.logging:main" from local module loader @5e176f (roots: C:\jboss-as-7.1.1.Final\modules)]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
	... 29 more

23:23:18,974 INFO  [stdout] (MSC service thread 1-3) Hibernate: call next value for hibernate_sequence

23:23:19,044 INFO  [tutorial] (MSC service thread 1-3) Successfully imported seed data.
23:23:19,075 INFO  [stdout] (MSC service thread 1-3) Hibernate: insert into Member (email, name, phone_number, id) values (?, ?, ?, ?)

23:23:19,194 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-3) Inicializando Mojarra 2.1.7-jbossorg-1 (20120227-1401) para o contexto '/tutorial'
23:23:20,717 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-3) Monitoring jndi:/default-host/tutorial/WEB-INF/faces-config.xml for modifications
23:23:20,757 INFO  [org.jboss.web] (MSC service thread 1-3) JBAS018210: Registering web context: /tutorial
23:23:20,878 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "tutorial.war"
23:23:22,553 INFO  [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select member0_.id as id0_, member0_.email as email0_, member0_.name as name0_, member0_.phone_number as phone4_0_ from Member member0_ order by member0_.name asc

23:25:21,473 INFO  [org.jboss.as.logging] JBAS011503: Restored bootstrap log handlers
23:25:21,475 WARN  [org.jboss.remoting.remote] JBREM000205: Failed to accept a connection: java.nio.channels.ClosedChannelException
23:25:21,477 WARN  [org.jboss.remoting.remote] JBREM000205: Failed to accept a connection: java.nio.channels.ClosedChannelException
23:25:21,479 WARN  [org.jboss.remoting.remote] JBREM000205: Failed to accept a connection: java.nio.channels.ClosedChannelException
23:25:21,481 WARN  [org.jboss.remoting.remote] JBREM000205: Failed to accept a connection: java.nio.channels.ClosedChannelException
23:25:21,523 INFO  [org.jboss.weld.deployer] JBAS016009: Stopping weld service for deployment tutorial.war
23:25:21,529 INFO  [org.jboss.as.jpa] JBAS011403: Stopping Persistence Unit Service 'tutorial.war#primary'
23:25:21,531 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] HHH000227: Running hbm2ddl schema export
23:25:21,533 ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] HHH000231: Schema export unsuccessful: org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-161]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
	at org.h2.message.DbException.get(DbException.java:169)
	at org.h2.message.DbException.get(DbException.java:146)
	at org.h2.message.DbException.get(DbException.java:135)
	at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1394)
	at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1369)
	at org.h2.jdbc.JdbcConnection.createStatement(JdbcConnection.java:191)
	at org.jboss.jca.adapters.jdbc.WrappedConnection.createStatement(WrappedConnection.java:304)
	at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:54)
	at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:368)
	at org.hibernate.tool.hbm2ddl.SchemaExport.drop(SchemaExport.java:319)
	at org.hibernate.tool.hbm2ddl.SchemaExport.drop(SchemaExport.java:315)
	at org.hibernate.internal.SessionFactoryImpl.close(SessionFactoryImpl.java:1279)
	at org.hibernate.ejb.EntityManagerFactoryImpl.close(EntityManagerFactoryImpl.java:140)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.stop(PersistenceUnitServiceImpl.java:98) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32]
	at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]

23:25:21,562 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] HHH000230: Schema export complete
23:25:21,568 INFO  [com.arjuna.ats.jbossatx] ARJUNA032018: Destroying TransactionManagerService
23:25:21,570 INFO  [com.arjuna.ats.jbossatx] ARJUNA032014: Stopping transaction recovery manager
23:25:21,573 INFO  [org.jboss.as.server.deployment] JBAS015877: Stopped deployment tutorial.war in 138ms
23:25:21,579 INFO  [org.jboss.as] JBAS015950: JBoss AS 7.1.1.Final "Brontes" stopped in 74ms

Tenta adicionar a dependência org.jboss.dna : dna-common / 0.7… Ela inclui várias bibliotecas.

Desde esse tutorial eu “evolui” um pouco na matéria e estou estudando EJB 3 com Glassfish, muito mais prático.

Apesar das grandes vantagens do CDI, o Seam 3 ainda esta muito confuso, falta documentação, precisa de um infinidade de dependências que nem o maven resolve, vou esperar desenvolverem algo estável para poder usar.

Tutorial ótimo!!
Auto explicativo!!

Parabéns!!