Não vou perder tempo explicando o que é o docker ou pra que server o docker vamos para parte prática.
Docker - https://www.docker.com/
Instalação no Linux: http://docs.docker.com/linux/step_one/
Depois do docker instalado vamos a um exemplo prático.
Resolvi substituir alguns serviços da minha minha máquina e usar o docker e o primeiro serviço foi o MySql:
Instalando a imagem do MySql:
sudo docker pull mysql - baixa o docker (imagem) com mysql
O parâmetro "pull" irá baixar a imagem "mysql" dos repositório do docker, https://hub.docker.com/_/mysql/
sudo docker images - Listas as imagens baixadas/criadas na máquina
O resultado fica assim:
ubuntu@ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mysql latest c29b1276a98a 12 days ago 359.8 MB
ubuntu@ubuntu:~$
Agora vamos cria o container para usar o mysql, em resumo o container nada mais é do que uma instancia real da imagem, o container usa a imagem instalada e aplica as configurações para que o serviço ou servidor funcione. Podemos ter vários container de uma unica imagem e cada container tem sua funcionalidade.
Como exemplo irei criar 2 servidores mysql, serão 2 container:
1 - Servidor mysql com ip próprio:
sudo docker run --name mymysql -e MYSQL_ROOT_PASSWORD=root1 -d mysql
Parâmetros:
run - executa a imagem criando um container
--name - da uma nome para o container
mymysql - nome do container fica a critério da pessoal
-e - setando variaveis de ambiente no exemplo acima estamos setando a variavel MYSQL_ROOT_PASSWORD
-d - deixa o container rodando em background
mysql - neste exemplo é nome da imagem no repositório que baixar anteriormente
Para ver se o container esta rodando:
sudo docker ps
O resultado fica assim:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aed91beee6fe mysql "/entrypoint.sh mysql" 3 days ago Up 5 seconds 3306/tcp mymysql
Agora temos um servidor de MySql rodando no docker vamos pegar o ip para podemos usar na nossa aplicação:
sudo docker inspect aed91beee6fe
Parâmetros:
inspect - returna informações do container e da imagem
aed91beee6fe - Id do container, cada container tem um id próprio
ubuntu@ubuntu-Aspire-E1-571:~$ sudo docker inspect aed
[
{
"Id": "aed91beee6fe517d6358a39a0ba0b02c2daec2a4f2c393405ccba451b446130b",
"Created": "2015-11-20T02:26:58.154562367Z",
"Path": "/entrypoint.sh",
"Args": [
"mysqld"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 13163,
"ExitCode": 0,
"Error": "",
"StartedAt": "2015-11-23T13:07:50.033191231Z",
"FinishedAt": "2015-11-20T16:28:28.493679426Z"
},
...........,
"Mounts": [
{
"Name": "4dcf2234e155ef26d1f22e0279634b7594b6cfa18af4b04f7c6afe3f699e131a",
"Source": "/var/lib/docker/volumes/4dcf2234e155ef26d1f22e0279634b7594b6cfa18af4b04f7c6afe3f699e131a/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true
}
],
"Config": {
"Hostname": "aed91beee6fe",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"MYSQL_ROOT_PASSWORD=root6Beer",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"MYSQL_MAJOR=5.7",
"MYSQL_VERSION=5.7.9-1debian8"
],
"Cmd": [
"mysqld"
],
"Image": "mysql",
"Volumes": {
"/var/lib/mysql": {}
},
"WorkingDir": "",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": null,
"Labels": {},
"StopSignal": "SIGTERM"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "5e68cbcf0e18acad52ca101565fcc9df5b137a89ca018ac351cf9a14975d9344",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"3306/tcp": null
},
"SandboxKey": "/var/run/docker/netns/5e68cbcf0e18",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "71d73085e4009639f332caf43689e3ba6b3331c8148a1105922b4d797adb0eff",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"EndpointID": "71d73085e4009639f332caf43689e3ba6b3331c8148a1105922b4d797adb0eff",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03"
}
}
}
}
]
ubuntu@ubuntu:~$
Ficando assim os dados para conexão com o banco e pode ser usando em qualquer aplicação:
hostname: 172.17.0.3 Port: 3306 User: root Password: root1
Agora vamos a outro exemplo, no exemplo acima criei uma servidor com um ip próprio, mas existe uma opção para usarmos como se fosse localhost vamos ao exemplo:
sudo docker run -p 3306:3306 --name mymysql2 -e MYSQL_ROOT_PASSWORD=root1 -d mysql
Como podemos ver o que difere é o parâmetro 3306:3306 aqui estamos expondo a porta 3306 do container que será acessada também pela porta 3306 do localhost.
Ficando assim para conexão com o banco:
hostname: localhost Port: 3306 User: root Password: root1
E temos dois servidores de banco rodando na nossa maquina, um em cada container criado:
ubuntu@ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52d08d09e575 mysql "/entrypoint.sh mysql" 3 days ago Up 21 hours 0.0.0.0:3306->3306/tcp mymysql2
aed91beee6fe mysql "/entrypoint.sh mysql" 3 days ago Up 46 minutes 3306/tcp mymysql
ubuntu@ubuntu:~$
Clementino Leal
Os artigos aqui postados são de assuntos que achei de muito interessante e testes meus.
segunda-feira, 23 de novembro de 2015
quinta-feira, 3 de setembro de 2015
Criando um lib em c para ser usada no Python
Shared Objects no Python
Como gosto muito de escrever em python resolvi fazer algo parecido com o post anterior só que desta vez o python acessando uma lib em c.
Eu utilizei o modulo ctypes. O módulo ctypes provê a compatibilidade dos tipos de dados em C permitindo chamar bibliotecas, como por exemplo DDLs e shared objects.
Git: https://github.com/crleal/python_com_c
1 - Programa exemplo em c:
HelloWorld.c
2 - Compilando o HelloWorld.c:
3 - Programa em Python:
HelloWorld.py
4 - Executando o python:
Resultado:
Como gosto muito de escrever em python resolvi fazer algo parecido com o post anterior só que desta vez o python acessando uma lib em c.
Eu utilizei o modulo ctypes. O módulo ctypes provê a compatibilidade dos tipos de dados em C permitindo chamar bibliotecas, como por exemplo DDLs e shared objects.
Git: https://github.com/crleal/python_com_c
1 - Programa exemplo em c:
HelloWorld.c
1: #include
2:
3: double HelloWorld_dobro (int x)
4: {
5: printf("Metodo dobro!\n");
6: return x * 2;
7: }
8:
9: int somar(int n, int m)
10: {
11: return n + m;
12: }
2 - Compilando o HelloWorld.c:
1:gcc -Wall HelloWorld.c -shared -fPIC -o HelloWorld_lib.so
3 - Programa em Python:
HelloWorld.py
1:#!/usr/bin/env python2: 3: import os 4: import ctypes 5: 6: # Carrega a lib para uma variavel 7: libLocal = ctypes.CDLL("./HelloWorld_lib.so") 8: 9: print("A soma dos numeros:") 10: 11: # chama os metodos dentro da lib 12: print(libLocal.somar(5, 6)) 13: print(libLocal.HelloWorld_dobro (5))
4 - Executando o python:
1:Python HelloWorld.py
Resultado:
A soma dos numeros: 11
Metodo dobro! 10
sexta-feira, 7 de agosto de 2015
Criando um lib em c para ser usada no Java
Eu precisei fazer uma rotina que integrasse uma lib em c com java. Abaixo mostrarei um passo-a-passo sem entrar muito em detalhes como consegui realizar isso.
Git: https://github.com/crleal/java_com_c
1 - Programa exemplo em java:
HelloWorld.java
2 - Compile o código para ver se não tem erro:
3 - Gerar HelloWorld.h :
Irá criar o arquivo:
HelloWorld.h
4 - Programa exemplo em c:
HelloWorld.c
5 - Compilando o HelloWorld.c:
Irá criar o arquivo: HelloWorld.o
6 - Gerando a lib:
Irá criar o arquivo: libHelloWorld.so
7 - Executando o java:
Resultado:
Git: https://github.com/crleal/java_com_c
1 - Programa exemplo em java:
HelloWorld.java
1: class HelloWorld {
2: //Le a lib em C
3: static {
4: System.loadLibrary("HelloWorld");
5: }
6:
7: // declara os metodos que serão chamados na lib em "c"
8: private native void print();
9: private native double dobro(double x);
10:
11: public static void main(String[] args) {
12: // Executa um metodo "c"
13: new HelloWorld().print();
14: // Chama um metodo passando parametro e retornando um valor
15: double valor = new HelloWorld().dobro(3);
16: System.out.printf("O dobro de 3 é: "+String.valueOf(valor));
17: }
18: }
2 - Compile o código para ver se não tem erro:
1: javac HelloWorld.java
3 - Gerar HelloWorld.h :
1: javah -jni HelloWorld
Irá criar o arquivo:
HelloWorld.h
1: /* DO NOT EDIT THIS FILE - it is machine generated */
2: #include <jni.h>
3: /* Header for class HelloWorld */
4:
5: #ifndef _Included_HelloWorld
6: #define _Included_HelloWorld
7: #ifdef __cplusplus
8: extern "C" {
9: #endif
10: /*
11: * Class: HelloWorld
12: * Method: print
13: * Signature: ()V
14: */
15: JNIEXPORT void JNICALL Java_HelloWorld_print
16: (JNIEnv *, jobject);
17:
18: /*
19: * Class: HelloWorld
20: * Method: dobro
21: * Signature: (D)D
22: */
23: JNIEXPORT jdouble JNICALL Java_HelloWorld_dobro
24: (JNIEnv *, jobject, jdouble);
25:
26: #ifdef __cplusplus
27: }
28: #endif
29: #endif
4 - Programa exemplo em c:
HelloWorld.c
1: #include <jni.h>
2: #include <stdio.h>
3: #include "HelloWorld.h"
4:
5: JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *env, jobject obj)
6: {
7: printf("Hello World!\n");
8: return;
9: }
10:
11: JNIEXPORT double JNICALL Java_HelloWorld_dobro (JNIEnv *env, jobject obj, jdouble x)
12: {
13: printf("Metodo dobro!\n");
14: return x * 2;
15: }
5 - Compilando o HelloWorld.c:
1: gcc -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -c -Wall -Werror -fpic HelloWorld.c
Irá criar o arquivo: HelloWorld.o
6 - Gerando a lib:
1: gcc -shared -o libHelloWorld.so HelloWorld.o
Irá criar o arquivo: libHelloWorld.so
7 - Executando o java:
1: java -Djava.library.path=. HelloWorld
Resultado:
Hello World!
Metodo dobro!
O dobro de 3 é: 6.0
quinta-feira, 6 de maio de 2010
Jboss - Mudando aplicação padrão
Saindo um pouco do assunto Seam-Gen, esat semana um amigo me ligou perguntado como poderia colocar a aplicação dele como padrão.
Ele precisava colocar /Aplicacao depois do dominio e não queria fazer isso.
http://www.xxxx.com.br/Pedido e queria que ficasse apenas http://www.xxxx.com.br
A solução que passei foi a seguinte:
1 - Remova a aplicação padrão do Jboss:
~/jboss/server/default/deploy/jboss-web.deployer/ROOT.war
2 - Na aplicação que deseja colocar como padrão faça o seguinte:
- Edite /WEB-INF/jboss-web.xml da aplicação
- Substitua:
<context-root>/Pedido <context-root> por
<context-root>/ <context-root>
(Se não existir acrescente a linha)
Como no exemplo abaixo:
<jboss-web>
.
.
<context-root>/context-root>
.
.
</jboss-web>
3 - Reinicie o jboss
<context-root>/
.
.
.
3 - Reinicie o jboss
Pronto chamando http://www.xxxx.com.br Executará Pedido como padrão !!!
sexta-feira, 16 de abril de 2010
Jboss SEAM - seam-gen - Gerando Páginas CRUD (Parte 5)
Com a aplicação criada chegou a hora de gerar as páginas em cima do banco de dados.
Não vou entrar em detalhes de diagrama de classes vou direto ao assunto, como exemplo criei uma estrutura simples com 3 tabelas:
Estas tabelas foram criadas no banco em que mencionei na configuração do seam-gen.
Dica: Para saber os comandos do seam digite com o parâmetro help:
$ ./seam help
Voltando ao nosso teste, agora iremos gerar as páginas automaticamente usaremos o parâmetro generate este parâmetro combina o generate-model (gera JPA entidade de classes) e generate-ui (gera o CRUD das entidades existente).
Veja:
Pronto!!!!
Execute o comando abaixo para fazer o deploy e reinicia o Jboss automaticamente:
~/Java/jboss-seam$ ./seam restart
E agora entre no browse e teste digitando:
Irá Aparecer mais um item de menu e a tela ficará assim:
Tela de Produtos
Página Produto View
Ainda terminarei de postar o restante.
Não vou entrar em detalhes de diagrama de classes vou direto ao assunto, como exemplo criei uma estrutura simples com 3 tabelas:
Estas tabelas foram criadas no banco em que mencionei na configuração do seam-gen.
Dica: Para saber os comandos do seam digite com o parâmetro help:
$ ./seam help
Voltando ao nosso teste, agora iremos gerar as páginas automaticamente usaremos o parâmetro generate este parâmetro combina o generate-model (gera JPA entidade de classes) e generate-ui (gera o CRUD das entidades existente).
Veja:
~/Java/jboss-seam$ ./seam generate
SEAM_HOME: /home/crleal/Java/jboss-seam
Using seam-gen sources from: /home/crleal/Java/jboss-seam/seam-gen
Buildfile: /home/crleal/Java/jboss-seam/seam-gen/build.xml
init:
init-properties:
[echo] /home/crleal/Java/jboss-5.1.0.GA
validate-workspace:
validate-project:
init-generate:
generate-model:
[echo] Reverse engineering database using JDBC driver /home/crleal/Java/libs/mysql-connector-java-5.1.11-bin.jar
[echo] project=/home/crleal/workspace/AplicacaoTeste
[echo] model=br.com.aplicacaoteste.model
[hibernate] Executing Hibernate Tool with a JDBC Configuration (for reverse engineering)
[hibernate] 1. task: hbm2java (Generates a set of .java files)
[hibernate] log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
[hibernate] log4j:WARN Please initialize the log4j system properly.
[javaformatter] Java formatting of 4 files completed. Skipped 0 file(s).
generate-ui:
[echo] Building project 'AplicacaoTeste' to generate views and controllers
init:
groovy.compilemodel:
compilemodel:
[javac] Compiling 4 source files to /home/crleal/workspace/AplicacaoTeste/exploded-archives/AplicacaoTeste.war/WEB-INF/classes
groovy.compileactions:
groovy.copyactions:
compileactions:
copyclasses:
compile:
war:
[hibernate] Executing Hibernate Tool with a JPA Configuration
[hibernate] 1. task: generic exportertemplate: view/list.xhtml.ftl
[hibernate] 2. task: generic exportertemplate: view/view.xhtml.ftl
[hibernate] 3. task: generic exportertemplate: view/view.page.xml.ftl
[hibernate] 4. task: generic exportertemplate: view/edit.xhtml.ftl
[hibernate] 5. task: generic exportertemplate: view/edit.page.xml.ftl
[hibernate] 6. task: generic exportertemplate: src/EntityList.java.ftl
[hibernate] 7. task: generic exportertemplate: view/list.page.xml.ftl
[hibernate] 8. task: generic exportertemplate: src/EntityHome.java.ftl
[hibernate] 9. task: generic exportertemplate: view/layout/menu.xhtml.ftl
[javaformatter] Java formatting of 7 files completed. Skipped 0 file(s).
[echo] Type './seam restart' and go to http://localhost:8080/AplicacaoTeste
generate:
BUILD SUCCESSFUL
Total time: 6 seconds
~/Java/jboss-seam$
SEAM_HOME: /home/crleal/Java/jboss-seam
Using seam-gen sources from: /home/crleal/Java/jboss-seam/seam-gen
Buildfile: /home/crleal/Java/jboss-seam/seam-gen/build.xml
init:
init-properties:
[echo] /home/crleal/Java/jboss-5.1.0.GA
validate-workspace:
validate-project:
init-generate:
generate-model:
[echo] Reverse engineering database using JDBC driver /home/crleal/Java/libs/mysql-connector-java-5.1.11-bin.jar
[echo] project=/home/crleal/workspace/AplicacaoTeste
[echo] model=br.com.aplicacaoteste.model
[hibernate] Executing Hibernate Tool with a JDBC Configuration (for reverse engineering)
[hibernate] 1. task: hbm2java (Generates a set of .java files)
[hibernate] log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
[hibernate] log4j:WARN Please initialize the log4j system properly.
[javaformatter] Java formatting of 4 files completed. Skipped 0 file(s).
generate-ui:
[echo] Building project 'AplicacaoTeste' to generate views and controllers
init:
groovy.compilemodel:
compilemodel:
[javac] Compiling 4 source files to /home/crleal/workspace/AplicacaoTeste/exploded-archives/AplicacaoTeste.war/WEB-INF/classes
groovy.compileactions:
groovy.copyactions:
compileactions:
copyclasses:
compile:
war:
[hibernate] Executing Hibernate Tool with a JPA Configuration
[hibernate] 1. task: generic exportertemplate: view/list.xhtml.ftl
[hibernate] 2. task: generic exportertemplate: view/view.xhtml.ftl
[hibernate] 3. task: generic exportertemplate: view/view.page.xml.ftl
[hibernate] 4. task: generic exportertemplate: view/edit.xhtml.ftl
[hibernate] 5. task: generic exportertemplate: view/edit.page.xml.ftl
[hibernate] 6. task: generic exportertemplate: src/EntityList.java.ftl
[hibernate] 7. task: generic exportertemplate: view/list.page.xml.ftl
[hibernate] 8. task: generic exportertemplate: src/EntityHome.java.ftl
[hibernate] 9. task: generic exportertemplate: view/layout/menu.xhtml.ftl
[javaformatter] Java formatting of 7 files completed. Skipped 0 file(s).
[echo] Type './seam restart' and go to http://localhost:8080/AplicacaoTeste
generate:
BUILD SUCCESSFUL
Total time: 6 seconds
~/Java/jboss-seam$
Execute o comando abaixo para fazer o deploy e reinicia o Jboss automaticamente:
~/Java/jboss-seam$ ./seam restart
E agora entre no browse e teste digitando:
http://localhost:8080/AplicacaoTeste
Irá Aparecer mais um item de menu e a tela ficará assim:
Tela de Produtos
Página Produto View
Ainda terminarei de postar o restante.
quinta-feira, 15 de abril de 2010
Jboss SEAM - seam-gen - Personalizando (Parte 4)
Antes de entrarmos na geração de telas automáticas vai aqui algumas dicas de onde estão algumas das pasta onde poderemos alterar mensagens (pode até traduzi-las), icones e botões. Apenas mostrarei onde, ficando a cargo e necessidade de quem for usar.
- A pasta ~/jboss-seam/seam-gen/view
home.xhtml
conversation.xhtml
list.xhtml
login.xhtml
edit.xhtml
error.xhtml
query.xhtml
edit.xhtml.ftl
view.xhtml.ftl
list.xhtml.ftl
- A pasta ~/jboss-seam/seam-gen/view/layout
menu.xhtml
menu.xhtml.ftl
- A pasta ~/jboss-seam/seam-gen/view/img - Imagens usadas pelo seam-gen e serão copiadas para aplicação.
- A pasta ~/jboss-seam/seam-gen/view/stylesheet - css usadas pelo seam-gen e serão copiadas para aplicação.
- A pasta ~/jboss-seam/seam-gen/view/useradmin - telas de administração e controle de usuários.
Todas as pastas indicadas acima são usadas pelo seam-gen para gerar a aplicação e telas da aplicação.
Dica: se for gerar aplicações distintas (cor, banco de dados, etc..) tenha uma pasta do joss SEAM para cada aplicação por nela conterá informações de configuração para a sua aplicação.
Agora sim a próxima parte irá tratar da criação de telas CRUD conforme tabelas.
- A pasta ~/jboss-seam/seam-gen/view
home.xhtml
conversation.xhtml
list.xhtml
login.xhtml
edit.xhtml
error.xhtml
query.xhtml
edit.xhtml.ftl
view.xhtml.ftl
list.xhtml.ftl
- A pasta ~/jboss-seam/seam-gen/view/layout
menu.xhtml
menu.xhtml.ftl
- A pasta ~/jboss-seam/seam-gen/view/img - Imagens usadas pelo seam-gen e serão copiadas para aplicação.
- A pasta ~/jboss-seam/seam-gen/view/stylesheet - css usadas pelo seam-gen e serão copiadas para aplicação.
- A pasta ~/jboss-seam/seam-gen/view/useradmin - telas de administração e controle de usuários.
Todas as pastas indicadas acima são usadas pelo seam-gen para gerar a aplicação e telas da aplicação.
Dica: se for gerar aplicações distintas (cor, banco de dados, etc..) tenha uma pasta do joss SEAM para cada aplicação por nela conterá informações de configuração para a sua aplicação.
Agora sim a próxima parte irá tratar da criação de telas CRUD conforme tabelas.
Jboss SEAM - seam-gen - Gerando Aplicação (Parte 3)
Depois de ter configurado iremos gerar uma aplicação conforme foi configurado.
copyseam:
copyseamdependencies:
copyjbossembedded:
copy-icefaces-home:
copy-icefaces-maven:
copy-lib:
[echo] Copying Seam and dependencies to the /home/crleal/workspace/AplicacaoTeste/lib directory...
[copy] Copying 150 files to /home/clementinoleal/workspace/AplicacaoTeste/lib
[copy] Copied 5 empty directories to 2 empty directories under /home/crleal/workspace/AplicacaoTeste/lib
[echo] Copying JBoss Embedded configuration to the /home/crleal/workspace/AplicacaoTeste/bootstrap directory...
[copy] Copying 30 files to /home/crleal/workspace/AplicacaoTeste/bootstrap
file-copy-war:
[echo] Copying build scripts for WAR deployment to the /home/crleal/workspace/AplicacaoTeste directory...
[copy] Copying 2 files to /home/crleal/workspace/AplicacaoTeste
[mkdir] Created dir: /home/crleal/workspace/AplicacaoTeste/src/test/br/com/aplicacaoteste/test
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/src/test
create-project:
[echo] A new Seam project named 'BonusTeste' was created in the /home/crleal/workspace directory
[echo] Type './seam explode' and go to http://localhost:8080/AplicacaoTeste
[echo] Eclipse Users: Import the project using File > Import... > Existing Projects into Workspace, set the root directory to /home/crleal/workspace, then select the project named BonusTeste
[echo] NetBeans Users: Open the project using File > Open project... and select the project folder /home/crleal/workspace/AplicacaoTeste
[echo] IDEA Users: Open the project using File > Open project... and select the file /home/crleal/workspace/AplicacaoTeste/AplicacaoTeste.ipr
new-project:
BUILD SUCCESSFUL
Total time: 2 seconds
~/Java/jboss-seam$
Pronto a aplicação foi gerada!!!
Para executar a aplicação o jboss tem que estar rodando.
Execute o comando abaixo para fazer o deploy e reinicia o Jboss automaticamente:
~/Java/jboss-seam$ ./seam restart
E agora entre no browse e teste digitando:
A tela ficará assim:
Apertando o login teremos:
Na próxima parte mostrarei como criar as telas CRUD conforme as tabelas do banco.
~/Java/jboss-seam$ ./seam new-project
SEAM_HOME: /home/crleal/Java/jboss-seam
SEAM_HOME: /home/crleal/Java/jboss-seam
Using seam-gen sources from: /home/crleal/Java/jboss-seam/seam-gen
Buildfile: /home/crleal/Java/jboss-seam/seam-gen/build.xml
init:
init-properties:
[echo] /home/crleal/Java/jboss-5.1.0.GA
validate-workspace:
validate-project:
icefaces-staging-copy:
initcopy:
initpoms:
[echo] Setting up dependencies
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[artifact:install] [INFO] Installing /home/crleal/Java/jboss-seam/classes/poms/root.pom to /home/crleal/.m2/repository/org/jboss/seam/root/2.2.1/root.pom
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[artifact:install] [INFO] Installing /home/crleal/Java/jboss-seam/classes/poms/parent.pom to /home/crleal/.m2/repository/org/jboss/seam/parent/2.2.1/parent-2.2.1.pom
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms [copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
Buildfile: /home/crleal/Java/jboss-seam/seam-gen/build.xml
init:
init-properties:
[echo] /home/crleal/Java/jboss-5.1.0.GA
validate-workspace:
validate-project:
icefaces-staging-copy:
initcopy:
initpoms:
[echo] Setting up dependencies
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[artifact:install] [INFO] Installing /home/crleal/Java/jboss-seam/classes/poms/root.pom to /home/crleal/.m2/repository/org/jboss/seam/root/2.2.1/root.pom
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[artifact:install] [INFO] Installing /home/crleal/Java/jboss-seam/classes/poms/parent.pom to /home/crleal/.m2/repository/org/jboss/seam/parent/2.2.1/parent-2.2.1.pom
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
[copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms [copy] Copying 1 file to /home/crleal/Java/jboss-seam/classes/poms
copyseam:
copyseamdependencies:
copyjbossembedded:
copy-icefaces-home:
copy-icefaces-maven:
copy-lib:
[echo] Copying Seam and dependencies to the /home/crleal/workspace/AplicacaoTeste/lib directory...
[copy] Copying 150 files to /home/clementinoleal/workspace/AplicacaoTeste/lib
[copy] Copied 5 empty directories to 2 empty directories under /home/crleal/workspace/AplicacaoTeste/lib
[echo] Copying JBoss Embedded configuration to the /home/crleal/workspace/AplicacaoTeste/bootstrap directory...
[copy] Copying 30 files to /home/crleal/workspace/AplicacaoTeste/bootstrap
file-copy-war:
[echo] Copying build scripts for WAR deployment to the /home/crleal/workspace/AplicacaoTeste directory...
[copy] Copying 2 files to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[echo] Copying resources needed for WAR deployment to the /home/crleal/workspace/AplicacaoTeste/resources directory...
[copy] Copying 5 files to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources/WEB-INF
file-copy-ear:
setup-filters:
file-copy:
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 5 files to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources/WEB-INF
file-copy-ear:
setup-filters:
file-copy:
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 3 files to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 11 files to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 4 files to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 11 files to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 4 files to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/.settings
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[mkdir] Created dir: /home/crleal/workspace/AplicacaoTeste/nbproject
[copy] Copying 3 files to /home/crleal/workspace/AplicacaoTeste/nbproject
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 13 files to /home/crleal/workspace/AplicacaoTeste/view
[copy] Copying 16 files to /home/crleal/workspace/AplicacaoTeste/view
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/src/hot/br/com/aplicacaoteste/action
[copy] Copying 3 files to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 3 files to /home/crleal/workspace/AplicacaoTeste/nbproject
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/resources
[copy] Copying 13 files to /home/crleal/workspace/AplicacaoTeste/view
[copy] Copying 16 files to /home/crleal/workspace/AplicacaoTeste/view
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/src/hot/br/com/aplicacaoteste/action
[copy] Copying 3 files to /home/crleal/workspace/AplicacaoTeste
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste
[mkdir] Created dir: /home/crleal/workspace/AplicacaoTeste/src/main/br/com/aplicacaoteste/model[mkdir] Created dir: /home/crleal/workspace/AplicacaoTeste/src/test/br/com/aplicacaoteste/test
[copy] Copying 1 file to /home/crleal/workspace/AplicacaoTeste/src/test
create-project:
[echo] A new Seam project named 'BonusTeste' was created in the /home/crleal/workspace directory
[echo] Type './seam explode' and go to http://localhost:8080/AplicacaoTeste
[echo] Eclipse Users: Import the project using File > Import... > Existing Projects into Workspace, set the root directory to /home/crleal/workspace, then select the project named BonusTeste
[echo] NetBeans Users: Open the project using File > Open project... and select the project folder /home/crleal/workspace/AplicacaoTeste
[echo] IDEA Users: Open the project using File > Open project... and select the file /home/crleal/workspace/AplicacaoTeste/AplicacaoTeste.ipr
new-project:
BUILD SUCCESSFUL
Total time: 2 seconds
~/Java/jboss-seam$
Pronto a aplicação foi gerada!!!
Para executar a aplicação o jboss tem que estar rodando.
Execute o comando abaixo para fazer o deploy e reinicia o Jboss automaticamente:
~/Java/jboss-seam$ ./seam restart
E agora entre no browse e teste digitando:
http://localhost:8080/AplicacaoTeste
A tela ficará assim:
Apertando o login teremos:
Na próxima parte mostrarei como criar as telas CRUD conforme as tabelas do banco.
quarta-feira, 14 de abril de 2010
Jboss SEAM - seam-gen - Configurando (Parte 2)
Configurando seam-gen:
- Descompactar numa pasta o jboss-seam;
- Jboss Instalado;
- Verifique a instalação Java jdk e a variável de ambiente JAVA_HOME.
- Entre na pasta e siga os passos abaixo:
~/Java/jboss-seam$ ./seam setup
SEAM_HOME: ~/Java/jboss-seam
Using seam-gen sources from: ~/Java/jboss-seam/seam-gen
Buildfile: ~/Java/jboss-seam/seam-gen/build.xml
init:
setup:
[echo] Welcome to seam-gen :-)
[echo] Answer each question or hit ENTER to accept the default (in brackets)
[echo]
[input] Enter the directory where you want the project to be created (should not contain spaces) [/home/crleal/workspace] [/home/crleal/workspace]
[input] Enter your JBoss AS home directory [] []
/home/crleal/Java/jboss-5.1.0.GA
[input] Enter your JBoss AS domain [default] [default]
[input] Enter your GlassFish V2 or V3 home directory (Ignore if you aren't deploying to GlassFish) [C:/Program Files/glassfish-v2.1] [C:/Program Files/glassfish-v2.1]
[input] Enter your GlassFish domain (Ignore if you aren't deploying to GlassFish) [domain1] [domain1]
[input] Enter the project name [] []
AplicacaoTeste
[echo] Accepted project name as: AplicacaoTeste
[input] Do you want to use ICEfaces instead of RichFaces? [n] (y, [n])
[input] skipping input as property icefaces.home.new has already been set.
[input] Select a RichFaces skin [emeraldTown] (blueSky, classic, darkX, deepMarine, DEFAULT, [emeraldTown], glassX, japanCherry, laguna, ruby, wine)
[input] Is this project deployed as an EAR (with EJB components) or a WAR (with no EJB support)? [war] (ear, [war])
[input] Enter the base package name for your Java classes [com.mydomain.AplicacaoTeste] []
br.com.aplicacaoteste
[input] Enter the Java package name for your session beans [br.com.aplicacaoteste.action] [br.com.aplicacaoteste.action]
[input] Enter the Java package name for your entity beans [br.com.aplicacaoteste.model] [br.com.aplicacaoteste.model]
[input] Enter the Java package name for your test cases [br.com.aplicacaoteste.test] [br.com.aplicacaoteste.test]
[input] What kind of database are you using? [hsql] ([hsql], mysql, derby, oracle, postgres, mssql, db2, sybase, enterprisedb, h2)
mysql
[input] Enter the filesystem path to the JDBC driver jar [] []
/home/crleal/Java/libs/mysql-connector-java-5.1.11-bin.jar
[input] skipping input as property driver.license.jar.new has already been set.
[input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect] [org.hibernate.dialect.MySQLDialect]
[input] Enter the JDBC driver class for your database [com.mysql.jdbc.Driver] [com.mysql.jdbc.Driver]
[input] Enter the JDBC DataSource class for your database [com.mysql.jdbc.jdbc2.optional.MysqlDataSource] [com.mysql.jdbc.jdbc2.optional.MysqlDataSource]
[input] Enter the JDBC URL for your database [] []
jdbc\:mysql\://192.168.0.86\:3306/banco
[input] Enter the database username [] []
admin
[input] Enter the database password [] []
[input] skipping input as property hibernate.default_schema.entered has already been set.
[input] Enter the database catalog name (Enter '-' to clear previous value) [] []
[input] Are you working with tables that already exist in the database? [y] ([y], n)
[input] Do you want to recreate the database tables and execute import.sql each time you deploy? [n] (y, [n])
[propertyfile] Creating new property file: /home/crlea/Java/jboss-seam/seam-gen/build.properties
[echo] Installing JDBC driver jar to JBoss AS
[copy] Copying 1 file to /home/crleal/Java/jboss-5.1.0.GA/server/default/lib
init:
init-properties:
[echo] /home/crleal/Java/jboss-5.1.0.GA
validate-workspace:
validate-project:
settings:
[echo] JBoss AS home: /home/crleal/Java/jboss-5.1.0.GA
[echo] GlassFish home: C:/Program Files/glassfish-v2.1
[echo] Project name: BonusTeste
[echo] Project location: /home/crleal/workspace/AplicacaoTeste
[echo] Project type: war
[echo] IceFaces: n
[echo] Action package: br.com.aplicacaoteste.action
[echo] Model package: br.com.aplicacaoteste.model
[echo] Test package: br.com.aplicacaoteste.test
[echo] JDBC driver class: com.mysql.jdbc.Driver
[echo] JDBC DataSource class: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
[echo] Hibernate dialect: org.hibernate.dialect.MySQLDialect
[echo] JDBC URL: jdbc\:mysql\://192.168.0.86\:3306/banco
[echo] Database username: admin
[echo] Database password:
[echo]
[echo] Type './seam create-project' to create the new project
BUILD SUCCESSFUL
Total time: 1 minute 4 seconds
O arquivo onde são guardadas as configurações: seam-gen/build.properties
Jboss SEAM - seam-gen (Parte 1)
Este post servirá para futuras consultas de como se usa o Jboss SEAM.
Seam-gem: Configura e gera uma aplicação automática.
Para se usar o Seam-gen é necessário ter instalado na maquina o java JDK e ter baixado do site http://seamframework.org/Download a última versão do Jboss seam.
Resumo dos comando seam-gen:
Seam-gem: Configura e gera uma aplicação automática.
Para se usar o Seam-gen é necessário ter instalado na maquina o java JDK e ter baixado do site http://seamframework.org/Download a última versão do Jboss seam.
Resumo dos comando seam-gen:
- seam setup: Configura o seam-gen para o seu ambiente. Aqui são informados: caminho de instalação do JBoss AS, workspace do Eclipse, a conexão com o banco de dados, dentre outras informações de configuração. (Depois de feito o SETUP todos os projetos novos usarao a configuracao do setup)
- seam new-project: Cria um novo projeto Seam baseado na configuração informada no seam setup.
- seam -D[profile] deploy: Realiza o deploy do novo projeto com a configuração do perfil especificado, isto é, desenvolvimento, teste ou produção.
- seam new-action: Cria uma página web simples, composta por uma página usando facelets e um componente no seu projeto.
- seam new-form: Cria um formulário com uma ação.
- seam generate-entities: Gera uma aplicação a partir de uma base de dados existente, usando engenharia reversa.
- seam generate-ui: Gera uma aplicação com interface web a partir de entidades JPA/EJB3 existentes.
- seam restart: Reinicia a aplicação no JBoss AS.
- seam explode: faz o Deploy da aplicação
Assinar:
Comentários (Atom)





