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]
- Java EE SDK 6 com JDK 7 - http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-6u3-jdk-7u1-downloads-523391.html
- NetBeans 7.1.2 com Java EE - http://netbeans.org/downloads/start.html?platform=windows&lang=pt_BR&option=javaee
- JBoss AS 7.1.1 Final - http://download.jboss.org/jbossas/7.1/jboss-as-7.1.1.Final/jboss-as-7.1.1.Final.zip
- Apache Maven 3.0.4 - http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.4-bin.zip
- MySQL Community Server 5.5.24.1 - http://dev.mysql.com/downloads/installer/5.5.html
– Requer: .NET Framework 4.0 - http://www.microsoft.com/downloads/details.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displayLang=pt-br
– Requer: Visual C++ Redistributable - http://www.microsoft.com/en-us/download/details.aspx?id=5555
[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"?>
- 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.
-
Baixar weld bundle
https://repository.jboss.org/nexus/content/repositories/snapshots/org/jboss/weld/weld-osgi-bundle/1.1.0-SNAPSHOT/weld-osgi-bundle-1.1.0-20110726.041819-79.jar -
Colocar na pasta “C:\Users\USERPROFILE\GlassFish_Server\glassfish\modules”
-
Apagar “weld-osgi.bundle.jar”
-
Renomear arquivo baixado para “weld-osgi-bundle.jar”
-
Executar projeto pela IDE
-
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)