浏览 9375 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-08-29
Hibernate 3.0.4 Tomcat 4.1.31 使用Hibernate Tool 生成的下列标准代码来获取 SessionFactory 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"); } } 配置文件: <hibernate-configuration> <session-factory> <property name="show_sql">true</property> <property name="hibernate.session_factory_name"> hibernate/SesionFactory</property> <property name="hibernate.cglib.use_reflection_optimizer">true</property> <property name="hibernate.connection.driver_class"> net.sourceforge.jtds.jdbc.Driver</property> <property name="hibernate.connection.password"> password</property> <property name="hibernate.connection.url"> jdbc:jtds:sqlserver://localhost/db</property> <property name="hibernate.connection.username">user</property> <property name="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect</property> <mapping resource="com/elephi/simplegtd/model/GtdThings.hbm.xml"/> <mapping resource="com/elephi/simplegtd/model/GtdMembers.hbm.xml"/> </session-factory> </hibernate-configuration> 错误提示信息: 10:46:55,968 ERROR GtdMembers:27 - Could not locate SessionFactory in JNDI javax.naming.NameNotFoundException: Name SessionFactory is not bound in this Context at org.apache.naming.NamingContext.lookup(NamingContext.java:764) at org.apache.naming.NamingContext.lookup(NamingContext.java:147) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136) at javax.naming.InitialContext.lookup(InitialContext.java:347) at com.elephi.simplegtd.model.GtdMembersHome.getSessionFactory(GtdMembersHome.java:24) at com.elephi.simplegtd.model.GtdMembersHome.<init>(GtdMembersHome.java:19) at com.elephi.simplegtd.service.GtdMembersService.checkExist(GtdMembersService.java:15) 你的分析: 我看了许多讲解 SessionFactory 的文章。以及与 Tomcat 、配置 JNDI 有关的文章。包括论坛里面能搜索到的。但是还是不明白原因。 我的代码在通过 getSessionFactory 获取 SessionFactory 的时候,是通过查找 JNDI 的方式做的。(这是 Hibernate Tool 生成的 DAO 代码的一部分)。出现错误 Name SessionFactory is not bound in this Context 因此也就 Could not locate SessionFactory in JNDI 。 是否有以下原因? 1. Tomcat 4 和 Tomcat 5 在 JNDI 的处理方式上有区别,而 Hibernate Tool 生成的这个代码是针对 Tomcat 5 的? 2. 我的配置文件写得有问题? 如果不采用这种方式获取 SessionFactory 我还可以通过什么方法获取? 请同行们不吝赐教! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-08-29
把配置文件中的 hibernate/SessionFactory 修改为 SessionFactory 即可。
这下子,getSessionFactory 可以执行下去了。不过 ... org.hibernate.HibernateException: No TransactionManagerLookup specified at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:503) at com.elephi.simplegtd.model.GtdMembersHome.findByEmail(GtdMembersHome.java:114) |
|
返回顶楼 |