pergunta sobre injeção de EJB e recursos

votos
2

Estou tendo problemas para fazer JBoss para injetar um valor variável de ambiente em um bean. Aqui está minha classe bean:

com.topcoder.test pacote;

importação java.util.ArrayList;
importação java.util.List;

importação javax.annotation.Resource;
importação javax.ejb.EJBContext;
importação javax.ejb.Remote;
importação javax.ejb.SessionContext;
importação javax.ejb.Stateless;
importação javax.ejb.TransactionManagement;
importação javax.ejb.TransactionManagementType;
importação javax.naming.Context;
importação javax.naming.InitialContext;
importação javax.naming.NamingException;
importação javax.persistence.EntityManager;
importação javax.persistence.PersistenceContext;
javax.persistence.PersistenceContextType importação;

importação org.jboss.annotation.ejb.RemoteBinding;

importação com.topcoder.test.Test;

pública @Stateless (name = TestBean)
classe TestBean implementa teste {

    @Resource (name = managerFile)
    managerFile private String;

    Cordas getManagerFile pública () {
        voltar managerFile;
    }

    Cordas testMethod pública () {
        Corda ret = o valor de managerFile em testMethod () é + getManagerFile ();
        voltar ret;
    }

    @PersistenceContext (unitName = persistenceUnit, tipo = PersistenceContextType.TRANSACTION)
    gerente EntityManager privado;

    @PersistenceContext (unitName = persistenceUnit, tipo = PersistenceContextType.TRANSACTION)
    setEntityManager public void (gerente de EntityManager) {
        this.manager = gerente;
    }

    pública EntityManager getEntityManager () {
        if (gerente == null) {
            throw new IllegalStateException ( EntityManager não foi definido no DAO antes do uso);
        }

        voltar gerente;
    }

    @SuppressWarnings ( unchecked)
    Lista pública RetrieveAll () throws Exception {
        EntityManager em = getEntityManager ();

        resultado list = em.createQuery ( FROM TestEntity) getResultList (.);

        if (resultado == null) {
            resultado = new ArrayList ();
        }

        retornar resultado;
    }

}

Eu quero o valor managerFile para ser injetado pela JBoss. Aqui é a minha ejb-jar.xml:

<enterprise-beans>
    <session>
        <ejb-name>Test</ejb-name>
        <ejb-class>com.topcoder.test.TestBean</ejb-class>
        <env-entry>
            <env-entry-name>managerFile</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>com/topcoder/test/TestBean.properties</env-entry-value>
        </env-entry>
    </session>
</enterprise-beans>

Mas eu recebo essa mensagem de erro quando eu implantar o meu ouvido para JBoss:

09: 07: 40,495 WARN [ResourceHandler] Não injetar managerFile, sem correspondência enc injector env / managerFile encontrado

Estou executando o JBoss 4.2. O que estou fazendo de errado?

Publicado 19/05/2009 em 14:14
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Certifique-se de que o ejb-jar.xml está no META-INF / do JAR que seus EJBs estão em, não da AER META-INF.

Sem relação com o problema, você pode remover a:

@PersistenceContext

a partir de seu método setEntityManager () (você não precisa fazer anotações, tanto um como o campo entityManager)

Respondeu 19/05/2009 em 15:19
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more