Hibernate SessionFactory: how to configure JNDI in Tomcat?

how to get a factory session:

    protected SessionFactory getSessionFactory () {
        try {
            return (SessionFactory) new InitialContext ()
                    .lookup ("SessionFactory");
        } catch (Exception e) {
        }
    }

Please provide a simple solution for Tomcat6 to get a SessionFactory through a simple jndi search in Java code. What should be written in which file on the side of Tomcat?

+3
source share
2 answers

Tomcat :

Tomcat InitialContext, Hibernate read-write . , . factory JNDI, (Glassfish, JBoss ..) .

Hibernate , hibernate.session_factory_name Tomcat JNDI.

Hibernate :

SessionFactory JDNI. hibernate.session_factory_name . Tomcat hibernate.session_factory_name, Tomcat JNDI. JNDI-bound SessionFactory Tomcat, factory SessionFactory Tomcat.

, SessionFactory :

package myutil.hibernate;  

import java.util.Hashtable;  
import java.util.Enumeration;  
import javax.naming.Name;  
import javax.naming.Context;  
import javax.naming.NamingException;  
import javax.naming.Reference;  
import javax.naming.RefAddr;  
import javax.naming.spi.ObjectFactory  
import org.hibernate.SessionFactory;  
import org.hibernate.cfg.Configuration;  

public class HibernateSessionFactoryTomcatFactory implements ObjectFactory{  
   public Object getObjectInstance(Object obj, Name name, Context cntx, Hashtable env)   
                 throws NamingException{  

      SessionFactory sessionFactory = null;  
      RefAddr addr = null;  

      try{  
         Enumeration addrs = ((Reference)(obj)).getAll();  

         while(addrs.hasMoreElements()){  
            addr = (RefAddr) addrs.nextElement();  
            if("configuration".equals((String)(addr.getType()))){  
               sessionFactory = (new Configuration())  
                    .configure((String)addr.getContent()).buildSessionFactory();  
            }  
         }  
      }catch(Exception ex){  
         throw new javax.naming.NamingException(ex.getMessage());  
      }  

      return sessionFactory;  
   }  
}  
0

Source: https://habr.com/ru/post/1737656/


All Articles