JBoss Application Server

JBoss é um servidor de aplicação de código fonte aberto baseado na plataforma JEE e implementado completamente na linguagem de programação Java. Em virtude disso, ele pode ser usado em qualquer Sistema Operacional que suporte a referida linguagem. O JBoss Application Server 7, utiliza os arquivos: standalone.bat (ou standalone.sh) para prover a sua inicialização. Os desenvolvedores responsáveis estão em uma empresa de serviços chamada "JBoss Inc." fundada por Marc Fleury, o criador da primeira versão do JBoss. O projeto é custeado por uma rede mundial de colaboradores. Em Abril de 2006, foi anunciada sua aquisição pela Red Hat. A partir da versão 8 o JBoss passou a se chamar Wildfly, além da troca de nomes teve várias melhorias e mudanças como a troca do container que era o JBossWeb para o Undertow. Como alternativa open-source ao JBoss, temos o GlassFish, que é a implementação de referência de toda a especificação Java EE.

Para saber mais...

Estrutura do projeto:
LIBS:
primefaces-5.2-sources.jar
primefaces-5.2.jar	
					
Classe Usuario
	package entity;

	import java.io.Serializable;
	import javax.persistence.Column;
	import javax.persistence.Entity;
	import javax.persistence.GeneratedValue;
	import javax.persistence.GenerationType;
	import javax.persistence.Id;
	import javax.persistence.Table;

	@Entity
	@Table(name="usuario") 
	public class Usuario implements Serializable{
	
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;

	@Column(length=80)
	private String login;

	@Column(length=250)
	private String senha;

	public Usuario() {
	// TODO Auto-generated constructor stub
	}

	public Usuario(Integer id, String login, String senha) {
	super();
	this.id = id;
	this.login = login;
	this.senha = senha;
	}

	public Integer getId() {
	return id;
	}

	public void setId(Integer id) {
	this.id = id;
	}

	public String getLogin() {
	return login;
	}

	public void setLogin(String login) {
	this.login = login;
	}

	public String getSenha() {
	return senha;
	}

	public void setSenha(String senha) {
	this.senha = senha;
	}

	public static long getSerialversionuid() {
	return serialVersionUID;
	}

	}							
					
Classe UserDao
	package persistence;

	import java.util.List;
	import javax.ejb.LocalBean;
	import javax.ejb.Stateless;
	import javax.persistence.EntityManager;
	import javax.persistence.PersistenceContext;
	import entity.Usuario;

	@Stateless
	@LocalBean 
	public class UserDao {

	@PersistenceContext(unitName="jbosschefe")
	EntityManager em; //new nele (injectable)

		public void create(Usuario user) {
		// Critptografia.criptografar(user);
		em.persist(user);
		}

		public void update(Usuario user) {
		em.merge(user);
		}

		public List<Usuario> findAll() {
		return em.createQuery("select u from User as u").
		getResultList();
		}

		public Usuario findByCode(Integer cod) {
		return em.find(Usuario.class, cod);
		}

		public void delete(Integer cod) {
		em.remove(em.getReference(Usuario.class, cod));
		}

		}

Configurar o projeto

Clicar com o botão direito no projeto -> Properties...
Marcar Java Server Faces -> Futher configuration -> Apply...
Marcar JPA -> Futher Configuration...
Irá criar uma pasta chamada META-INF com o arquivo persistence.xml
Configurar persistence.xml
	<?xml version="1.0" encoding="UTF-8"?>
	<persistence version="2.1" 
	<xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
	<xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	<xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
	<persistence-unit name="jbosschefe"> <jta-data-source>java:/jdbc/chefe</jta-data-source>
	<class>entity.Usuario</class>
	<properties>
	<property name="hibernate.hbdl.auto" value="update"></property>
	<property name="hibernate.show_sql" value="true"></property>
	<property name="hibernate.format_sql" value="true"></property>
	</properties>
	</persistence-unit>
	</persistence>
					
Classe ManagerUser
	package manager;

	import java.io.Serializable;
	import java.util.List;
	import javax.faces.application.FacesMessage;
	import javax.faces.bean.ManagedBean;
	import javax.faces.bean.SessionScoped;
	import javax.faces.context.FacesContext;
	import javax.inject.Inject;
	import entity.Usuario;
	import persistence.UserDao;

	@ManagedBean(name="mb")
	@SessionScoped 
	public class ManagerUser implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Inject
	private UserDao dao;

	@Inject
	private Usuario user;

	private List<Usuario> users;

	public ManagerUser() {
	user=new Usuario();
	}

	public void gravar() {
	FacesContext fc = FacesContext.getCurrentInstance();
	try {
	dao.create(user); //gravar
	user = new Usuario(); //limpar os Dados senao setEspaço("")
	fc.addMessage(null, new FacesMessage("Dados Gravados.."));
	}catch(Exception ex) {
	ex.printStackTrace();
	fc.addMessage(null, new FacesMessage(" error.." + ex.getMessage()));
	}

	}

	public Usuario getUser() {
	return user;
	}

	public void setUser(Usuario user) {
	this.user = user;
	}

	public List<Usuario> getUsers() {
	users = dao.findAll();
	return users;
	}

	public void setUsers(List<Usuario> users) {
	this.users = users;
	}

	public UserDao getDao() {
	return dao;
	}

	public void setDao(UserDao dao) {
	this.dao = dao;
	}
	
	}
						
web.xml
	<?xml version="1.0" encoding="UTF-8"?>
	<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
	<display-name>projetoWebServer2</display-name>
	<servlet>
	<servlet-name>Faces Servlet</servlet-name>
	<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
	<servlet-name>Faces Servlet</servlet-name>
	<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener>
	</web-app>
							
beans.xml
	<?xml version="1.0" encoding="UTF-8"?>
	<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
	version="1.1" bean-discovery-mode="annotated">
	</beans>
					

Adicionando o JBoss

Clique no link do Server
Clicar em Red Hat JBoss Middleware -> Red Hat JBoss Enterprise Application Platform 6.1+ -> next
Finish..
Para ver se existe projetos antigos no diretório. Clicar com o botão direito no servidor -> Show In -> File Browser
Apagar todos os projetos nesta pasta
Lembrando que só podemos fazer isso em ambiente de estudos!
Clicar no Jboss com o botão direito -> Start Esperar até inicializar totalmente
Para adicionar o projeto ao JBoss, clicar no Jboss com botão direito -> Add and Remove
Finish... Esperar montar o projeto
Depois que o projeto sincronizar
Clicar no projeto com o botão direito -> Start
Verificar qual a porta que esta sendo utilizada pelo Jboss
No Chrome digitar: localhost:8081 ou 9990. Para abrir o gerenciador do JBoss na web.
Clicar em Administration Console
Digitar o usuario: “coti” e senha “coti@110”
Clicar em Deployments
Adicionar o Mysql 5.1.6
Clicar em add
Clicar em enable -> save
Clicar em configuration
Clicar em add para adicionar o JNDI
Colocar um nome para conexão -> JNDI -> next
java:/jdbc/chefe
Marcar mysql -> Next
Digitar as configurações de conexão -> Test Conection
URL: jdbc:mysql://localhost:3306/chefe?createDatabaseIfNotExist=true
Conexão ok -> ok -> done
sistema.xhtml
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:p="http://primefaces.org/ui"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">
	<h:head>
	</h:head>
	<h:body>
	<p:panel header="Gravar os Dados">
	<h:form id="form1">
	<p:panelGrid columns="2">
	<h:outputText value="Email:"/>
	<p:inputText value="#{mb.user.login}"/>
	<h:outputText value="Senha:"/>
	<p:inputText value="#{mb.user.senha}"/>
	</p:panelGrid>
	<p:commandButton value="Gravar"
	action="#{mb.gravar}"
	update=":form1"
	ajax="true"></p:commandButton>
	<p:growl></p:growl>
	</h:form>
	</p:panel>
	</h:body>
	</html>
			
Adicionar o projeto ao JBoss
Clicar no Jboss com o botão direito -> clicar em add and remove
Adicionar o projeto -> finish
Projeto implantado
Criando a tabela
Implantado no admin do JBoss
Rodando o sistema.xhtml
Gravando
Gravado
No banco