gpt4 book ai didi

java - 越来越严重 : Could not locate SessionFactory in JNDI while getting sessionfactory

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:17 26 4
gpt4 key购买 nike

我使用 hibernate 作为持久层来与数据库通信。我使用 maven 插件 hbm2java 来生成 dao、java、*hbm.xml 和 hibernate.cfg.xml。直到那个时候插件工作正常。

但是当我尝试与数据库通信时,它给出了以下异常。

Aug 30, 2012 1:45:46 PM org.hbm2dao.AssemblyHome getSessionFactory
SEVERE: Could not locate SessionFactory in JNDI
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.hbm2dao.AssemblyHome.getSessionFactory(AssemblyHome.java:29)
at org.hbm2dao.AssemblyHome.<init>(AssemblyHome.java:24)
at com.myhadoop.app.App.main(App.java:22)
java.lang.IllegalStateException: Could not locate SessionFactory in JNDI
at org.hbm2dao.AssemblyHome.getSessionFactory(AssemblyHome.java:33)
at org.hbm2dao.AssemblyHome.<init>(AssemblyHome.java:24)
at com.myhadoop.app.App.main(App.java:22)
Exception in thread "main" java.lang.NullPointerException
at com.myhadoop.app.App.main(App.java:32)

默认情况下,hibernate3:hbm2cfgxml 生成 hibernate.cfg.xml 文件, session 工厂名称为 SessionFactory。就像关注一样。

<session-factory name="SessionFactory">

插件生成以下代码以获取 session 工厂。

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");
}
}

我找到了类似的查询 Problems using eclipse Hibernate plugin - could not locate sessionfactory in JNDI .

然而,更改插件生成的 400 多个类以从 *Home.java 获取 session 工厂是不可行的。

如何在不更改 400 多个类的情况下摆脱 hibernate 插件的这个问题?

我不想使用任何网络/应用服务器,这是我的独立应用程序。

最佳答案

使用生成的 getSessionFactory()方法只有在您设置了这样的环境时才有效 InitialContext可以找到你的hibernate.cfg.xml文件,听起来好像不能。

您可以通过设置 InitialContext 来解决该问题和您的环境根据 InitialContext javadocs 正确.作为替代方案,您可以通过更改 getSessionFactory 来完全删除 JNDI。方法简单地创建一个 Configuration ,并告诉它映射文件的位置。

关于java - 越来越严重 : Could not locate SessionFactory in JNDI while getting sessionfactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com