无法在JNDI中找到SessionFactory

时间:2014-04-24 19:28:28

标签: hibernate jndi sessionfactory

我知道你会生我的气。但无论如何我都会问。 我试图在stackoverflow中的每个解决方案的问题。但尚未解决。 我生成休眠dao pojos和hbm.xml。当我尝试用dao添加东西时,我收到错误"无法在JNDI中找到SessionFactory"。***

KullanicilarHome.java

public class KullanicilarHome {

    private static final Log log = LogFactory.getLog(KullanicilarHome.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");
        }
    }

    public void persist(Kullanicilar transientInstance) {
        log.debug("persisting Kullanicilar instance");
        try {
            sessionFactory.getCurrentSession().persist(transientInstance);
            log.debug("persist successful");
        } catch (RuntimeException re) {
            log.error("persist failed", re);
            throw re;
        }
    }

和MainClass.java(测试)

public class MainClass {
    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Kullanicilar user = new Kullanicilar();
        user.setAd("Ergin");
        user.setSoyad("DURAN");
        user.setUniversite("Kxxx");
        user.setBolum("bxx");
        user.setCepTel("5xxxxxx");
        user.setEmail("exxxx");
        user.setVeliTel("55xxxxx");
        KullanicilarHome x = new KullanicilarHome();
        x.persist(user);

    }

和hbm.cfg.xml

<hibernate-configuration>
    <session-factory name="SessionFactory">
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.session_factory_name">SessionFactory</property>
    </session-factory>
</hibernate-configuration>

和tomcat版本:v7.0.50 我再说一遍你开始生气之前。我尝试了stackoverflow中的所有解决方案。但是没有用。      - &GT; enter link description here      - &GT; enter link description here      - &GT; enter link description here      - &GT; enter link description here

有同样的问题,解决方案没有帮助我或没有理解解决方案。 请帮帮我.. 我为我糟糕的英语道歉 感谢***

1 个答案:

答案 0 :(得分:0)

我认为你在ejb和hibernate之间感到困惑,我没有看到你在哪里尝试将sessionfactory设置为JNDI。你必须做以下

public class KullanicilarHome {

private static final Log log = LogFactory.getLog(KullanicilarHome.class);
private final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
.
.
.
.

注意:确保类路径中包含.property文件。通常我把它放在WEB-INF文件夹中。

参考:link