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;
}}
4
  • 1
    possible duplicate of PermGen space Error in tomcat Commented Sep 24, 2015 at 10:47
  • but every time when tomcat shutdowns, i am also closing sessionfactory object Commented Sep 24, 2015 at 10:49
  • 1
    Are you using a big framework like Spring? Those usually require that you dramatically increase your PermGen space from the default. Or, you could use Java 8 and try your luck with the metaspace. Commented Sep 25, 2015 at 21:49
  • i am not using spring, instead i am using hibernate with c3p0 connection pooling. Commented Sep 27, 2015 at 5:03

1 Answer 1

1

you can use

-XX:MaxPermSize=128m

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

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.