Ошибка фабрики сеансов JNDI с Tomcat и Hibernate

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

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

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

Код DAO/услуги:

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)


person unknown    schedule 18.03.2012    source источник


Ответы (1)


Вам необходимо настроить фабрику сеансов Hibernate внутри 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.

person atrain    schedule 18.03.2012
comment
Спасибо за ссылки. Я не решил проблему, используя предложенный контент, однако он направил меня в правильном направлении, и я уверен, что он будет полезен в будущем. На самом деле это было что-то глупое, службы не смогли найти мой hibernate.cfg.xml, так как путь, на который он ссылался, был неправильным. - person unknown; 19.03.2012