2

我在让 JBoss 将环境变量值注入 bean 时遇到问题。这是我的豆类:

包 com.topcoder.test;

导入 java.util.ArrayList;
导入 java.util.List;

导入 javax.annotation.Resource;
导入 javax.ejb.EJBContext;
导入javax.ejb.Remote;
导入 javax.ejb.SessionContext;
导入 javax.ejb.Stateless;
导入 javax.ejb.TransactionManagement;
导入 javax.ejb.TransactionManagementType;
导入 javax.naming.Context;
导入 javax.naming.InitialContext;
导入 javax.naming.NamingException;
导入 javax.persistence.EntityManager;
导入 javax.persistence.PersistenceContext;
导入 javax.persistence.PersistenceContextType;

导入 org.jboss.annotation.ejb.RemoteBinding;

导入 com.topcoder.test.Test;

公共@Stateless(名称=“TestBean”)
类TestBean实现测试{

    @Resource(name="managerFile")
    私有字符串管理器文件;

    公共字符串 getManagerFile() {
        返回管理器文件;
    }

    公共字符串测试方法(){
        String ret = "testMethod()中managerFile的值为" + getManagerFile();
        返回 ret;
    }

    @PersistenceContext(unitName = "persistenceUnit", type = PersistenceContextType.TRANSACTION)
    私人 EntityManager 经理;

    @PersistenceContext(unitName = "persistenceUnit", type = PersistenceContextType.TRANSACTION)
    公共无效 setEntityManager(EntityManager 管理器){
        this.manager = 经理;
    }

    公共实体管理器 getEntityManager() {
        如果(经理==空){
            throw new IllegalStateException("EntityManager 在使用前没有在 DAO 上设置");
        }

        退货经理;
    }

    @SuppressWarnings("未选中")
    公共列表retrieveAll()抛出异常{
        实体管理器 em = getEntityManager();

        列表结果 = em.createQuery("FROM TestEntity").getResultList();

        如果(结果==空){
            结果 = 新的 ArrayList();
        }

        返回结果;
    }

}

我希望 JBoss 注入 managerFile 值。这是我的 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>

但是当我将耳朵部署到 JBoss 时,我收到了以下错误消息:

09:07:40,495 WARN [ResourceHandler] 未注入 managerFile,未找到匹配的 enc 注入器 env/managerFile

我正在运行 JBoss 4.2。我究竟做错了什么?

4

1 回答 1

1

确保 ejb-jar.xml 在您的 EJB 所在的 JAR 的 META-INF/ 中,而不是在 EAR 的 META-INF 中。

与您的问题无关,您可以删除:

@PersistenceContext

从您的 setEntityManager() 方法(您不需要同时注释它和 entityManager 字段)

于 2009-05-19T14:19:26.877 回答