Uma classe abstrata não tem implementação, não pode ser instanciada.
Logo, uma classe abstrata não pode ser Entity.
Porque você precisa que ele seja abstrata ?
JOMI, o fato de ser um CMP ou um BMP não muda em nada o fato de ela ser abstrata. O conceito é um só. Classes abstratas não podem ser instanciadas.
O próprio JBoss está apontando esta inconsistência.
Qual o argumento técnico de que uma Entity Bean deva ser abstract ???
luis.soares e sapulha, a classe tem que ser abstrata pois seria um EJB Entity CMP (Container Managed Persistence).
AlbJava, dê uma olhada se no DD ejb-jar.xml vc declarou certo.
luis.soares, um Entity Bean do tipo CMP deve ser declarado como abstract conforme a Especificacao. Um BMP nao.
O EJB vc não instancia, o Container trata isso. Vc so tem que fazer um lookup na JNDI do EJB para usa-la e nao instanciar.
Explicando melhor, o Bean Class vc declara como abstract no Entity CMP. Vc vai utilizá fazendo um lookup no seu Home e utilizando os metodos que ele fornece por exemplo create (criará o registro na base), findByPrimaryKey (encontrar um registro especifico atraves da chave primaria que vc declara no DD) ou outros metodos bussines que vc definir como por exemplo, getAllCustomers e etc. Com o Session Bean o create se comporta de forma diferente, vc utiliza para pegar o EJBObject (Remota)
Concordo que classes abstratas vc nao pode instanciar. Isso é correto, porem estamos falando de EJB e o Bean quem trata é o Container mesmo vc declarando ele como abstract. Se vc instanciar o Bean, com certeza vai dar erro, vc so conversa com o Bean atraves do Home que devolve o Component.