NullPointer - Me ajudem

Colocarei a pilha dos erros e depois todas as classes envolvidas no erro … me ajudem que eu soh posso estar muito bitolado no codigo, faz um tempao que to tentando resolver isso e nao vejo o problema. Quem sabe uma pessoa de fora veja com mais facilidade o meu erro :confused:

[code]HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Unable to instantiate Action, br.gov.ce.seplag.pdtiweb.actions.ActAplicacao, defined for ‚ÄėprepararConsultar‚Äô in namespace '/aplicacao‚Äônull - action - file:/C:/Projetos/pdtiweb/FONTES/pdtiweb/build/web/WEB-INF/classes/config/struts-aplicacao.xml:27:31
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

root cause

Unable to instantiate Action, br.gov.ce.seplag.pdtiweb.actions.ActAplicacao, defined for ‚ÄėprepararConsultar‚Äô in namespace '/aplicacao‚Äônull - action - file:/C:/Projetos/pdtiweb/FONTES/pdtiweb/build/web/WEB-INF/classes/config/struts-aplicacao.xml:27:31
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:289)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:360)
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38)
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:78)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.(DefaultActionInvocation.java:70)
com.opensymphony.xwork2.DefaultActionInvocation.(DefaultActionInvocation.java:66)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

root cause

java.lang.NullPointerException
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:120)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
br.gov.ce.seplag.pdtiweb.persistence.PrsPadraoBean.initialize(PrsPadraoBean.java:48)
br.gov.ce.seplag.pdtiweb.persistence.PrsPadraoBean.(PrsPadraoBean.java:76)
br.gov.ce.seplag.pdtiweb.persistence.PrsDaoBean.(PrsDaoBean.java:32)
br.gov.ce.seplag.pdtiweb.business.generic.BusinessGeneric.(BusinessGeneric.java:23)
br.gov.ce.seplag.pdtiweb.business.generic.BusinessBean.(BusinessBean.java:9)
br.gov.ce.seplag.pdtiweb.business.NgcAplicacaoBean.(NgcAplicacaoBean.java:10)
br.gov.ce.seplag.pdtiweb.business.BusinessFactory.getNgcAplicacao(BusinessFactory.java:189)
br.gov.ce.seplag.pdtiweb.actions.ActAplicacao.(ActAplicacao.java:60)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
java.lang.reflect.Constructor.newInstance(Constructor.java:513)
java.lang.Class.newInstance0(Class.java:355)
java.lang.Class.newInstance(Class.java:308)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:121)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:152)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:141)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:111)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:270)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:360)
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38)
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:78)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.(DefaultActionInvocation.java:70)
com.opensymphony.xwork2.DefaultActionInvocation.(DefaultActionInvocation.java:66)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16[/code]

struts-aplicacao.xml

[code]

<package name="aplicacao" extends="struts-default"
	namespace="/aplicacao">

	<!-- Pessoa -->
	<action name="preparar-*"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="preparar">
		<param name="codEntity">{1}</param>
		<result>/conteudo/pages/aplicacao/cadAplicacao.jsp</result>
	</action>

	<action name="prepararExcluir-*"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="prepararExcluir">
		<param name="codEntity">{1}</param>
		<result>/conteudo/pages/aplicacao/excAplicacao.jsp</result>
	</action>

	<action name="prepararConsultar"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="prepararConsultar">
		<result>/conteudo/pages/aplicacao/conAplicacao.jsp</result>
	</action>

	<action name="salvar"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="salvar">
		<result name="input">
			/conteudo/pages/aplicacao/cadAplicacao.jsp
		</result>
		<result name="success">
			/conteudo/pages/aplicacao/cadAplicacao.jsp
		</result>
	</action>

	<action name="consultar"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="consultar">
		<result>/conteudo/pages/aplicacao/conAplicacao.jsp</result>
	</action>

	<action name="excluir"
		class="br.gov.ce.seplag.pdtiweb.actions.ActAplicacao"
		method="excluir">
		<result>/conteudo/pages/aplicacao/conAplicacao.jsp</result>
	</action>

</package>

[/code]

colocarei soh trechos dos codigos das classes porque algumas sao um pouco grandes:

ActAplicacao.java

[code]public class ActAplicacao extends CrudBean {

private static final long serialVersionUID = -166869885179372607L;
private Aplicacao aplicacao;
private Aplicacao frmAplicacao;
private Set<Aplicacao> listaDados;
private String codeEntity;
private Set<Entidade> lstEntidade;
private Set<TipoAplicacao> lstTipoAplicacao;
private Set<NivelAplicacao> lstNivelAplicacao;
private Set<ModoInteracao> lstModoInteracao;
private Set<LinguagemApl> lstLinguagemApl;
private Set<BancoDadosApl> lstBancoDadosApl;
private Set<PlataformaApl> lstPlataformaApl;
private Set<StatusApl> lstStatusApl;
private Logger logger = Logger.getLogger(ActAplicacao.class.getName());
protected Long codEntidade;
final BusinessFactory factory = BusinessFactory.getInstance();

public ActAplicacao() {
    super(BusinessFactory.getInstance().getNgcAplicacao(), Aplicacao.class);
}[/code]

BusinessFactory.java

[code]public NgcAplicacao getNgcAplicacao() {
if (ngcAplicacao == null) {
ngcAplicacao = new NgcAplicacaoBean();
}

    return ngcAplicacao;
}[/code]

NgcAplicacaoBean.java

[code]package br.gov.ce.seplag.pdtiweb.business;

import br.gov.ce.seplag.pdtiweb.business.generic.BusinessBean;
import br.gov.ce.seplag.pdtiweb.model.Aplicacao;

public class NgcAplicacaoBean extends BusinessBean implements
NgcAplicacao {

public NgcAplicacaoBean() {
    super(Aplicacao.class);
}

}[/code]

BusinessBean.java

[code]package br.gov.ce.seplag.pdtiweb.business.generic;

import br.gov.ce.seplag.pdtiweb.model.Model;

public abstract class BusinessBean extends BusinessGeneric implements Business {

@SuppressWarnings("unchecked")
public BusinessBean(final Class classEntidade) {
    super(classEntidade);
}

}[/code]

BusinessGeneric

[code]package br.gov.ce.seplag.pdtiweb.business.generic;

import java.util.Map;
import java.util.Set;

import br.gov.ce.seplag.pdtiweb.enumerations.Ordenacao;
import br.gov.ce.seplag.pdtiweb.exceptions.PDTIException;
import br.gov.ce.seplag.pdtiweb.model.Model;
import br.gov.ce.seplag.pdtiweb.persistence.PrsDao;
import br.gov.ce.seplag.pdtiweb.persistence.PrsDaoBean;
import br.gov.ce.seplag.pdtiweb.utils.Builder;

public abstract class BusinessGeneric {

@SuppressWarnings("unchecked")
private Class classEntidade = null;
private PrsDao<Entity> prsDao = null;

@SuppressWarnings("unchecked")
public BusinessGeneric(final Class classEntidade) {
    super();
    this.classEntidade = classEntidade;
    this.prsDao = new PrsDaoBean<Entity>(classEntidade);
}[/code]

PrsDaoBean.java

[code]public class PrsDaoBean extends PrsPadraoBean
implements PrsDao {

/**
 * 
 * Construtor da Classe.
 * 
 */
public PrsDaoBean() {
}

/**
 * 
 * Construtor da Classe.
 * 
 * @param classEntidade
 */
public PrsDaoBean(final Class<?> classEntidade) {
    super();
    this.setClassEntidade(classEntidade);
}

}[/code]

PrsPadraoBean.java

[code]public PrsPadraoBean() {
this.initialize();
}

private void initialize() {
if (this.factory == null) {
this.factory = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);
}

    if (this.manager == null) {
        this.manager = this.factory.createEntityManager();
    }

}

[/code]

como voces podem ver pela pilha de erro o programa deu pau na linha 07 desse ultimo trecho de codigo, segue abaixo o arquivo persistence.xml

[code]<?xml version="1.0" encoding="ISO-8859-1"?>



oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider

br.gov.ce.seplag.pdtiweb.model.Entidade
br.gov.ce.seplag.pdtiweb.model.Orgao
br.gov.ce.seplag.pdtiweb.model.NecessidadeInf
br.gov.ce.seplag.pdtiweb.model.Orcamento
br.gov.ce.seplag.pdtiweb.model.Colaborador
br.gov.ce.seplag.pdtiweb.model.ProdutoServ
br.gov.ce.seplag.pdtiweb.model.TipoHardware
br.gov.ce.seplag.pdtiweb.model.Hardware
br.gov.ce.seplag.pdtiweb.model.TipoSoftware
br.gov.ce.seplag.pdtiweb.model.Software
br.gov.ce.seplag.pdtiweb.model.TipoAplicacao
br.gov.ce.seplag.pdtiweb.model.NivelAplicacao
br.gov.ce.seplag.pdtiweb.model.ModoInteracao
br.gov.ce.seplag.pdtiweb.model.Aplicacao
br.gov.ce.seplag.pdtiweb.model.Plataforma
br.gov.ce.seplag.pdtiweb.model.ServicoInternet
br.gov.ce.seplag.pdtiweb.model.Metodologia
br.gov.ce.seplag.pdtiweb.model.SistemaOperacional
br.gov.ce.seplag.pdtiweb.model.RedeLan
br.gov.ce.seplag.pdtiweb.model.Contrato
br.gov.ce.seplag.pdtiweb.model.SituacaoOrgao
br.gov.ce.seplag.pdtiweb.model.SituacaoProjeto
br.gov.ce.seplag.pdtiweb.model.Projeto
br.gov.ce.seplag.pdtiweb.model.NivelAtuacao
br.gov.ce.seplag.pdtiweb.model.TipoVinculo
br.gov.ce.seplag.pdtiweb.model.TipoTreinamento
br.gov.ce.seplag.pdtiweb.model.RecursosHumanos
br.gov.ce.seplag.pdtiweb.model.Custo
br.gov.ce.seplag.pdtiweb.model.Sugestao
false







        <!-- Use the C3P0 connection pool provider -->
        <property name="hibernate.c3p0.min_size">3</property>
        <property name="hibernate.c3p0.max_size">5</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        
        <!--property name="toplink.ddl-generation" value="create-tables" />
        <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
        <property name="toplink.platform.class.name" 
                     value="oracle.toplink.essentials.platform.database.oracle.OraclePlatformm"/-->
    </properties>
</persistence-unit>

[/code]

ajude-me por favor … não to conseguindo resolver esse problema :confused:

[]'s

Acho que vc deve ter algum objeto apontando para nulo no metodo prepararConsulta() no pacote de aplicação.

D√° uma olhadinha nesses lugares flws

Filho, olhei esse código várias vezes e pelo menos eu nao vi nada de errado com a classe … acredito eu que por algum motivo a função Persistence.createEntityManagerFactory() não esta achando minha unidade de persistência

tirado do site http://www.hibernate.org

estou chamando a função na classe assim:

this.factory = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);

PERSISTENCE_NAME um um atributo dessa classe que ta chamando o método

private static final String PERSISTENCE_NAME = "pdtiweb";

e eu tenho um persistence .xml dentro do meu classpath com uma unidade de persistencia chamada ‚Äúpdtiweb‚ÄĚ

olhae minha estrutura do projeto

cara, nao consegui ate agora descobrir o porque desse erro … vou colocar o codigo de todas as classes envolvidadas nessa operacao, se algum puder me ajudar :confused:

vai ter muita coisa que nao eh util, mas seilá … vou colocar as classes por completo aqui

ActAplicacao.java

[code]public class ActAplicacao extends CrudBean {

private static final long serialVersionUID = -166869885179372607L;
private Aplicacao aplicacao;
private Aplicacao frmAplicacao;
private Set<Aplicacao> listaDados;
private String codeEntity;
private Set<Entidade> lstEntidade;
private Set<TipoAplicacao> lstTipoAplicacao;
private Set<NivelAplicacao> lstNivelAplicacao;
private Set<ModoInteracao> lstModoInteracao;
private Set<LinguagemApl> lstLinguagemApl;
private Set<BancoDadosApl> lstBancoDadosApl;
private Set<PlataformaApl> lstPlataformaApl;
private Set<StatusApl> lstStatusApl;
private Logger logger = Logger.getLogger(ActAplicacao.class.getName());
protected Long codEntidade;
final BusinessFactory factory = BusinessFactory.getInstance();

public ActAplicacao() {
    super(BusinessFactory.getInstance().getNgcAplicacao(), Aplicacao.class);
}

private void popularComboEntidade() {

// recupera a sessao corrente
logger.info(‚ÄúInicio: populando o combo das Entidades‚ÄĚ);
HttpSession session = ServletActionContext.getRequest().getSession(false);
// pega um atributo na sessao
String codigo = null;

    if (session.getAttribute("codEntidade") != null) {
        codigo = session.getAttribute("codEntidade").toString();
    }


    final NgcEntidade ngcEntidade = this.factory.getNgcEntidade();

    Set<Entidade> orgaoSet;
    final Entidade entidade = new Entidade();

    if (codigo != null) {
        entidade.setSeqEntidade(new Long(codigo));
    }

    final Map<String, Ordenacao> order = new HashMap<String, Ordenacao>();
    order.put("orgao.deOrgao", Ordenacao.ASC);

    try {
        orgaoSet = ngcEntidade.listar(entidade, order, null, null);
        this.lstEntidade = orgaoSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboTipoAplicacao() {
    
    logger.info("Inicio: populando o combo dos Tipos de Aplicacao");
    final NgcTipoAplicacao ngcTipoAplicacao = this.factory.getNgcTipoAplicacao();

    Set<TipoAplicacao> tipoAplSet;
    final TipoAplicacao tipoApl = new TipoAplicacao();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscTipoAplTap", Ordenacao.ASC);

    try {
        tipoAplSet = ngcTipoAplicacao.listar(tipoApl, order1, null, null);

        this.lstTipoAplicacao = tipoAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboNivelAplicacao() {
    
    logger.info("Inicio: populando o combo dos Niveis de Aplicacao");

    final NgcNivelAplicacao ngcNivelAplicacao = this.factory.getNgcNivelAplicacao();

    Set<NivelAplicacao> nivelAplSet;
    final NivelAplicacao nivelApl = new NivelAplicacao();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscNivelAplNap", Ordenacao.ASC);

    try {
        nivelAplSet = ngcNivelAplicacao.listar(nivelApl, order1, null, null);

        this.lstNivelAplicacao = nivelAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboModoInteracao() {
    
    logger.info("Inicio: populando o combo dos modos de Interacao");

    final NgcModoInteracao ngcModoInteracao = this.factory.getNgcModoInteracao();

    Set<ModoInteracao> modoIntSet;
    final ModoInteracao modoInt = new ModoInteracao();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscModoInteracaoMin", Ordenacao.ASC);

    try {
        modoIntSet = ngcModoInteracao.listar(modoInt, order1, null, null);

        this.lstModoInteracao = modoIntSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboLinguagemApl() {
    
    logger.info("Inicio: populando o combo das Linguagens");

    final NgcLinguagemApl ngcLinguagemApl = this.factory.getNgcLinguagemApl();

    Set<LinguagemApl> linguagemAplSet;
    final LinguagemApl linguagemApl = new LinguagemApl();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscLinguagemLin", Ordenacao.ASC);

    try {
        linguagemAplSet = ngcLinguagemApl.listar(linguagemApl, order1, null, null);

        this.lstLinguagemApl = linguagemAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboBancoDadosApl() {
    
    logger.info("Inicio: populando o combo dos Bancos de Dados");

    final NgcBancoDadosApl ngcBancoDadosApl = this.factory.getNgcBancoDadosApl();

    Set<BancoDadosApl> bancoDadosAplSet;
    final BancoDadosApl bancoDadosApl = new BancoDadosApl();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscBancoDadosBda", Ordenacao.ASC);

    try {
        bancoDadosAplSet = ngcBancoDadosApl.listar(bancoDadosApl, order1, null, null);

        this.lstBancoDadosApl = bancoDadosAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboPlataformaApl() {
    
    logger.info("Inicio: populando o combo das Plataformas");

    final NgcPlataformaApl ngcPlataformaApl = this.factory.getNgcPlataformaApl();

    Set<PlataformaApl> plataformaAplSet;
    final PlataformaApl plataformaApl = new PlataformaApl();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscPlataformaAplicPap", Ordenacao.ASC);

    try {
        plataformaAplSet = ngcPlataformaApl.listar(plataformaApl, order1, null, null);

        this.lstPlataformaApl = plataformaAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

private void popularComboStatusApl() {
    
    logger.info("Inicio: populando o combo de Status");

    final NgcStatusApl ngcStatusApl = this.factory.getNgcStatusApl();

    Set<StatusApl> statusAplSet;
    final StatusApl statusApl = new StatusApl();

    final Map<String, Ordenacao> order1 = new HashMap<String, Ordenacao>();
    order1.put("dscStatusAplSap", Ordenacao.ASC);

    try {
        statusAplSet = ngcStatusApl.listar(statusApl, order1, null, null);

        this.lstStatusApl = statusAplSet;

    } catch (final Exception e) {
        logger.error(e);
    }
}

@Override
protected void getParametros() throws Exception {
    this.listaDados = super.lstDados;
    this.aplicacao = super.entity;
/*
if (aplicacao != null) {
codEntidade = aplicacao.getEntidade().getSeqEntidade();	
}*/

}

@Override
protected void preencherListas() throws Exception {
    this.popularComboEntidade();
    this.popularComboTipoAplicacao();
    this.popularComboNivelAplicacao();
    this.popularComboModoInteracao();
    this.popularComboLinguagemApl();
    this.popularComboBancoDadosApl();
    this.popularComboPlataformaApl();
    this.popularComboStatusApl();
}

@Override
protected void setParametros() throws Exception {

    if (this.aplicacao != null) {
        final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

        this.aplicacao.setUsuario(new Long(1));



        if (this.codeEntity == null && this.aplicacao.getSeqAplicacao() == null) {
            this.aplicacao.setDatCadastroApl((sdf.parse(sdf.format(new Date()))));
        } else if (this.aplicacao.getSeqAplicacao() != null) {
            this.aplicacao.setDatAlteracaoApl((sdf.parse(sdf.format(new Date()))));
        }
        
        /*
         * Codigo necessario para gravar valores nulos nas combobox
         */
        if (aplicacao.getModoInteracao() != null) {
            if (aplicacao.getModoInteracao().getSeqModoInteracao() != null && aplicacao.getModoInteracao().getSeqModoInteracao() == -1) {
                aplicacao.setModoInteracao(null);
            }
        }

        if (aplicacao.getNivelAplicacao() != null) {
            if (aplicacao.getNivelAplicacao().getSeqNivelAplicacao() != null && aplicacao.getNivelAplicacao().getSeqNivelAplicacao() == -1) {
                aplicacao.setNivelAplicacao(null);
            }
        }

        if (aplicacao.getTipoAplicacao() != null) {
            if (aplicacao.getTipoAplicacao().getSeqTipoAplicacao() != null && aplicacao.getTipoAplicacao().getSeqTipoAplicacao() == -1) {
                aplicacao.setTipoAplicacao(null);
            }
        }

        if (aplicacao.getLinguagemApl() != null) {
            if (aplicacao.getLinguagemApl().getSeqLinguagem() != null && aplicacao.getLinguagemApl().getSeqLinguagem() == -1) {
                aplicacao.setLinguagemApl(null);
            }
        }

        if (aplicacao.getBancoDadosApl() != null) {
            if (aplicacao.getBancoDadosApl().getSeqBancoDados() != null && aplicacao.getBancoDadosApl().getSeqBancoDados() == -1) {
                aplicacao.setBancoDadosApl(null);
            }
        }

        if (aplicacao.getPlataformaApl() != null) {
            if (aplicacao.getPlataformaApl().getSeqPlataforma() != null && aplicacao.getPlataformaApl().getSeqPlataforma() == -1) {
                aplicacao.setPlataformaApl(null);
            }
        }

        if (aplicacao.getStatusApl() != null) {
            if (aplicacao.getStatusApl().getSeqStatus() != null && aplicacao.getStatusApl().getSeqStatus() == -1) {
                aplicacao.setStatusApl(null);
            }
        }

    }

    super.codEntity = this.getCodEntity();
    super.entity = this.getAplicacao();
    super.frmEntity = this.getFrmAplicacao();
    /*
    final String parameter = ServletActionContext.getRequest().getParameter(
    "aplicacao.entidade.seqEntidade");
    
    if (parameter != null) {
    codEntidade = new Long(parameter);	
    }*/
    //ActionContext.getContext().getSession();

// recupera a sessao corrente
HttpSession session = ServletActionContext.getRequest().getSession(false);

// seta um atributo na sessao
if (this.aplicacao != null && session.getAttribute(‚ÄúcodEntidade‚ÄĚ) == null) {
if (aplicacao.getEntidade() == null) {
} else {
session.setAttribute(‚ÄúcodEntidade‚ÄĚ, aplicacao.getEntidade().getSeqEntidade());
}
// recupera um objeto da sessao
//Object object = session.getAttribute(‚ÄúattributeName‚ÄĚ);
}
}

/**
 * M?todo de pegar a propriedade do aplicacao.
 * 
 * 
 * @return o valor do campo aplicacao.
 */
public Aplicacao getAplicacao() {
    return this.aplicacao;
}

/**
 * M?todo para setar a propriedade do aplicacao.
 * 
 * @param aplicacao
 *          valor que ser? setado no campo: aplicacao.
 */
public void setAplicacao(final Aplicacao aplicacao) {
    this.aplicacao = aplicacao;
}

/**
 * M?todo de pegar a propriedade do codEntity.
 * 
 * 
 * @return o valor do campo codEntity.
 */
public String getCodEntity() {
    return this.codeEntity;
}

/**
 * M?todo para setar a propriedade do codEntity.
 * 
 * @param codEntity
 *          valor que ser? setado no campo: codEntity.
 */
public void setCodEntity(final String codEntity) {
    this.codeEntity = codEntity;
}

/**
 * M?todo de pegar a propriedade do frmAplicacao.
 * 
 * 
 * @return o valor do campo frmAplicacao.
 */
public Aplicacao getFrmAplicacao() {
    return this.frmAplicacao;
}

/**
 * M?todo para setar a propriedade do frmAplicacao.
 * 
 * @param frmAplicacao
 *          valor que ser? setado no campo: frmAplicacao.
 */
public void setFrmAplicacao(final Aplicacao frmAplicacao) {
    this.frmAplicacao = frmAplicacao;
}

/**
 * M?todo de pegar a propriedade do lstDados.
 * 
 * 
 * @return o valor do campo lstDados.
 */
public Set<Aplicacao> getLstDados() {
    return this.listaDados;
}

/**
 * M?todo para setar a propriedade do lstDados.
 * 
 * @param lstDados
 *          valor que ser? setado no campo: lstDados.
 */
public void setLstDados(final Set<Aplicacao> lstDados) {
    this.listaDados = lstDados;
}

/**
 * M?todo de pegar a propriedade do lstEntidade.
 * 
 * 
 * @return o valor do campo lstEntidade.
 */
public Set<Entidade> getLstEntidade() {
    return this.lstEntidade;
}

/**
 * M?todo para setar a propriedade do lstEntidade.
 * 
 * @param lstEntidade
 *          valor que ser? setado no campo: lstEntidade.
 */
public void setLstEntidade(final Set<Entidade> lstEntidade) {
    this.lstEntidade = lstEntidade;
}

/**
 * M?todo de pegar a propriedade do lstModoInteracao.
 * 
 * 
 * @return o valor do campo lstModoInteracao.
 */
public Set<ModoInteracao> getLstModoInteracao() {
    return this.lstModoInteracao;
}

/**
 * M?todo para setar a propriedade do lstModoInteracao.
 * 
 * @param lstModoInteracao
 *          valor que ser? setado no campo: lstModoInteracao.
 */
public void setLstModoInteracao(final Set<ModoInteracao> lstModoInteracao) {
    this.lstModoInteracao = lstModoInteracao;
}

/**
 * M?todo de pegar a propriedade do lstNivelAplicacao.
 * 
 * 
 * @return o valor do campo lstNivelAplicacao.
 */
public Set<NivelAplicacao> getLstNivelAplicacao() {
    return this.lstNivelAplicacao;
}

/**
 * M?todo para setar a propriedade do lstNivelAplicacao.
 * 
 * @param lstNivelAplicacao
 *          valor que ser? setado no campo: lstNivelAplicacao.
 */
public void setLstNivelAplicacao(final Set<NivelAplicacao> lstNivelAplicacao) {
    this.lstNivelAplicacao = lstNivelAplicacao;
}

/**
 * M?todo de pegar a propriedade do lstTipoAplicacao.
 * 
 * 
 * @return o valor do campo lstTipoAplicacao.
 */
public Set<TipoAplicacao> getLstTipoAplicacao() {
    return this.lstTipoAplicacao;
}

/**
 * M?todo para setar a propriedade do lstTipoAplicacao.
 * 
 * @param lstTipoAplicacao
 *          valor que ser? setado no campo: lstTipoAplicacao.
 */
public void setLstTipoAplicacao(final Set<TipoAplicacao> lstTipoAplicacao) {
    this.lstTipoAplicacao = lstTipoAplicacao;
}

/**
 * 
 * @return SUCESS caso relatorio seja gerado com sucesso
 * @throws java.lang.Exception
 */
public String gerarRelatorio() throws Exception {
    Character recurso = null;
    final String parameter = ServletActionContext.getRequest().getParameter(
            "frmAplicacao.entidade.orgao.deSigla");
    final String parameter2 = ServletActionContext.getRequest().getParameter(
            "frmAplicacao.dscTipoRecursoApl");
    if ( (parameter2 != null) && !(parameter2.equals("")) ) {
        recurso = new Character(parameter2.charAt(0));
    }
    if (this.frmAplicacao == null) {
        this.frmAplicacao = new Aplicacao();
        final Orgao orgao = new Orgao();
        orgao.setDeSigla(parameter);
        final Entidade entidade = new Entidade();
        entidade.setOrgao(orgao);
        this.frmAplicacao.setEntidade(entidade);
        this.frmAplicacao.setDscTipoRecursoApl(recurso);
    }

    final Map<String, Ordenacao> order = new HashMap<String, Ordenacao>();
    order.put("entidade.orgao.deSigla", Ordenacao.ASC);

    this.setLstDados(BusinessFactory.getInstance().getNgcAplicacao().listar(
                     this.frmAplicacao, order, null, null));

    return SUCCESS;
}

public Set<BancoDadosApl> getLstBancoDadosApl() {
    return lstBancoDadosApl;
}

public void setLstBancoDadosApl(Set<BancoDadosApl> lstBancoDadosApl) {
    this.lstBancoDadosApl = lstBancoDadosApl;
}

public Set<LinguagemApl> getLstLinguagemApl() {
    return lstLinguagemApl;
}

public void setLstLinguagemApl(Set<LinguagemApl> lstLinguagemApl) {
    this.lstLinguagemApl = lstLinguagemApl;
}

public Set<PlataformaApl> getLstPlataformaApl() {
    return lstPlataformaApl;
}

public void setLstPlataformaApl(Set<PlataformaApl> lstPlataformaApl) {
    this.lstPlataformaApl = lstPlataformaApl;
}

public Set<StatusApl> getLstStatusApl() {
    return lstStatusApl;
}

public void setLstStatusApl(Set<StatusApl> lstStatusApl) {
    this.lstStatusApl = lstStatusApl;
}

@Override
public void validate() {
    super.validate();

    try {
        if (aplicacao != null) {
            preencherListas();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}[/code]

BusinessFactory.java

[code]public final class BusinessFactory {

private static BusinessFactory factory;
private NgcEntidade ngcEntidade;
private NgcNecessidade ngcNecessidade;
private NgcOrgao ngcOrgao;
private NgcOrcamento ngcOrcamento;
private NgcColaborador ngcColaborador;
private NgcProduto ngcProduto;
private NgcTipoHardware ngcTipoHardware;
private NgcHardware ngcHardware;
private NgcSoftware ngcSoftware;
private NgcTipoSoftware ngcTipoSoftware;
private NgcTipoAplicacao ngcTipoAplicacao;
private NgcNivelAplicacao ngcNivelAplicacao;
private NgcModoInteracao ngcModoInteracao;
private NgcAplicacao ngcAplicacao;
private NgcPlataforma ngcPlataforma;
private NgcServicoInternet ngcServicoInternet;
private NgcMetodologia ngcMetodologia;
private NgcSistemaOperacional ngcSistemaOperacional;
private NgcRedeLan ngcRedeLan;
private NgcRedeWan ngcRedeWan;
private NgcContrato ngcContrato;
private NgcSituacaoOrgao ngcSituacaoOrgao;
private NgcProjeto ngcProjeto;
private NgcSituacaoProjeto ngcSituacaoProjeto;
private NgcNivelAtuacao ngcNivelAtuacao;
private NgcTipoVinculo ngcTipoVinculo;
private NgcTipoTreinamento ngcTipoTreinamento;
private NgcRecursosHumanos ngcRecursosHumanos;
private NgcCusto ngcCusto;
private NgcSugestao ngcSugestao;
private NgcLinguagemApl ngcLinguagemApl;
private NgcBancoDadosApl ngcBancoDadosApl;
private NgcPlataformaApl ngcPlataformaApl;
private NgcStatusApl ngcStatusApl;

//private Orgao orgao;
/**
 * 
 * Construtor da Classe.
 */
private BusinessFactory() {
}

/**
 * 
 * @return Inst√Ęncia da f√°brica de servi√ßos.
 */
public static BusinessFactory getInstance() {

    if (factory == null) {
        synchronized (BusinessFactory.class) {
            factory = new BusinessFactory();
        }
    }

    return factory;
}

/**
 * Método de pegar a propriedade do ngcEntidade.
 * 
 * @return o valor do campo ngcEntidade.
 */
public NgcEntidade getNgcEntidade() {
    if (ngcEntidade == null) {
        ngcEntidade = new NgcEntidadeBean();
    }
    return ngcEntidade;
}

/**
 * Método de pegar a propriedade do ngcNecessidade.
 * 
 * @return o valor do campo ngcNecessidade.
 */
public NgcNecessidade getNgcNecessidade() {
    if (ngcNecessidade == null) {
        ngcNecessidade = new NgcNecessidadeBean();
    }
    return ngcNecessidade;
}

/**
 * Método de pegar a propriedade do ngcOrgao.
 * 
 * @return o valor do campo ngcOrgao.
 */
public NgcOrgao getNgcOrgao() {
    if (ngcOrgao == null) {
        ngcOrgao = new NgcOrgaoBean();
    }
    return ngcOrgao;
}

public NgcOrcamento getNgcOrcamento() {
    if (ngcOrcamento == null) {
        ngcOrcamento = new NgcOrcamentoBean();
    }

    return ngcOrcamento;
}

public NgcColaborador getNgcColaborador() {
    if (ngcColaborador == null) {
        ngcColaborador = new NgcColaboradorBean();
    }

    return ngcColaborador;
}

public NgcProduto getNgcProduto() {
    if (ngcProduto == null) {
        ngcProduto = new NgcProdutoBean();
    }

    return ngcProduto;
}

public NgcTipoHardware getNgcTipoHardware() {
    if (ngcTipoHardware == null) {
        ngcTipoHardware = new NgcTipoHardwareBean();
    }

    return ngcTipoHardware;
}

public NgcHardware getNgcHardware() {
    if (ngcHardware == null) {
        ngcHardware = new NgcHardwareBean();
    }

    return ngcHardware;
}

public NgcTipoSoftware getNgcTipoSoftware() {
    if (ngcTipoSoftware == null) {
        ngcTipoSoftware = new NgcTipoSoftwareBean();
    }

    return ngcTipoSoftware;
}

public NgcSoftware getNgcSoftware() {
    if (ngcSoftware == null) {
        ngcSoftware = new NgcSoftwareBean();
    }

    return ngcSoftware;
}

public NgcTipoAplicacao getNgcTipoAplicacao() {
    if (ngcTipoAplicacao == null) {
        ngcTipoAplicacao = new NgcTipoAplicacaoBean();
    }

    return ngcTipoAplicacao;
}

public NgcNivelAplicacao getNgcNivelAplicacao() {
    if (ngcNivelAplicacao == null) {
        ngcNivelAplicacao = new NgcNivelAplicacaoBean();
    }

    return ngcNivelAplicacao;
}

public NgcModoInteracao getNgcModoInteracao() {
    if (ngcModoInteracao == null) {
        ngcModoInteracao = new NgcModoInteracaoBean();
    }

    return ngcModoInteracao;
}

public NgcAplicacao getNgcAplicacao() {
    if (ngcAplicacao == null) {
        ngcAplicacao = new NgcAplicacaoBean();
    }

    return ngcAplicacao;
}

public NgcPlataforma getNgcPlataforma() {
    if (ngcPlataforma == null) {
        ngcPlataforma = new NgcPlataformaBean();
    }

    return ngcPlataforma;
}

public NgcServicoInternet getNgcServicoInternet() {
    if (ngcServicoInternet == null) {
        ngcServicoInternet = new NgcServicoInternetBean();
    }

    return ngcServicoInternet;
}

public NgcMetodologia getNgcMetodologia() {
    if (ngcMetodologia == null) {
        ngcMetodologia = new NgcMetodologiaBean();
    }

    return ngcMetodologia;
}

public NgcSistemaOperacional getNgcSistemaOperacional() {
    if (ngcSistemaOperacional == null) {
        ngcSistemaOperacional = new NgcSistemaOperacionalBean();
    }

    return ngcSistemaOperacional;
}

public NgcRedeLan getNgcRedeLan() {
    if (ngcRedeLan == null) {
        ngcRedeLan = new NgcRedeLanBean();
    }

    return ngcRedeLan;
}

public NgcRedeWan getNgcRedeWan() {
    if (ngcRedeWan == null) {
        ngcRedeWan = new NgcRedeWanBean();
    }

    return ngcRedeWan;
}

public NgcContrato getNgcContrato() {
    if (ngcContrato == null) {
        ngcContrato = new NgcContratoBean();
    }

    return ngcContrato;
}

/**
 * Metodo de pegar a propriedade do ngcSituacaoProjeto.
 * 
 * 
 * @return o valor do campo ngcSituacaoProjeto.
 */
public NgcSituacaoOrgao getNgcSituacaoOrgao() {
    if (ngcSituacaoOrgao == null) {
        ngcSituacaoOrgao = new NgcSituacaoOrgaoBean();
    }
    return ngcSituacaoOrgao;
}

public NgcSituacaoProjeto getNgcSituacaoProjeto() {
    if (ngcSituacaoProjeto == null) {
        ngcSituacaoProjeto = new NgcSituacaoProjetoBean();
    }
    return ngcSituacaoProjeto;
}

public NgcProjeto getNgcProjeto() {
    if (ngcProjeto == null) {
        ngcProjeto = new NgcProjetoBean();
    }
    return ngcProjeto;
}

public NgcNivelAtuacao getNgcNivelAtuacao() {
    if (ngcNivelAtuacao == null) {
        ngcNivelAtuacao = new NgcNivelAtuacaoBean();
    }
    return ngcNivelAtuacao;
}

public NgcTipoVinculo getNgcTipoVinculo() {
    if (ngcTipoVinculo == null) {
        ngcTipoVinculo = new NgcTipoVinculoBean();
    }
    return ngcTipoVinculo;
}

public NgcTipoTreinamento getNgcTipoTreinamento() {
    if (ngcTipoTreinamento == null) {
        ngcTipoTreinamento = new NgcTipoTreinamentoBean();
    }
    return ngcTipoTreinamento;
}

public NgcRecursosHumanos getNgcRecursosHumanos() {
    if (ngcRecursosHumanos == null) {
        ngcRecursosHumanos = new NgcRecursosHumanosBean();
    }
    return ngcRecursosHumanos;
}

public NgcCusto getNgcCusto() {
    if (ngcCusto == null) {
        ngcCusto = new NgcCustoBean();
    }
    return ngcCusto;
}

public NgcSugestao getNgcSugestao() {
    if (ngcSugestao == null) {
        ngcSugestao = new NgcSugestaoBean();
    }
    return ngcSugestao;
}

public NgcLinguagemApl getNgcLinguagemApl() {
    if (ngcLinguagemApl == null) {
        ngcLinguagemApl = new NgcLinguagemAplBean();
    }
    return ngcLinguagemApl;
}

public NgcBancoDadosApl getNgcBancoDadosApl() {
    if (ngcBancoDadosApl == null) {
        ngcBancoDadosApl = new NgcBancoDadosAplBean();
    }
    return ngcBancoDadosApl;
}

public NgcPlataformaApl getNgcPlataformaApl() {
    if (ngcPlataformaApl == null) {
        ngcPlataformaApl = new NgcPlataformaAplBean();
    }
    return ngcPlataformaApl;
}

public NgcStatusApl getNgcStatusApl() {
    if (ngcStatusApl == null) {
        ngcStatusApl = new NgcStatusAplBean();
    }
    return ngcStatusApl;
}

}[/code]

NgcAplicacaoBean.java

[code]public class NgcAplicacaoBean extends BusinessBean implements
NgcAplicacao {

public NgcAplicacaoBean() {
    super(Aplicacao.class);
}

}[/code]

BusinessBean.java

[code]public abstract class BusinessBean extends BusinessGeneric implements Business {

@SuppressWarnings("unchecked")
public BusinessBean(final Class classEntidade) {
    super(classEntidade);
}

}[/code]

BusinessGeneric.java

[code]public abstract class BusinessGeneric {

@SuppressWarnings("unchecked")
private Class classEntidade = null;
private PrsDao<Entity> prsDao = null;

@SuppressWarnings("unchecked")
public BusinessGeneric(final Class classEntidade) {
    super();
    this.classEntidade = classEntidade;
    this.prsDao = new PrsDaoBean<Entity>(classEntidade);
}

public PrsDao<Entity> getPrsDao() {
    return prsDao;
}

@SuppressWarnings("unchecked")
public Class getClassEntidade() {
    return classEntidade;
}

@SuppressWarnings("unchecked")
public void setClassEntidade(Class classEntidade) {
    this.classEntidade = classEntidade;
}

public Entity salvar(final Entity model) throws PDTIException {
    Entity retEntity = null;

    if (model != null) {
        final Long codEntity = Builder.getIdEntity(model, Builder.getNameId(model));

        if (codEntity == null) {
            retEntity = prsDao.criar(model);
        } else {
            retEntity = prsDao.alterar(model);
        }
    }

    return retEntity;
}

public void excluir(final Entity model) throws PDTIException {
    prsDao.excluir(model);
}

public Entity recuperar(final Entity model) throws PDTIException {
    return prsDao.recuperar(model);
}

@SuppressWarnings("unchecked")
public Entity recuperar(final Long codigo) throws PDTIException {

    final Entity model = (Entity) Builder.getNewEntity(codigo,
                                                       this.classEntidade);

    return this.recuperar(model);
}

public Set<Entity> listar(final Entity model,
                          final Map<String, Ordenacao> order, final Long qtdRegistros,
                          final Long regInicial) throws PDTIException {
    return prsDao.listar(model, order, qtdRegistros, regInicial);
}

}[/code]

PrsDaoBean.java

[code]public class PrsDaoBean extends PrsPadraoBean
implements PrsDao {

/**
 * 
 * Construtor da Classe.
 * 
 */
public PrsDaoBean() {
}

/**
 * 
 * Construtor da Classe.
 * 
 * @param classEntidade
 */
public PrsDaoBean(final Class<?> classEntidade) {
    super();
    this.setClassEntidade(classEntidade);
}

}[/code]

PrsPadraoBean.java

[code]public abstract class PrsPadraoBean {

private Class<?> classEntidade = null;

//Gerenciador de f√°brica de entidades.
private EntityManagerFactory factory = null;

//Entidade responsável pela persistência.
private EntityManager manager = null;

//Referência do persistence.xml.
private static final String PERSISTENCE_NAME = "pdtiweb";
private String causaErro = "";

/**
 * Inicialização da classe de persistência.
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $12/05/2007:23:19:57$
 * 
 */
private void initialize() {
    if (this.factory == null) {
        this.factory = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);
    }

    if (this.manager == null) {
        this.manager = this.factory.createEntityManager();
    }

}

/**
 * Pegar a conex√£o.
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $25/09/2007:21:18:34$
 * 
 */
private void getConnection() {
    this.factory = Persistence.createEntityManagerFactory(PERSISTENCE_NAME);

    this.manager = this.factory.createEntityManager();
}

/**
 * 
 * Construtor da Classe.
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $11/05/2007:20:36:19$
 */
public PrsPadraoBean() {
    this.initialize();
}

/**
 * Incluir no banco de dados um objeto passado com parametro.
 * 
 * @param entity
 * @return 
 */
public Entity criar(final Entity entity) {
    Entity entRetorno = null;

    this.getConnection();

    this.manager.getTransaction().begin();

    try {

        this.manager.persist(entity);

        entRetorno = entity;

        this.manager.getTransaction().commit();
    } catch (final RuntimeException e) {
        this.causaErro = e.getMessage();
        this.manager.getTransaction().rollback();
        throw new DAOExpection(
                "Erro ao incluir os dados no Banco de Dados da entidade: " + entity.getClass().getSimpleName() + "Erro: " + this.causaErro);

    } finally {
        this.manager.close();
        this.factory.close();
    }

    return entRetorno;
}

/**
 * Alterar no banco de dados um objeto passado com parametro.
 * 
 * @param entity
 * @return 
 */
public Entity alterar(final Entity entity) {
    Entity entRetorno = null;

    this.getConnection();

    this.manager.getTransaction().begin();

    try {
        entRetorno = this.manager.merge(entity);
        this.manager.getTransaction().commit();
    } catch (final RuntimeException e) {
        this.manager.getTransaction().rollback();
        throw new DAOExpection(
                "Erro ao alterar os dados no Banco de Dados da entidade: " + entity.getClass().getSimpleName());
    } finally {
        this.manager.close();
        this.factory.close();
    }

    return entRetorno;
}

/**
 * Excluir no banco de dados um objeto passado com parametro.
 * 
 * @param entity
 * @throws PDTIException 
 */
public void excluir(final Entity entity) throws PDTIException {
    this.getConnection();

    this.manager.getTransaction().begin();

    try {
        final Long codEntity = Builder.getIdEntity(entity, Builder.getNameId(entity));

        if (codEntity != null) {
            final String strDelete = "delete from " + entity.getClass().getSimpleName() + " entity where entity." + Builder.getNameId(entity) + " = " + codEntity.toString();

            final Query query = this.manager.createQuery(strDelete);

            query.executeUpdate();

            this.manager.getTransaction().commit();
        }
    } catch (final RuntimeException e) {
        this.manager.getTransaction().rollback();
        e.printStackTrace();
        throw new DAOExpection(
                "Erro ao excluir os dados no Banco de Dados da entidade: " + entity.getClass().getSimpleName());
    } finally {
        this.manager.close();
        this.factory.close();
    }

}

/**
 * Recuperar no banco de dados um objeto de acordo com o código e class
 * passada com par√Ęmetro
 * 
 * @param codigo
 * @param clazz
 * @return Objeto pesquisado de acordo com o código do parametro.
 */
@SuppressWarnings("unchecked")
private Entity recuperar(final Long codigo, final Entity model) {
    this.getConnection();

    this.manager.getTransaction().begin();

    Entity retorno = null;
    try {
        retorno = (Entity) this.manager.find(model.getClass(), codigo);
        this.manager.getTransaction().commit();
    } catch (final RuntimeException e) {
        this.manager.getTransaction().rollback();
        e.printStackTrace();
        throw new DAOExpection("Erro ao recuperar do Banco de Dados a entidade: " + model.getClass().getSimpleName());
    } finally {
        this.manager.close();
        this.factory.close();
    }

    return retorno;
}

/**
 * Buscar no banco de dados um Lista de Objetos apartir de string com a
 * consulta EJBQL.
 * 
 * @param ejbQl
 * @return Lista de objetos da consulta.
 */
@SuppressWarnings("unchecked")
public Set<Entity> listar(final String ejbQl) {
    this.getConnection();

    this.manager.getTransaction().begin();

    Set<Entity> lstRetorno = null;

    try {
        this.manager.getTransaction().begin();
        final Query query = this.manager.createQuery(ejbQl);

        lstRetorno = new LinkedHashSet<Entity>();
        for (final Object entit : query.getResultList()) {
            lstRetorno.add((Entity) entit);
        }
    } catch (final RuntimeException e) {
        this.manager.getTransaction().rollback();
        throw new DAOExpection("Erro ao recuperar do Banco de Dados a entidade: ");
    } finally {
        this.manager.close();
        this.factory.close();
    }

    return lstRetorno;
}

/**
 * Buscar uma lista de Entidade.
 * 
 * 
 * @param model
 *          entidade com os parametros da busca.
 * @param order
 *          tipo de ordenação da consulta.
 * @param qtdRegistros
 *          quantidade de registros que dever√° retorna a consulta.
 * @param regInicial
 *          n√ļmeros do registro inicial do registro que ser√° retornado.
 * @return List<Entity> Lista de objetos retorna pela consulta.
 * @throws PDTIException 
 */
@SuppressWarnings("unchecked")
public Set<Entity> listar(final Entity model,
                          final Map<String, Ordenacao> order, final Long qtdRegistros,
                          final Long regInicial) throws PDTIException {
    this.getConnection();

    this.manager.getTransaction().begin();

    Set<Entity> lstRetorno = null;

    try {
        final StringBuilder ejbQl = new StringBuilder();

        try {
            ejbQl.append(Builder.getEJBQL(model, this.getClassEntidade(), order));
        } catch (final Exception e) {
            e.printStackTrace();
            throw new PDTIException(e);
        }

        System.out.println("PRSPADRAOBEAN.listar.: " + ejbQl.toString());

        final Query query = this.manager.createQuery(ejbQl.toString());

        if (regInicial != null) {
            query.setFirstResult(regInicial.intValue());
        }

        if (qtdRegistros != null) {
            query.setMaxResults(qtdRegistros.intValue());
        }

        lstRetorno = new LinkedHashSet<Entity>(query.getResultList());

        System.out.println("Quantidade de registros da consulta retornada: " + lstRetorno.size());
        this.manager.getTransaction().commit();
    } catch (final RuntimeException e) {
        this.manager.getTransaction().rollback();
        e.printStackTrace();
        throw new DAOExpection("Erro ao recuperar do Banco de Dados a entidade");
    } finally {
        this.manager.close();
        this.factory.close();
    }

    return lstRetorno;
}

/**
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $11/05/2007:20:47:59$
 * 
 * @param model
 *          Entidade a ser recuperada.
 * @return Entidade recuperada.
 * @throws PDTIException 
 */
public Entity recuperar(final Entity model) throws PDTIException {
    Entity retorno = null;
    final Long codigo = Builder.getIdEntity(model, Builder.getNameId(model));
    if (codigo != null) {
        retorno = this.recuperar(codigo, model);
    }
    return retorno;
}

/**
 * Método de pegar a propriedade do classEntidade.
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $04/06/2007:14:06:03$.
 * 
 * @return o valor do campo classEntidade.
 */
public Class<?> getClassEntidade() {
    return this.classEntidade;
}

/**
 * Método para setar a propriedade do classEntidade.
 * 
 * @author Aldivone Correia[aldivone@gmail.com] - $04/06/2007:14:06:03$.
 * 
 * @param classEntidade
 *          valor que ser√° setado no campo: classEntidade.
 */
public void setClassEntidade(final Class<?> classEntidade) {
    this.classEntidade = classEntidade;
}

}[/code]

persistence.xml

[code]<?xml version="1.0" encoding="ISO-8859-1"?>



oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider

br.gov.ce.seplag.pdtiweb.model.Entidade
br.gov.ce.seplag.pdtiweb.model.Orgao
br.gov.ce.seplag.pdtiweb.model.NecessidadeInf
br.gov.ce.seplag.pdtiweb.model.Orcamento
br.gov.ce.seplag.pdtiweb.model.Colaborador
br.gov.ce.seplag.pdtiweb.model.ProdutoServ
br.gov.ce.seplag.pdtiweb.model.TipoHardware
br.gov.ce.seplag.pdtiweb.model.Hardware
br.gov.ce.seplag.pdtiweb.model.TipoSoftware
br.gov.ce.seplag.pdtiweb.model.Software
br.gov.ce.seplag.pdtiweb.model.TipoAplicacao
br.gov.ce.seplag.pdtiweb.model.NivelAplicacao
br.gov.ce.seplag.pdtiweb.model.ModoInteracao
br.gov.ce.seplag.pdtiweb.model.Aplicacao
br.gov.ce.seplag.pdtiweb.model.Plataforma
br.gov.ce.seplag.pdtiweb.model.ServicoInternet
br.gov.ce.seplag.pdtiweb.model.Metodologia
br.gov.ce.seplag.pdtiweb.model.SistemaOperacional
br.gov.ce.seplag.pdtiweb.model.RedeLan
br.gov.ce.seplag.pdtiweb.model.Contrato
br.gov.ce.seplag.pdtiweb.model.SituacaoOrgao
br.gov.ce.seplag.pdtiweb.model.SituacaoProjeto
br.gov.ce.seplag.pdtiweb.model.Projeto
br.gov.ce.seplag.pdtiweb.model.NivelAtuacao
br.gov.ce.seplag.pdtiweb.model.TipoVinculo
br.gov.ce.seplag.pdtiweb.model.TipoTreinamento
br.gov.ce.seplag.pdtiweb.model.RecursosHumanos
br.gov.ce.seplag.pdtiweb.model.Custo
br.gov.ce.seplag.pdtiweb.model.Sugestao
false







        <!-- Use the C3P0 connection pool provider -->
        <property name="hibernate.c3p0.min_size">3</property>
        <property name="hibernate.c3p0.max_size">5</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        
        <!--property name="toplink.ddl-generation" value="create-tables" />
        <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
        <property name="toplink.platform.class.name" 
                  value="oracle.toplink.essentials.platform.database.oracle.OraclePlatformm"/-->
    </properties>
</persistence-unit>

[/code]

estrutura do projeto

EDIT
soh um detalhe, o build que o netbeans cria jah passa tudo que fica nessa pasta /conf dentro do source para a pasta /META-INF dentro da pasta web do projeto construido … alguem me de uma luz, porque raios essa funcao ta da retornando uma null pointer exception :confused: