Ошибка фабрики сеансов JNDI с Tomcat и Hibernate - PullRequest
1 голос
/ 18 марта 2012

Я создаю инфраструктуру веб-приложений, используя Spring MVC, Hibernate, JBoss Tools и JSF.Мне удалось сгенерировать классы домена и классы DAO с помощью JBoss Tools, однако, когда я пытаюсь создать любой объект DAO (в данный момент я создаю сервис, но в конечном итоге сервис будет внедрен в контроллер), яполучить ошибку JNDI.Я использую Tomcat 7 в качестве AS.Я был бы признателен за простое решение этой проблемы.

Код контроллера:

AuthorHome ah = new AuthorHome();
Author a = ah.findById(1);

Код DAO / Service:

public class AuthorHome {

private static final Log log = LogFactory.getLog(AuthorHome.class);

private final SessionFactory sessionFactory = getSessionFactory();

protected SessionFactory getSessionFactory() {
    try {
        return (SessionFactory) new InitialContext().lookup("SessionFactory");
    } catch (Exception e) {
        log.error("Could not locate SessionFactory in JNDI", e);
        throw new IllegalStateException(
                "Could not locate SessionFactory in JNDI");
    }
}
}

Трассировка стека:

javax.naming.NameNotFoundException: имя SessionFactory не привязано к этому контексту в org.apache.naming.NamingContext.lookup (NamingContext.java:803) в org.apache.naming.NamingContext.lookup (NamingContext.java:159) на org.apache.naming.SelectorContext.lookup (SelectorContext.java:158) на javax.naming.InitialContext.lookup (неизвестный источник) на com.webapplication.service.AuthorHome.getSessionFactory (AuthorHome.java:31) на com.webapplication.service.AuthorHome. (AuthorHome.java:26)

1 Ответ

2 голосов
/ 18 марта 2012

Вам необходимо настроить Hibernate Session Factory внутри Spring.См. http://static.springsource.org/spring/docs/current/spring-framework-reference/html/orm.html#orm-session-factory-setup. Также обратите внимание, что прямое использование Hibernate внутри Spring требует транзакционного контекста.Простой способ сделать это - использовать аннотацию @Transactional.Подробности здесь: http://static.springsource.org/spring/docs/current/spring-framework-reference/html/transaction.html#transaction-declarative-annotations.

...