EJB3+Jboss+netBeans = nem diz o que tem de errado =Z

9 respostas
Tchello

Boa tarde galera!

Antes de mais anda quero esclarecer que procurei por toda parte, mas fica muito dificil descobrir onde se esta o erro quando o NetBeans NEM diz o que deu de errado.
Enfim, estou aprendendo agora EJB's e fiz um pequeno exemplo com Entity e um EntityManager.
Configurei as classes, o banco de dados, os arquivos XML e o JBoss..
Ok, vou rodar, ele inicia o JBoss e depois disse que foi tudo um sucesso, mas não persistiu nada =/
Alguém pode dar uma luz?

Seguem os arquivos:

Entity:
package EJBClasses;

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.SequenceGenerator;
import javax.persistence.Table;

/**
 *
 * @author Tchello
 */
@Entity
@Table(name="endereco")
public class Endereco implements Serializable {
    
    @Id
    @SequenceGenerator(sequenceName="endereco_seq",name="endereco_generator")
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="endereco_generator")
    @Column(name="codigo")
    private Integer codigo;
    
    @Column(name="rua")
    private String rua;
    
    @Column(name="numero")
    private Integer numero;
    
    @Column(name="bairro")
    private String bairro;
    
    @Column(name="cep")
    private String cep;
    
    @Column(name="cidade")
    private String cidade;
    
    @Column(name="estado")
    private String estado;
    
    @Column(name="pais")
    private String pais;
    
    /** Creates a new instance of Endereco */
    public Endereco() {
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public Integer getNumero() {
        return numero;
    }

    public void setNumero(Integer numero) {
        this.numero = numero;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }
    
}
Entity Manager:
package EJBClasses;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;

/**
 *
 * @author Tchello
 */
public class EntityInstructorClient {
    
    
    
    @PersistenceContext(unitName="myunit", type=PersistenceContextType.TRANSACTION)
    private EntityManager em;
    
    public void salvar(){
        Endereco endereco = new Endereco();
        endereco.setBairro("vila do fulano");
        endereco.setCep("1232413");
        endereco.setCidade("Campinas");
        endereco.setEstado("Sao Paulo");
        endereco.setNumero(123);
        endereco.setPais("Brasil");
        endereco.setRua("Rua dumal");

        
        System.out.println("Persisting...");
        em.persist(endereco);
        em.flush();  //teste
    }
    
    public static void main(String args[]){
        
        System.out.println("Rodou primeiro...");
        EntityInstructorClient EIC = new EntityInstructorClient();
        EIC.salvar();
    }
}

jboss-ds.xml




MyPostgreDS
jdbc/:postgresql://192.168.0.200:5432/netejb
org.postgresql.Driver
postgres
postgres
5
20
5

PostgreSQL



persistence.xml




java:MyPostgreDS





Desde já agradeço pela ajuda.

Abraços.

9 Respostas

Tchello

A proposito, a saida é essa:

Nem os System.out.prinln tão saindo =/

Tchello

Ja ia esquecendo, to usando PostGreSQL

Tchello

Consegui alguns avanços, agora ele ta acusando o seguinte erro:

É dessa parte que ele reclama:

em.persist(endereco)

Suponho que o erro seja por causa desse trexo:

@PersistenceContext(unitName="myunit", type=PersistenceContextType.TRANSACTION)
    private EntityManager e

Any help? To achando que pode ser os arquivos XML, mas já olhei umas 400 vezes e não encontro nada >.<
Com certeza to deixando passar algo, é a primeira vez que to rodando um EJB, comecei a estuda-los no final da semana passada.

Vlw galera, abraços!

otavio

Estou com a pequena impressão que você apenas compilou, e não rodou no jboss.

Pelos logs é o que diz…

Tchello

Sim sim, era isso, mas agora ta dando aquele NULLPointerException, como disse no meu post anterior.
Sry pela noobagem, ainda preciso me acostumar com o NetBeans (saudades do Eclipse…).
Alguma dica? =D

otavio

Provavelmente ele não está injetando sua entity manager.

Tchello

Isso eu percebi, a questão é: por quê?

otavio

Verifique se estão todos ok os arquivos como a persistenceunit e afins.

Tchello

Olha, tenho 2 arquivos XML:

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="myunit" transaction-type ="JTA">
        <jta-data-source>java:MyPostgreDS</jta-data-source>
        <class>EJBClasses.ManagerBean</class>
        <properties>
            <propertie name="org.hibernate.hbm2ddl" value="create-table"/>
        </properties>    
    </persistence-unit>
</persistence>

jboss-ds.xml

<datasources>
    <local-tx-datasource>
        <jndi-name>MyPostgreDS</jndi-name>
        <connection-url>jdbc/:postgresql://192.168.0.200:5432/netejb</connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <user-name>postgres</user-name>
        <password>postgres</password>
        <min-pool-size>5</min-pool-size>
        <max-pool-size>20</max-pool-size>
        <idle-timeout-minutes>5</idle-timeout-minutes>
        <metadata>
            <type-mapping>PostgreSQL</type-mapping>
        </metadata>
    </local-tx-datasource>
</datasources>

To pesquisando e encontrei algumas coisas, mas não saio dessa agora.
Ainda estou aprendendo EJB e esses arquivos de configuração XML ainda são um mistério em boa parte deles, não sei dizer se estão corretos.
Alguma sugestão?

Obrigado!

Criado 10 de fevereiro de 2009
Ultima resposta 11 de fev. de 2009
Respostas 9
Participantes 2