0

I am making a hibernate SessionFactory Object whenever tomcat server is starting and destroying it when server is stopping, so called a static method getSessionFactory() of HibernateUtil class which returns sessionfactory object from the HibernateContextListener which is implementing ServletContextListener but I am getting ExceptionInInitializerError when i am starting my tomcat, its working normal later but every time when i am running tomcat it is giving a big list of many exceptions, below are some stacktrace of those exceptions.

Sep 24, 2015 10:43:13 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.bss.util.HibernateContextListener
java.lang.ExceptionInInitializerError
    at com.bss.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:19)
    at com.bss.util.HibernateUtil.<clinit>(HibernateUtil.java:7)
    at com.bss.util.HibernateContextListener.contextInitialized(HibernateContextListener.java:19)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1148)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2248)
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2214)
    at org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider.<clinit>(C3P0ConnectionProvider.java:58)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:148)
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.c3p0ProviderPresent(ConnectionProviderInitiator.java:198)
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:121)
    at org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:54)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:79)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:201)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:175)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:223)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:89)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:85)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:184)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:156)
    at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1827)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1785)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
    at com.bss.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:14)
Sep 24, 2015 10:43:13 AM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class com.bss.util.HibernateContextListener
java.lang.NoClassDefFoundError: Could not initialize class com.bss.util.HibernateUtil
    at com.bss.util.HibernateContextListener.contextDestroyed(HibernateContextListener.java:25)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4763)
    at org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5472)
    at java.lang.Thread.run(Thread.java:662)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5481)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3854)
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:935)
    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:355)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:576)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

HibernateContextListener.java

public class HibernateContextListener implements ServletContextListener{

@Override
public void contextInitialized(ServletContextEvent sce) {               
    HibernateUtil.getSessionFactory();
    System.out.println("HIBERNATE SESSION FACTORY INITIALIZED");
}

@Override
public void contextDestroyed(ServletContextEvent sce) {     
    if (HibernateUtil.getSessionFactory()!=null) 
    { 
        HibernateUtil.getSessionFactory().close(); 
    } 
    System.out.println("HIBERNATE SESSION FACTORY DESTROYED");
}
}

HibernateUtil.java

public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
    try {
        Configuration configuration = new Configuration().configure();          
        SessionFactory factory = configuration.buildSessionFactory();
        return factory;
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}}
Praveen Rawat
  • 724
  • 2
  • 12
  • 29

1 Answers1

1

you can use

-XX:MaxPermSize=128m

to increase perm gen space, for full answer go through this link

Community
  • 1
  • 1