2012-03-18 77 views
1

我正在構建一個使用Spring MVC,Hibernate,JBoss Tools和JSF的Web應用程序框架。我已經設法通過使用JBoss Tools來生成域類和DAO類,但是,當我嘗試構建任何DAO對象時(在構建服務的那一刻,最終服務將被注入到控制器中),我收到JNDI錯誤。我使用Tomcat 7作爲AS。我希望能夠解決這個問題。JNDI與Tomcat和休眠的會話工廠錯誤

控制器代碼:

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) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158) at javax.naming.InitialContext.lookup(Unknown Source) at com .webapplication.service.AuthorHome.getSessionFactory(AuthorHome.java:31) 在com.webapplication.service.AuthorHome。(AuthorHome.java:26)

回答

2

您需要配置Hibernate的Session廠春天裏。請參閱http://static.springsource.org/spring/docs/current/spring-framework-reference/html/orm.html#orm-session-factory-setup。另請注意,在Spring內部直接使用Hibernate需要事務上下文。一個簡單的方法是使用@Transactional註釋。詳情在這裏:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/transaction.html#transaction-declarative-annotations

+0

謝謝你的參考。我沒有通過使用建議的內容來解決問題,但是,它的確引導我朝着正確的方向發展,我相信它將在未來有用。這真的很傻,服務找不到我的hibernate.cfg.xml,因爲它引用的路徑不正確。 – unknown 2012-03-18 20:55:17