<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2529508849766213692</id><updated>2011-10-10T10:17:57.726-03:00</updated><category term='início'/><category term='seam'/><title type='text'>Sílvio Netto</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-7790943780768056987</id><published>2010-09-02T22:31:00.006-03:00</published><updated>2011-03-12T00:33:28.670-03:00</updated><title type='text'>CRUD Seam</title><content type='html'>CRUD Seam&lt;br /&gt;1 – Introdução&lt;br /&gt;Agora que já vimos o projeto rodando.&lt;br /&gt;Vamos acrescentar algumas funcionalidades ao sistema de locação de carros (locar).&lt;br /&gt;Basicamente, nós temos uma empresa de locação de veículos.&lt;br /&gt;O sistema precisa fazer o seguinte:&lt;br /&gt;- Cadastrar os veículos disponíveis nas cidades&lt;br /&gt;- Buscar e reservar veículos em uma cidade&lt;br /&gt;- Locação de um veículo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2 – Modelo&lt;br /&gt;Crie uma classe que usaremos como ancestral para nossas entidades persistentes.&lt;br /&gt;Selecione o projeto locar-ejb.&lt;br /&gt;File -&amp;gt; New -&amp;gt; Class&lt;br /&gt;Package: br.com.locar.entity&lt;br /&gt;Name: AppEntity&lt;br /&gt;Abstract: yes (marcado)&lt;br /&gt;Interfaces: java.io.Serializable&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;Adicione 2 atributos:&lt;br /&gt;- Long id&lt;br /&gt;- int versao&lt;br /&gt;&lt;br /&gt;Adicione as anotações de JPA:&lt;br /&gt;- @Id @GeneratedValue&lt;br /&gt;- @Version&lt;br /&gt;&lt;br /&gt;A classe fica assim:&lt;br /&gt;&lt;br /&gt;package br.com.locar.entity;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;import javax.persistence.MappedSuperclass;&lt;br /&gt;import javax.persistence.Version;&lt;br /&gt;&lt;br /&gt;@MappedSuperclass&lt;br /&gt;public abstract class AppEntity implements Serializable {&lt;br /&gt;&lt;br /&gt;private static final long serialVersionUID = 3267491073682419272L;&lt;br /&gt;&lt;br /&gt;private Long id;&lt;br /&gt;private int versao;&lt;br /&gt;&lt;br /&gt;@Id&lt;br /&gt;@GeneratedValue&lt;br /&gt;public Long getId() {&lt;br /&gt;return id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setId(Long id) {&lt;br /&gt;this.id = id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Version&lt;br /&gt;public int getVersao() {&lt;br /&gt;return versao;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setVersao(int versao) {&lt;br /&gt;this.versao = versao;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Crie uma classe Cidade.&lt;br /&gt;Selecione o projeto locar-ejb.&lt;br /&gt;File -&amp;gt; New -&amp;gt; Class&lt;br /&gt;Package: br.com.locar.entity&lt;br /&gt;Name: Cidade&lt;br /&gt;Superclass: AppEntity&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;Adicione 1 atributo:&lt;br /&gt;- nome : String&lt;br /&gt;&lt;br /&gt;Adicione as anotações de JPA:&lt;br /&gt;- @Entity&lt;br /&gt;- @NotNull&lt;br /&gt;- @Length(min = 3, max = 30)&lt;br /&gt;&lt;br /&gt;Gere os get e set&lt;br /&gt;Gere o serial version&lt;br /&gt;&lt;br /&gt;A classe fica assim:&lt;br /&gt;&lt;br /&gt;package br.com.locar.entity;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;&lt;br /&gt;import org.hibernate.validator.Length;&lt;br /&gt;import org.hibernate.validator.NotNull;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;public class Cidade extends AppEntity {&lt;br /&gt;&lt;br /&gt;private static final long serialVersionUID = -4275579483864354167L;&lt;br /&gt;&lt;br /&gt;private String nome;&lt;br /&gt;&lt;br /&gt;@NotNull&lt;br /&gt;@Length(min = 3, max = 30)&lt;br /&gt;public String getNome() {&lt;br /&gt;return nome;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setNome(String nome) {&lt;br /&gt;this.nome = nome;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;3 – Controle&lt;br /&gt;Crie uma classe CidadeAction.&lt;br /&gt;A classe CidadeAction terá uma cidade e uma lista de cidades.&lt;br /&gt;O atributo cidade servirá para ligarmos aos campos de cadastro e edição de cidades na tela.&lt;br /&gt;A lista de cidades servirá para montar uma tabela com as cidades na tela.&lt;br /&gt;Usaremos um Entity Manager para trabalharmos com a persistencia.&lt;br /&gt;E uma classe Log para gerarmos o log da aplicação.&lt;br /&gt;&lt;br /&gt;Selecione o projeto locar-ejb.&lt;br /&gt;File -&amp;gt; New -&amp;gt; Class&lt;br /&gt;Package: br.com.locar.session&lt;br /&gt;Name: CidadeAction&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;Adicione os atributos:&lt;br /&gt;- cidade : Cidade&lt;br /&gt;- cidades: List&amp;lt;cidade&amp;gt;&lt;br /&gt;- cidadeSelecionada: Cidade&lt;br /&gt;- log : Log&lt;br /&gt;- entityManager : EntityManager&lt;br /&gt;&lt;br /&gt;Adicione as anotações do Seam&lt;br /&gt;- @Name(“cidadeAction”)&lt;br /&gt;- @DataModel&lt;br /&gt;- @DataModelSelection&lt;br /&gt;- @Logger&lt;br /&gt;- @In&lt;br /&gt;&lt;br /&gt;A classe fica assim:&lt;br /&gt;&lt;br /&gt;package br.com.locar.session;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import javax.persistence.EntityManager;&lt;br /&gt;&lt;br /&gt;import org.jboss.seam.annotations.Factory;&lt;br /&gt;import org.jboss.seam.annotations.In;&lt;br /&gt;import org.jboss.seam.annotations.Logger;&lt;br /&gt;import org.jboss.seam.annotations.Name;&lt;br /&gt;import org.jboss.seam.annotations.datamodel.DataModel;&lt;br /&gt;import org.jboss.seam.annotations.datamodel.DataModelSelection;&lt;br /&gt;import org.jboss.seam.log.Log;&lt;br /&gt;&lt;br /&gt;import br.com.locar.entity.Cidade;&lt;br /&gt;&lt;br /&gt;@Name("cidadeAction")&lt;br /&gt;public class CidadeAction {&lt;br /&gt;&lt;br /&gt;  private Cidade cidade = new Cidade();&lt;br /&gt;&lt;br /&gt;  @DataModel&lt;br /&gt;  private List&amp;lt;cidade&amp;gt; cidades;&lt;br /&gt;&lt;br /&gt;  @DataModelSelection&lt;br /&gt;  private Cidade cidadeSelecionada;&lt;br /&gt;&lt;br /&gt;  @Logger&lt;br /&gt;  private Log log;&lt;br /&gt;&lt;br /&gt;  @In&lt;br /&gt;  private EntityManager entityManager;&lt;br /&gt;&lt;br /&gt;  public Cidade getCidade() {&lt;br /&gt;return cidade;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Factory("cidades")&lt;br /&gt;  public void inicializaCidades() {&lt;br /&gt;log.info("Inicializa cidades");&lt;br /&gt;this.cidades = entityManager.createQuery("from Cidade").getResultList();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String salvar() {&lt;br /&gt;log.info("Salver cidade nome = #", cidade);&lt;br /&gt;entityManager.merge(cidade);&lt;br /&gt;this.cidade = new Cidade();&lt;br /&gt;inicializaCidades();&lt;br /&gt;return "cidade.xhtml";&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String remover() {&lt;br /&gt;log.info("Remover cidade id = #", cidadeSelecionada.getId());&lt;br /&gt;entityManager.remove(cidadeSelecionada);&lt;br /&gt;inicializaCidades();&lt;br /&gt;return "cidade.xhtml";&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void editar() {&lt;br /&gt;this.cidade = cidadeSelecionada;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;4 – Visão&lt;br /&gt;Vamos criar agora uma página para o cadastro e exibição das cidades.&lt;br /&gt;Crie uma página xhtml.&lt;br /&gt;Para vacilitar vamos copiar a home.xhtml e colar ela com o nome cidade.xhtml.&lt;br /&gt;&lt;br /&gt;Remova o rich panel todo:&lt;br /&gt;&amp;lt;rich:panel&amp;gt; até &amp;lt;/rich:panel&amp;gt; (inclusive)&lt;br /&gt;&lt;br /&gt;Coloque um formulário:&lt;br /&gt;&amp;lt;h:form&amp;gt; &amp;lt;/h:form&amp;gt;&lt;br /&gt;&lt;br /&gt;Dentro do formulário coloque um grid com 3 colunas:&lt;br /&gt;&amp;lt;h:panelgrid columns="”3”"&amp;gt; &amp;lt;/h:panelgrid&amp;gt;&lt;br /&gt;&lt;br /&gt;Dentro do grid insira um campo oculto com o id da cidade, um campo para o nome da cidade e um botão para salvar:&lt;br /&gt;&lt;br /&gt;&amp;lt;h:inputhidden value="#{cidadeAction.cidade.id}"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;s:decorate template="/layout/edit.xhtml"&amp;gt;&lt;br /&gt;   &amp;lt;ui:define name="label"&amp;gt;Nome:&amp;lt;/ui:define&amp;gt;&lt;br /&gt;   &amp;lt;h:inputtext value="#{cidadeAction.cidade.nome}" required="true"&amp;gt;&lt;br /&gt;  &amp;lt;/h:inputtext&amp;gt;&amp;lt;/s:decorate&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;h:commandbutton value="Salvar" actionlistener="#{cidadeAction.salvar}"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aqui usamos um componente decorate apontando para o template edit.xhtml.&lt;br /&gt;Depois falarei mais sobre o facelets e como criar componentes.&lt;br /&gt;Mas vale a penda dar uma olhada nesse arquivo.&lt;br /&gt;Ele é um componente formado por um label e um espaço para incluir o componente de entrada de dados.&lt;br /&gt;Que facilita na criação de um componente de entra e nos estilos e validações.&lt;br /&gt;Podemos observar que este componente tem estilo para quando marcado com required que é o nosso caso.&lt;br /&gt;Ele faz a validação integrada com as nossas anotações no modelo.&lt;br /&gt;Como podemos ver tentando cadastrar usando o campo nome em branco ou digitando menos de 3 caracteres.&lt;br /&gt;E já exibe a mensagem de erro ao cliente.&lt;br /&gt;&lt;br /&gt;Para verificarmos se o registro foi gravado vamos colocar em baixo na página uma tabela com as cidades gravadas no banco.&lt;br /&gt;Usando o componente &amp;lt;rich:datatable&amp;gt; vamos recuperar as cidades.&lt;br /&gt;&amp;lt;rich:datatable value="#{cidades}" var="c" style="width: 60%"&amp;gt;&lt;br /&gt;&lt;br /&gt;Preenchemos as colunas com o componente &amp;lt;rich:column&amp;gt;.&lt;br /&gt;Colocamos um titulo na coluna usamos &amp;lt;f:face name="”header”"&amp;gt;&lt;br /&gt;&amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;ID&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:outputtext value="#{c.id}"&amp;gt;&lt;br /&gt;  &amp;lt;/h:outputtext&amp;gt;&amp;lt;/rich:column&amp;gt;&lt;br /&gt;&lt;br /&gt;E dois link, um para edição e outro para remoção do registro.&lt;br /&gt;&amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;Editar&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:commandlink action="#{cidadeAction.editar}"&amp;gt;&lt;br /&gt;    &amp;lt;h:outputtext value="Editar"&amp;gt;&lt;br /&gt;   &amp;lt;/h:outputtext&amp;gt;&amp;lt;/h:commandlink&amp;gt;&lt;br /&gt;  &amp;lt;/rich:column&amp;gt;&lt;br /&gt;  &amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;Remover&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:commandlink action="#{cidadeAction.remover}"&amp;gt;&lt;br /&gt;    &amp;lt;h:outputtext value="Remover"&amp;gt;&lt;br /&gt;   &amp;lt;/h:outputtext&amp;gt;&amp;lt;/h:commandlink&amp;gt;&lt;br /&gt;  &amp;lt;/rich:column&amp;gt;&lt;br /&gt;&lt;br /&gt;A pagina cidade.xhtml fica o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ui:composition xmlns="http://www.w3.org/1999/xhtml" s="http://jboss.com/products/seam/taglib" ui="http://java.sun.com/jsf/facelets" f="http://java.sun.com/jsf/core" h="http://java.sun.com/jsf/html" rich="http://richfaces.org/rich" template="layout/template.xhtml"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;ui:define name="body"&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;h1&amp;gt;Cidade&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h:form&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;h:panelgrid columns="3"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;h:inputhidden value="#{cidadeAction.cidade.id}"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;s:decorate template="/layout/edit.xhtml"&amp;gt;&lt;br /&gt;   &amp;lt;ui:define name="label"&amp;gt;Nome:&amp;lt;/ui:define&amp;gt;&lt;br /&gt;   &amp;lt;h:inputtext value="#{cidadeAction.cidade.nome}" required="true"&amp;gt;&lt;br /&gt;  &amp;lt;/h:inputtext&amp;gt;&amp;lt;/s:decorate&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;h:commandbutton value="Salvar" actionlistener="#{cidadeAction.salvar}"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/h:commandbutton&amp;gt;&amp;lt;/h:inputhidden&amp;gt;&amp;lt;/h:panelgrid&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;rich:datatable value="#{cidades}" var="c" style="width: 60%"&amp;gt;&lt;br /&gt;  &amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;ID&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:outputtext value="#{c.id}"&amp;gt;&lt;br /&gt;  &amp;lt;/h:outputtext&amp;gt;&amp;lt;/rich:column&amp;gt;&lt;br /&gt;  &amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;Nome&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:outputtext value="#{c.nome}"&amp;gt;&lt;br /&gt;  &amp;lt;/h:outputtext&amp;gt;&amp;lt;/rich:column&amp;gt;&lt;br /&gt;  &amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;Editar&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:commandlink action="#{cidadeAction.editar}"&amp;gt;&lt;br /&gt;    &amp;lt;h:outputtext value="Editar"&amp;gt;&lt;br /&gt;   &amp;lt;/h:outputtext&amp;gt;&amp;lt;/h:commandlink&amp;gt;&lt;br /&gt;  &amp;lt;/rich:column&amp;gt;&lt;br /&gt;  &amp;lt;rich:column&amp;gt;&lt;br /&gt;   &amp;lt;f:facet name="header"&amp;gt;Remover&amp;lt;/f:facet&amp;gt;&lt;br /&gt;   &amp;lt;h:commandlink action="#{cidadeAction.remover}"&amp;gt;&lt;br /&gt;    &amp;lt;h:outputtext value="Remover"&amp;gt;&lt;br /&gt;   &amp;lt;/h:outputtext&amp;gt;&amp;lt;/h:commandlink&amp;gt;&lt;br /&gt;  &amp;lt;/rich:column&amp;gt;&lt;br /&gt; &amp;lt;/rich:datatable&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/ui:define&amp;gt;&lt;br /&gt;&amp;lt;/ui:composition&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;E para completar vamos colocar um link para nossa página no menu.&lt;br /&gt;Abra o arquivo menu.xhtml e acrescente um link para a nossa página.&lt;br /&gt;  &amp;lt;rich:toolbargroup&amp;gt;&lt;br /&gt;      &amp;lt;h:outputtext value="#{projectName}:"&amp;gt;&lt;br /&gt;      &amp;lt;s:link id="menuHomeId" view="/home.xhtml" value="Home" propagation="none"&amp;gt;&lt;br /&gt;      &amp;lt;s:link view="/cidade.xhtml" value="Cidade"&amp;gt;&lt;br /&gt;  &amp;lt;/s:link&amp;gt;&amp;lt;/s:link&amp;gt;&amp;lt;/h:outputtext&amp;gt;&amp;lt;/rich:toolbargroup&amp;gt;&lt;br /&gt;&lt;br /&gt;5 – Testando&lt;br /&gt;Vamos ver como reiniciar a aplicação sem precisar reiniciar todo o servidor.&lt;br /&gt;Servers -&amp;gt; Jboss 5.1  -&amp;gt; Clean -&amp;gt; OK&lt;br /&gt;Pronto a aplicação vai ser reiniciada.&lt;br /&gt;Aguarde alguns segundos.&lt;br /&gt;Abra o browser e acese:&lt;br /&gt;http://localhost:8080/locar/&lt;br /&gt;Clique no link Cidade no menu.&lt;br /&gt;Pronto o primeiro CRUD com o Seam.&amp;lt;/f:face&amp;gt;&amp;lt;/rich:column&amp;gt;&amp;lt;/rich:datatable&amp;gt;&amp;lt;/rich:datatable&amp;gt;&amp;lt;/h:commandbutton&amp;gt;&amp;lt;/h:inputhidden&amp;gt;&amp;lt;/cidade&amp;gt;&amp;lt;/cidade&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-7790943780768056987?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/7790943780768056987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=7790943780768056987' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/7790943780768056987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/7790943780768056987'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2010/09/crud-seam.html' title='CRUD Seam'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-3838832242273630252</id><published>2010-08-31T19:19:00.004-03:00</published><updated>2010-08-31T21:25:41.019-03:00</updated><title type='text'>Projeto Seam</title><content type='html'>Projeto Seam&lt;br /&gt;1 – Introdução&lt;br /&gt;Com o ambiente criado e configurado.&lt;br /&gt;Partimos para a criação do projeto.&lt;br /&gt;Abra o eclipse e siga os passos a seguir.&lt;br /&gt;&lt;br /&gt;2 – Criação de um projeto&lt;br /&gt;Novo projeto Seam&lt;br /&gt;File → New → Seam Web Project&lt;br /&gt;&lt;br /&gt;Seam Web Project&lt;br /&gt;Project name: locar&lt;br /&gt;Use default location: yes (marcado)&lt;br /&gt;Java Runtime: Jboss 5.1 Runtime&lt;br /&gt;Target Server: Jboss 5.1 Runtime Server&lt;br /&gt;Configuration: Dynamic Web Project with Seam 2.2&lt;br /&gt;Next → Next → Next → Next&lt;br /&gt;&lt;br /&gt;Seam Facet&lt;br /&gt;General&lt;br /&gt;Seam runtime: jboss-seam-2.2.0.GA&lt;br /&gt;Deploy as: EAR&lt;br /&gt;EJB project name: local-ejb&lt;br /&gt;EAR project name: local-ear&lt;br /&gt;&lt;br /&gt;Database&lt;br /&gt;Database Type: HSQL&lt;br /&gt;Connection profile: locarDB&lt;br /&gt;Conection Profile&lt;br /&gt;New&lt;br /&gt;Conection Profile Types: HSQLDB&lt;br /&gt;Name: locarDB&lt;br /&gt;Next&lt;br /&gt;Database: locarDB&lt;br /&gt;Database Location: locarDB&lt;br /&gt;User name: sa&lt;br /&gt;Password: &lt;vazio&gt; (não precisar por password)&lt;br /&gt;URL: jdbc:hsqldb:locarDB&lt;br /&gt;Next → Finish&lt;br /&gt;&lt;br /&gt;Code Generation&lt;br /&gt;Session Bean Package Name: br.com.locar.session&lt;br /&gt;Entity Bean Package Name: br.com.locar.session&lt;br /&gt;Create Test Projetc: yes (marcado)&lt;br /&gt;Test Project Name: locar-test&lt;br /&gt;Test Package Name: br.com.locar.test&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;3 – Teste do Projeto&lt;br /&gt;&lt;br /&gt;Iniciando o JBoss&lt;br /&gt;Servers → Jboss 5.1 Runtime Server&lt;br /&gt;Clica com o direito e Start&lt;br /&gt;&lt;br /&gt;Acessando&lt;br /&gt;Abra um navegador e digite:&lt;br /&gt;http://localhost:8080/locar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-3838832242273630252?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/3838832242273630252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=3838832242273630252' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/3838832242273630252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/3838832242273630252'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2010/08/projeto-seam.html' title='Projeto Seam'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-1000863169122847802</id><published>2010-08-30T20:03:00.001-03:00</published><updated>2010-08-31T19:50:24.081-03:00</updated><title type='text'>Ambiente Seam</title><content type='html'>Ambiente Seam&lt;br /&gt;&lt;br /&gt;1 - Introdução&lt;br /&gt;Aproveitando a ideia de um post antigo meu, vou descrever como montar o ambiente para se trabalhar com o JBoss Seam e o Eclipse Helios.&lt;br /&gt;&lt;br /&gt;2 - Requisitos&lt;br /&gt;- JDK 1.6&lt;br /&gt;No meu caso estou usando o Mac OS X 10.6.4 então não será necessário a instalação do jdk.&lt;br /&gt;Porque o mesmo já vem instalado.&lt;br /&gt;Mas para os outros sistemas operacionais é só baixar no link a baixo de acordo com o sistema operacional:&lt;br /&gt;http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html&lt;br /&gt;&lt;br /&gt;- Eclipse 3.6&lt;br /&gt;Eclipse IDE for Java EE Developers, vale a pena lembrar que com o Snow Leopard você pode utilizar a versão 64 bits.&lt;br /&gt;Escolha a versão de acordo com o seu sistema operacional.&lt;br /&gt;Se não sabe se seu sistema é 64 bits, é só baixar o 32 bits que vai funcionar do mesmo jeito.&lt;br /&gt;Segue o link:&lt;br /&gt;http://www.eclipse.org/downloads/&lt;br /&gt;&lt;br /&gt;- JBoss AS 5.1.0.GA&lt;br /&gt;Como servidor de aplicativos vou usar o JBoss AS 5.1.0 GA.&lt;br /&gt;http://www.jboss.org/jbossas/downloads/&lt;br /&gt;&lt;br /&gt;- JBoss Seam 2.0.2.GA&lt;br /&gt;Assim como o servidor de aplicação vou usar uma versão estável do Seam.&lt;br /&gt;http://seamframework.org/Seam2/Downloads&lt;br /&gt;&lt;br /&gt;- JBoss Tools 3.2&lt;br /&gt;O JBoss Tools não precisa ser baixado pode ser instalado utilizando o próprio eclipse, através do updte site segue o link abaixo.&lt;br /&gt;Mais a frente falo mais sobre a instalação.&lt;br /&gt;http://download.jboss.org/jbosstools/updates/development/&lt;br /&gt;&lt;br /&gt;3 - Instalação&lt;br /&gt;1 - JDK&lt;br /&gt;No Windows basta clicar no .exe após o download.&lt;br /&gt;E ai é padrão Windows next → next → accept → finish.&lt;br /&gt;No Mac não precisa e no Linux os fominhas de Linux sempre tem a manha!!! :)&lt;br /&gt;Para mais informações acesse o site:&lt;br /&gt;http://www.oracle.com/technetwork/java/javase/index-137561.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2 - Pasta ambiente&lt;br /&gt;Criar uma pasta para o ambiente&lt;br /&gt;Vou criar uma pasta para a instalação do ambiente somente para facilitar na organização.&lt;br /&gt;Crie uma pasta chamada ambiente.&lt;br /&gt;No diretório:&lt;br /&gt;(Mac) /Applications&lt;br /&gt;(Windows) C:&lt;br /&gt;(Linux) /usr&lt;br /&gt;O caminho ficará o seguinte:&lt;br /&gt;(Mac) /Applications /ambiente&lt;br /&gt;(Windows) C: \ambiente&lt;br /&gt;(Linux) /usr /ambiente&lt;br /&gt;&lt;br /&gt;3 - Eclipse&lt;br /&gt;Descompacte o eclipse na pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte:&lt;br /&gt;(Mac) /Applications /ambiente/eclipse&lt;br /&gt;(Windows) C: \ambiente\eclipse&lt;br /&gt;(Linux) /usr /ambiente/eclipse&lt;br /&gt;&lt;br /&gt;4 - JBoss AS&lt;br /&gt;Descompacte o JBoss AS na pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte:&lt;br /&gt;(Mac) /Applications /ambiente/jboss-5.1.0.GA&lt;br /&gt;(Windows) C: \ambiente\jboss-5.1.0.GA&lt;br /&gt;(Linux) /usr /ambiente/jboss-5.1.0.GA&lt;br /&gt;&lt;br /&gt;5 - JBoss Seam&lt;br /&gt;Descompacte o JBoss Seam na pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte:&lt;br /&gt;(Mac) /Applications /ambiente/jboss-seam-2.2.0.GA&lt;br /&gt;(Windows) C: \ambiente\jboss-seam-2.2.0.GA&lt;br /&gt;(Linux) /usr /ambiente/jboss-seam-2.2.0.GA&lt;br /&gt;&lt;br /&gt;6 - Pasta workspace&lt;br /&gt;Crie uma pasta workspace dentro do diretório ambiente.&lt;br /&gt;6.1 - Quando o eclipse iniciar ele irá perguntar a área de trabalho padrão (wokspace defaul).&lt;br /&gt;Aponte para este diretório.&lt;br /&gt;O caminho ficará o seguinte:&lt;br /&gt;(Mac) /Applications /ambiente/workspace&lt;br /&gt;(Windows) C: \ambiente\workspace&lt;br /&gt;(Linux) /usr /ambiente/workspace&lt;br /&gt;&lt;br /&gt;7 - JBoss Tools&lt;br /&gt;Abra o eclipse. (Instalação 6.1).&lt;br /&gt;Adicione o novo site para baixar o plugin para o eclipse&lt;br /&gt;Help → Install New Software... → Add...&lt;br /&gt;Name: JbossTools&lt;br /&gt;Location: http://download.jboss.org/jbosstools/updates/development/&lt;br /&gt;Selecione o site que deseja utilizar.&lt;br /&gt;Work with: JbossTools&lt;br /&gt;Marque: All Jboss Tools 3.2.0.M1&lt;br /&gt;Para saber mais acesse o site:&lt;br /&gt;http://www.jboss.org/tools/download/installation/update_3_2.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4 – Configuração&lt;br /&gt;&lt;br /&gt;1 – Jboss AS&lt;br /&gt;Window → Preferences → Server → Installed Runtimes → Add&lt;br /&gt;Jboss Community → JBoss 5.1 Runtime&lt;br /&gt;Marque a opção Create a new local server&lt;br /&gt;Next&lt;br /&gt;Name: Jboss 5.1 Runtime&lt;br /&gt;Home diretory: &lt;diretorio do="" jboss=""&gt; (Instalação 4)&lt;br /&gt;Ex: Home diretory: /Applications /ambiente/jboss-5.1.0.GA&lt;br /&gt;JRE: Default&lt;br /&gt;Configuration: default&lt;br /&gt;Next → Finish → OK&lt;br /&gt;&lt;br /&gt;2 – Driver JDBC&lt;br /&gt;De acordo com o seu banco de dados, baixe o driver JDBC .&lt;br /&gt;(MySQL) http://dev.mysql.com/downloads/connector/j/3.1.html&lt;br /&gt;(PostgreSQL) http://jdbc.postgresql.org/download.html&lt;br /&gt;(HSQLDB) https://sourceforge.net/projects/hsqldb/files/&lt;br /&gt;Copie um jar para o seguinte diretório do Jboss:&lt;br /&gt;(Mac) /Applications /ambiente/jboss-5.1.0.GA/server/default/lib&lt;br /&gt;(Windows) C: \ambiente\jboss-5.1.0.GA\server\default\lib&lt;br /&gt;(Linux) /usr /ambiente/jboss-5.1.0.GA/server/default/lib&lt;br /&gt;&lt;br /&gt;3 – Jboss Seam&lt;br /&gt;Window → Preferences → Jboss Tools → Web → Seam → Add&lt;br /&gt;Home Folder: &lt;diretorio do="" seam=""&gt; (Instalação 5)&lt;br /&gt;Ex: Home diretory: /Applications /ambiente/jboss-seam-2.2.0.GA&lt;br /&gt;Name: jboss-seam-2.2.0.GA&lt;br /&gt;Version: 2.2&lt;br /&gt;Finish → OK&lt;br /&gt;&lt;br /&gt;4 – Conectividade&lt;br /&gt;Window → Preferences → Data Management → Driver Definitions → Add...&lt;br /&gt;Name/Type&lt;br /&gt;Driver Name: HSQLDB JDBC Driver&lt;br /&gt;Driver Type: HSQLDB JDBC Driver&lt;br /&gt;Jar List&lt;br /&gt;Remova o jar atual.&lt;br /&gt;E adicione um driver JDBC valido para o banco.&lt;br /&gt;Nesse caso hsqldb.jar.&lt;br /&gt;Add JAR/Zip...&lt;br /&gt;E aponte para o arquivo hsqldb.jar.&lt;br /&gt;Properties&lt;br /&gt;Connection URL: jdbc:hsqldb:MyDB&lt;br /&gt;Database Name: SAMPLE&lt;br /&gt;User ID: sa&lt;br /&gt;OK → OK&lt;br /&gt;&lt;/diretorio&gt;&lt;/diretorio&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-1000863169122847802?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/1000863169122847802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=1000863169122847802' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/1000863169122847802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/1000863169122847802'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2010/08/ambiente-seam.html' title='Ambiente Seam'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-3712976575315544282</id><published>2010-01-18T22:30:00.000-03:00</published><updated>2010-01-18T22:32:41.481-03:00</updated><title type='text'>O retorno</title><content type='html'>Depois de passar mais de um ano sem entrar no blog.&lt;br /&gt;Nem sabia que tinha ajudado alguem com esse post.&lt;br /&gt;Achei que seria um tutorial que eu poderia precisar um dia.&lt;br /&gt;Vi que pude dar uma pequena luz para a galera.&lt;br /&gt;Pois sendo assim.&lt;br /&gt;Vou atualizar o post.&lt;br /&gt;E tentar colocar mais novidades.&lt;br /&gt;Abs,&lt;br /&gt;&lt;br /&gt;Sílvio Netto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-3712976575315544282?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/3712976575315544282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=3712976575315544282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/3712976575315544282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/3712976575315544282'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2010/01/o-retorno.html' title='O retorno'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-8593924992912703134</id><published>2008-06-13T13:04:00.000-03:00</published><updated>2008-06-13T13:08:47.282-03:00</updated><title type='text'>Seam Security</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Segurança&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A segurança do sistema pode ser feita pela API de segurança do SEAM (Seam Security).&lt;br /&gt;Que fornece autenticação e autorização tanto no domínio quanto nas páginas.&lt;br /&gt;A segurança do Seam fornece um modo simples e outro avançado de operação.&lt;br /&gt;O modo avançado suporta serviço de autenticação e segurança baseada em checagem de perfil usando o JBoss Rules.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Autenticação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As características da autenticação fornecida pelo Seam Security são construidas sobre JAAS(Java Authentication e Authorization Service), e como tal fornece uma API robusta e altamente configurável para autenticação de usuário. Entretanto, para exigencias menos complexas de autenticação o Seam oferece um método muito mais simplificado de autenticação que oculta a complexidade do JAAS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Autorização&lt;/span&gt;&lt;br /&gt;São várias as características fornecidas pelo Seam Security para assegurar o acesso a componentes, métodos e páginas.&lt;br /&gt;A anotação @Restrict pode ser usado a nível de classe ou método.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segurança na interface com o usuário&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O usuário não deve ver opções que ele não tem privilégio de acesso.&lt;br /&gt;O Seam Security permite renderização condicional de seções de uma página ou controles individuais baseado nos privilégios do usuário usando expressões EL.&lt;br /&gt;Ex:&lt;br /&gt;&lt;h:form class="loginForm" rendered="#{identity.loggedIn}"&gt;&lt;br /&gt;Só exibe o formulário se o usuário estiver logado.&lt;br /&gt;&lt;br /&gt;&lt;h:outputlink action="#{reports.listManagerReports}" rendered="#{s:hasRole('admin')}"&gt;&lt;br /&gt;        Manager Reports&lt;br /&gt;&lt;/h:outputLink&gt;&lt;br /&gt;Só exibe o link se o usuário tiver o perfil “admin”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segurança nas páginas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Deve ser usado o arquivo pages.xml para se fazer a segurança de páginas.&lt;br /&gt;Para implementar a segurança basta incluir o elemento &lt;restrict/&gt; na página que requer segurança.&lt;br /&gt;Ex:&lt;br /&gt;&lt;page id="/reports.xhtml"&gt;&lt;br /&gt;        &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;&lt;br /&gt;&lt;/page&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSL Security&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Seam inclui um suporte básico para servir páginas sensitivas via o protocolo HTTPS.&lt;br /&gt;Sendo facilmente configurado usando o “schema” no arquvo pages.xml.&lt;br /&gt;Ex:&lt;br /&gt;&lt;page id="/login.xhtml" scheme="https"&gt;&lt;br /&gt;&lt;br /&gt;Esta configuração será automaticamente usada por ambos s:link e s:button. Que irá renderizar o link usando o protocolo correto. Baseado no exemplo anterior, o link a seguir irá usar o protocolo HTTPS porque /login.xhtml está configurado para usar.&lt;br /&gt;Ex:&lt;br /&gt;&lt;s:link view="/login.xhtml" value="Login"&gt;&lt;br /&gt;&lt;br /&gt;Para manter o sistema menos vulnerável à sniffing de session id ou a vazamento de dados sensíveis das páginas usando HTTPS para outras páginas usando HTTP.&lt;br /&gt;Deve ser configurado o arquivo components.xml para invalidar a sessão corrente HTTP cada vez que mudar o esquema. Adicionando a linha seguinte:&lt;br /&gt;&lt;core:servlet-session change="true"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-8593924992912703134?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/8593924992912703134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=8593924992912703134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/8593924992912703134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/8593924992912703134'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2008/06/seam-security.html' title='Seam Security'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-6888179387303801864</id><published>2008-06-11T13:55:00.001-03:00</published><updated>2010-09-03T09:35:17.000-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><title type='text'>Tutorial JBoss Seam</title><content type='html'>Nesse tutorial vou mostrar como instalar o eclipse, o JBoss AS, o JBoss Seam, JBoss Tools e criar uma aplicação usando essas ferramentas.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Tutorial JBoss Seam&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1 – Introdução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O JBoss Seam é uma emenda como o próprio nome diz, sendo um framework que não consta na especificação oficial JEE 5.&lt;br /&gt;Utilizando a estrutura do Java EE 5 o JBoss Seam é um facilitador da programação para todos os componentes em uma aplicação web.&lt;br /&gt;Focando a produtividade do programador e a escalabilidade da aplicação.&lt;br /&gt;Este tutorial irá explicar como montar o ambiente para desenvolvimento usando o Seam.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 – Requisitos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JDK (jdk-6u6-windows-i586-p). http://java.sun.com/javase/downloads/index.jsp&lt;br /&gt;Eclipse (eclipse-jee-europa-winter-win32) http://www.eclipse.org/downloads/&lt;br /&gt;JBoss AS (jboss-4.2.2.GA) http://www.jboss.org/jbossas/downloads/&lt;br /&gt;JBoss Seam (jboss-seam-2.0.2.GA) http://www.seamframework.org/Download&lt;br /&gt;JBoss Tools (JBossTools-2.0.1.GA-ALL-win32) http://www.jboss.org/tools/download/index.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 – Instalação&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Instalar o JDK.&lt;br /&gt;Para instalar o JDK basta rodar o executável.&lt;br /&gt;Segue o link para maiores esclarecimentos:&lt;br /&gt;http://java.sun.com/javase/6/webnotes/install/index.html&lt;br /&gt;&lt;br /&gt;2 – Criar uma pasta para o ambiente&lt;br /&gt;Vou criar uma pasta para a instalação do ambiente somente para facilitar na organização.&lt;br /&gt;Crie uma pasta chamada ambiente no diretório C:.&lt;br /&gt;O caminho ficará o seguinte: C:\ambiente&lt;br /&gt;&lt;br /&gt;3 – Instalar o eclipse&lt;br /&gt;O eclipse pode ser baixando em uma versão .zip.&lt;br /&gt;Descompacte o eclipse dentro da pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte: C:\ambiente\eclipse&lt;br /&gt;&lt;br /&gt;4 – Instalar JBoss AS&lt;br /&gt;Descompacte o JBoss AS dentro da pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte: C:\ambiente\jboss-4.2.2.GA&lt;br /&gt;&lt;br /&gt;5 – Instalar JBoss Seam&lt;br /&gt;Descompacte o JBoss Seam dentro da pasta ambiente.&lt;br /&gt;O caminho ficará o seguinte: C:\ambiente\jboss-seam-2.0.2.GA&lt;br /&gt;&lt;br /&gt;6 – Instalar o JBoss Tools&lt;br /&gt;Descompacte o JBoss Tools dentro da pasta do ambiente.&lt;br /&gt;O caminho para extrair será o seguinte: C:\ambiente&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4 – Configuração&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 – Configurar o Eclipse&lt;br /&gt;Criar uma pasta workspace dentro de ambiente.&lt;br /&gt;O caminho ficará o seguinte:  C:\ambiente\workspace&lt;br /&gt;Executar o eclipse c:\ambiente\eclipse\eclipse.&lt;br /&gt;Trocar o workspace para c:\ambiente\workspace&lt;br /&gt;Alterar a perspectiva para Seam.&lt;br /&gt;Window → Open Perspective → Other → Seam.&lt;br /&gt;&lt;br /&gt;2 – Configurar o JBoss AS&lt;br /&gt;Window → Preferences → Server → Installed Runtimes → Add&lt;br /&gt;JBoss, a division of Red Hat → JBoss 4.2 Runtime&lt;br /&gt;Altere o home directory para: C:\ambiente\jboss-4.2.2.GA&lt;br /&gt;Configuration: default.&lt;br /&gt;&lt;br /&gt;3 – Configurar a visualização do servidor&lt;br /&gt;JBoss Server View → Clicar com o direito → New Server&lt;br /&gt;JBoss AS 4.2 → Next → Next → Finish&lt;br /&gt;&lt;br /&gt;4 – Configurar Conectividade&lt;br /&gt;Window → Preferences → Connectivity → Driver Definitions&lt;br /&gt;Hipersonic DB → 1.8 → Add&lt;br /&gt;Hipersonic DB → 1.8 → Hypersonic DB&lt;br /&gt;Driver File(s):&lt;br /&gt;hsqldb.jar → Remove Jar/Zip&lt;br /&gt;Add Jar/Zip C:\ambiente\jboss-4.2.2.GA\server\default\lib\hsqldb.jar&lt;br /&gt;OK&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5 – Criação de um projeto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 – Criar um projeto&lt;br /&gt;File → New → Seam Web Project&lt;br /&gt;Name: agenda&lt;br /&gt;Configurations: Dynamic Web Project with Seam 2.0&lt;br /&gt;Next → Next → Next → Next&lt;br /&gt;Seam runtime: Add&lt;br /&gt;Home Folder: C:\ambiente\jboss-seam-2.0.2.GA&lt;br /&gt;Deploy as: WAR&lt;br /&gt;Database Type: HSQL&lt;br /&gt;Connection profile: HSQL&lt;br /&gt;Finish&lt;br /&gt;&lt;br /&gt;2 – Adicionar o projeto ao JBoss&lt;br /&gt;No JBoss Server View&lt;br /&gt;Clique com o direito em JBoss 4.2 Server → Add and remove projects&lt;br /&gt;Agenda → Add → Finish&lt;br /&gt;&lt;br /&gt;3 – Iniciar o JBoss&lt;br /&gt;Clique com o direito em JBoss 4.2 Server → Publish&lt;br /&gt;Clique com o direito em JBoss 4.2 Server → Start&lt;br /&gt;&lt;br /&gt;4 – Acessar o sistema&lt;br /&gt;Abra um browser e digite: http://localhost:8080/agenda&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6 – Conclusão&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Com isso temos um ambiente de desenvolvimento gratuito.&lt;br /&gt;E com o poder do Eclipse, JBoss AS, JBoss Seam e JBoss Tools.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7 - Atualização&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para uma versão mais nova do Tutorial JBoss Seam veja o post:&lt;br /&gt;http://silvionetto.blogspot.com/2010/08/ambiente-seam.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-6888179387303801864?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/6888179387303801864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=6888179387303801864' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/6888179387303801864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/6888179387303801864'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2008/06/tutorial-jboss-seam.html' title='Tutorial JBoss Seam'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529508849766213692.post-8516761642949413827</id><published>2008-06-11T13:33:00.000-03:00</published><updated>2008-06-11T13:38:05.780-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='início'/><title type='text'>Início do Blog</title><content type='html'>Nunca imaginava ter um blog.&lt;br /&gt;Mas aqui estou eu, escrevendo na net.&lt;br /&gt;Espero poder ajudar com alguns textos que estarei postando aqui.&lt;br /&gt;Abraços,&lt;br /&gt;&lt;br /&gt;Sílvio Netto&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529508849766213692-8516761642949413827?l=silvionetto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silvionetto.blogspot.com/feeds/8516761642949413827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529508849766213692&amp;postID=8516761642949413827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/8516761642949413827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529508849766213692/posts/default/8516761642949413827'/><link rel='alternate' type='text/html' href='http://silvionetto.blogspot.com/2008/06/incio-do-blog.html' title='Início do Blog'/><author><name>Silvio Netto</name><uri>http://www.blogger.com/profile/09677061989379673643</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_FtLxy3AS9BA/THw4Y_1hxNI/AAAAAAAAAUs/f2bUTu-cUR8/S220/images.jpg'/></author><thr:total>0</thr:total></entry></feed>
