Вопрос о EJB и ресурсов инъекции

голоса
2

У меня возникли проблемы с получением JBoss, чтобы ввести переменное значение среды в боб. Вот мой класс компонента:

пакет 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 реализует Test {

    @Resource (имя = managerFile)
    частная строка managerFile;

    Строка getManagerFile общественности () {
        вернуться managerFile;
    }

    Строка TestMethod общественности () {
        Строка RET = значение managerFile в TestMethod () является + getManagerFile ();
        вернуться в отставке;
    }

    @PersistenceContext (UnitName = persistenceUnit, тип = PersistenceContextType.TRANSACTION)
    частный менеджер EntityManager;

    @PersistenceContext (UnitName = persistenceUnit, тип = PersistenceContextType.TRANSACTION)
    общественного недействительными setEntityManager (менеджер EntityManager) {
        this.manager = менеджер;
    }

    общественного EntityManager getEntityManager () {
        если (менеджер == NULL) {
            певд IllegalStateException ( «EntityManager не был установлен на DAO перед использованием»);
        }

        вернуться менеджер;
    }

    @SuppressWarnings ( флажок)
    Публичный список RetrieveAll () бросает исключение {
        EntityManager ет = getEntityManager ();

        Результат Список = em.createQuery ( ОТ TestEntity) getResultList ().

        если (результат == NULL) {
            Результат = новый ArrayList ();
        }

        возвращать результат;
    }

}

Я хочу, чтобы значение managerFile быть впрыскивается JBoss. Вот мой 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: 40495 WARN [ResourceHandler] Не инъекционных managerFile, не соответствующий ENC инжектора ENV / managerFile найдено

Я бегу JBoss 4.2. Что я делаю не так?

Задан 19/05/2009 в 12:14
источник пользователем
На других языках...                            


1 ответов

голоса
1

Убедитесь в том, что EJB-jar.xml находится в META-INF / ЕАО, что ваши EJBs находятся в, а не Ухо в META-INF.

Unrelated к вашему вопросу вы можете удалить:

@PersistenceContext

от вашего setEntityManager () метод (вам не нужно аннотировать и то и другое поле EntityManager)

Ответил 19/05/2009 в 13:19
источник пользователем

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