[hibernate初学]执行SessionFactory sf = new Configuration().configure().buildSessionFactory();的时候一句warning

hotenM 2005-02-22 09:48:19
09:46:00,828 WARN SessionFactoryObjectFactory:98 - Could not bind factory to JNDI

javax.naming.NamingException: Context is read only

at org.apache.naming.NamingContext.checkWritable(NamingContext.java:942)

at org.apache.naming.NamingContext.createSubcontext(NamingContext.java:558)

不知道是什么意思,后面save也都成功了,各位请支着


...全文
597 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzCpp 2005-02-22
  • 打赏
  • 举报
回复
Could not bind factory to JNDI
大概的意思是说你的SessionFactory绑定jndi的时候出了点问题

javax.naming.NamingException: Context is read only

at org.apache.naming.NamingContext.checkWritable(NamingContext.java:942)

at org.apache.naming.NamingContext.createSubcontext(NamingContext.java:558)

这边大概的意思是说没写的权限,具体的不清楚了,大不了把server.xml和hibernate的配置文件改成可写的。

hibernate也刚学.............
hotenM 2005-02-22
  • 打赏
  • 举报
回复
顶一下
hotenM 2005-02-22
  • 打赏
  • 举报
回复
顶一下
禽兽v5 2005-02-22
  • 打赏
  • 举报
回复
应该是你打开了log4j才能看到错误,没打开它没显示.因为它的代码中是log.warn(), 而不是 System.out.println()
wzrlover 2005-02-22
  • 打赏
  • 举报
回复
如果你在Hibernate中使用JNDI绑定,最好是用Weblogic/JBoss, 而Tomcat是不行的,因为Tomcat的JNDI是只读的,没法绑定!
hotenM 2005-02-22
  • 打赏
  • 举报
回复
我是按照提示打开了log4j的,所以控制台上才有这个错误,如果不开log4j就没有这个错误
另外这是个warning,try也try不到
禽兽v5 2005-02-22
  • 打赏
  • 举报
回复
多次建立SessionFactory是没必要的。
每当建立一个SessionFactory时,将读取所有配置文件并载入内存,每个SessionFactory将使用自己的缓存工作。因此使用不同SessionFactory访问数据库有可能会造成冲突。

不过,从错误提示上看与这点好像没什么联系......

另外,我也是用tomcat,没有问题。
hotenM 2005-02-22
  • 打赏
  • 举报
回复
wzrlover(无语无声无欲无泪吾独行!) :你说的对,我用的就是tomcat,是不是不行?hibernate官方的文档都用这个来举的例

或者怎么避免
wzrlover 2005-02-22
  • 打赏
  • 举报
回复
>>javax.naming.NamingException: Context is read only

你该不是用tomcat吧? tomcat的JNDI是只读的
drugon 2005-02-22
  • 打赏
  • 举报
回复
你看一下你的hibernate.cfg.xml文件里面的JNDI和Server.xml文件中的JNDI设置是不是一样的,也就是两处的要一致。

<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/hibernate</property>
<property name="show_sql">false</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

<mapping resource="com/xanada/po/Cat.hbm.xml"/>
</session-factory>
</hibernate-configuration>

比如上面的,你在Server.xml文件中就只会看到jdbc/hibernate这样的写法,而没有前面的java:comp/env/。
hotenM 2005-02-22
  • 打赏
  • 举报
回复
cm4ever(小P):是否因为创建了两次
但好象日志上并无此体现啊

另外后面的过程都是趁工的
shan1119 2005-02-22
  • 打赏
  • 举报
回复
dd
禽兽v5 2005-02-22
  • 打赏
  • 举报
回复
SessionFactory 在webapp中只需要创建1次,创建多次则可能出现问题。在hibernate的文档中有一个HibernateUtil类,将SessionFactory作为单件。网络上还有其他很多解决方法。
hibernate\doc\reference\zh-cn\html\quickstart.html

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧