我在让 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。我究竟做错了什么?