Uma aplicação Java EE 6 no Eclipse Helios

Há uma semana atrás recebi mais uma solicitação relacionada à Java EE 6, fruto dos artigos que publiquei na Java Magazine, edições 80, 81 e 82. O leitor Carlos fazia o seguinte pedido:

Você poderia me ajudar em como fazer o projeto do SisContrAm que veio na revista Java Magazine numero 82 funcionar no Eclipse? Tentei refazer no Eclipse mas não deu certo.

Veja a Resposta

Usando MySQL com GlassFishV3

Esta semana recebi mais uma mensagem de um leitor da revista Java Magazine, Marcos:

Comprei as edições 80, 81 e 82 da Java Magazine para eu poder aprender a utilizar o Java EE 6. Mas estou com muitas dúvidas.

1 – Criei o banco de dados direitinho e fui implementar a classe de entidade “ChamadaEmergencia”. Segui direitinho mas o NetBeans deu um código nada a ver com o que o senhor implementou na revista. A pergunta é: por que ele criou este código tão diferente?

package br.com.javamagazine.siscontram.dominio;

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

/**
 *
 * @author Marcos
 */

@Entity
public class ChamadaEmergencia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    public Long getId() {
        return id;
    }

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

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ChamadaEmergencia)) {
            return false;
        }
        ChamadaEmergencia other = (ChamadaEmergencia) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.javamagazine.siscontram.dominio.ChamadaEmergencia[id=" + id + "]";
    }
}

2 – Em seguida, resolvi fazer diferente, baixei os fontes que o senhor liberou para download, puxei para dentro do NetBeans e executei. O browser abriu com a descrição “SisContrAm” e logo abaixo o link “Cadastro de Ambulâncias”. No entanto quando eu clico no link dá o seguinte erro:

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
Error Code: 0
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:138)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:94)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:584)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369)
    ... 132 more
Caused by: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:112)
    at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:126)
    ... 137 more

Veja a Resposta

Mostrando objetos em um campo JSF tipo selectOne

Ontem recebi a seguinte mensagem de um leitor da revista Java Magazine, chamado Marvin:

Acompanhei, recentemente, sua série sobre Java EE 6 na prática. Gostaria de parabenizá-lo, pelo seu material, pois é muito bom e está me ajudando bastante. Contudo, estou enfrentando um problema e gostaria, se possível, de uma ajuda sua.

Vamos supor que eu tenha uma classe de entidades Venda e uma classe de entidade Cliente. Na classe Venda eu tenho um atributo do tipo Cliente, com uma associação ManyToOne. Estou tentando implementar uma tela de cadastro de venda onde será disponibilizado um combo-box com a lista de clientes que o usuário poderá escolher. Como deve implementar esse combo-box no JSF? Consegui implementar um combo-box que traz a lista de um enum, mas com um entity não estou conseguindo.

Você poderia indicar o caminho das pedras?

Veja a Resposta