如何在休眠时修复 JndiException?
How can I fix JndiException on hibernate?
public class HibernateUtil {
private static SessionFactory sessionFactory = createSessionFactory();
private static ServiceRegistry serviceRegistry;
public static SessionFactory createSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
这是我在本论坛找到的class提供的session factory
但我一直收到 JndiException: Error parsing JNDI name []
16:07:57,659 WARN SessionFactoryObjectFactory:98 - Could not bind factory to JNDI
javax.naming.NoInitialContextException:需要在环境或系统属性中指定class名称,或作为小程序参数,或在应用程序资源文件中:java.naming.factory.initial
在 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
在 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
在 javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
在 javax.naming.InitialContext.getNameParser(InitialContext.java:429)
在 org.hibernate.util.NamingHelper.bind(NamingHelper.java:52)
在 org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90)
在 org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:293)
在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1145)
在 util.HibernateUtil.(HibernateUtil.java:13)
HibernateUtil 不是问题所在。您应该查看您的配置文件。cfg.xml 并删除会话工厂标签上的名称。
<session-factory name="">
至:
<session-factory>
这是解决该问题的快速方法。只有将 SessionFactory 绑定到 JNDI 才需要名称属性。
public class HibernateUtil {
private static SessionFactory sessionFactory = createSessionFactory();
private static ServiceRegistry serviceRegistry;
public static SessionFactory createSessionFactory() {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
这是我在本论坛找到的class提供的session factory
但我一直收到 JndiException: Error parsing JNDI name []
16:07:57,659 WARN SessionFactoryObjectFactory:98 - Could not bind factory to JNDI
javax.naming.NoInitialContextException:需要在环境或系统属性中指定class名称,或作为小程序参数,或在应用程序资源文件中:java.naming.factory.initial 在 javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640) 在 javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243) 在 javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280) 在 javax.naming.InitialContext.getNameParser(InitialContext.java:429) 在 org.hibernate.util.NamingHelper.bind(NamingHelper.java:52) 在 org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90) 在 org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:293) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1145) 在 util.HibernateUtil.(HibernateUtil.java:13)
HibernateUtil 不是问题所在。您应该查看您的配置文件。cfg.xml 并删除会话工厂标签上的名称。
<session-factory name="">
至:
<session-factory>
这是解决该问题的快速方法。只有将 SessionFactory 绑定到 JNDI 才需要名称属性。