3

I am working on an application involving hibernate. I am getting this exception when I invoke my application:

org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [oracle.jdbc.driver.Oracle Driver] at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:245) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:200) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:156) at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:95) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260) at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206) at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) at com.infy.EPP.resources.HibernateUtility.createSessionFactory(HibernateUtility.java:36) at com.infy.EPP.dao.BankLocationDAOImpl.getListOfBanks(BankLocationDAOImpl.java:27) at com.infy.EPP.business.service.BankLocationServiceImpl.getListOfBanks(BankLocationServiceImpl.java:20) at com.infy.EPP.web.managedbeans.BankLocationBean.(BankLocationBean.java:53) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at java.lang.Class.newInstance(Class.java:433) at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:100) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:257) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:117) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71) at org.apache.el.parser.AstValue.getValue(AstValue.java:160) at org.apache.el.parser.AstEqual.getValue(AstEqual.java:37) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:457) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1850) at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:431) at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:232) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.infy.EPP.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:57) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.ClassNotFoundException: Could not load requested class : oracle.jdbc.driver.Oracle Driver at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:230) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:340) at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:242) ... 72 more

This is the hibernate.cfg.xml:

    <!-- hibernate dialect -->
    <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.Oracle    Driver</property>
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
    <property name="hibernate.connection.username">system</property>
    <property name="hibernate.connection.password">oracle</property>
    <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

    <!-- Automatic schema creation (begin) === -->
    <property name="hibernate.hbm2ddl.auto">none</property>

    <!-- Simple memory-only cache -->
    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- <property name="show_sql">true</property> -->  



        <mapping class="com.infy.EPP.entites.LoginEntity" />


</session-factory>

This is Hibernate Utility file:

public class HibernateUtility 
{

    private static final String CONFIGURATION_LOCATION = "com/infy/EPP/resources/hibernate.cfg.xml";
    private static SessionFactory sessionFactory = null;
    private static ServiceRegistry serviceRegistry;

    public synchronized static SessionFactory createSessionFactory() {
        if (sessionFactory == null) 
        {
            try {
                // Step1 : Loading the configuration details from
                // hibernate.cfg.xml
                Configuration configuration = new Configuration()
                        .configure(CONFIGURATION_LOCATION);
System.out.println("configuration in Utility=="+configuration); //---//syso1

                // Step2 : Creating ServiceRegistry using the
                // StandardServiceRegistryBuilder and Configuration defined in
                // Step 1

                serviceRegistry = new StandardServiceRegistryBuilder()
                        .applySettings(configuration.getProperties()).build();
                System.out.println("serviceRegistry=="+serviceRegistry); ---//syso 2

                // Step3 : Creating the SessionFactory using the Configuration
                // and serviceRegistry.

                sessionFactory = configuration
                        .buildSessionFactory(serviceRegistry);
                System.out.println("sessionFactory==="+sessionFactory);   ---//syso 3


            } 
            catch (Exception e) 
            {
            e.printStackTrace();
                EppLogger.logError("HibernateUtility",
                        "createSessionFactory", e.getMessage());
            }
        }

        return sessionFactory;
    }

}

This is the DAO class method where I invoke it:

public Login authorize(Login to) throws Exception 
    {
        LoginEntity le = null;
    SessionFactory sessionFactory = null;
        Session session = null;
        Login login =null;
        try {
            sessionFactory = HibernateUtility.createSessionFactory();
            session=sessionFactory.openSession();
            session.beginTransaction();
            le = (LoginEntity)session.get(LoginEntity.class, to.getUserId());
            if (le != null) 
            {
                 login = new Login();
                login.setPassword(le.getPassword());
                login.setRole(le.getRole());
                login.setStatus(le.getStatus());
                login.setUserId(le.getUserId());
            }
            session.getTransaction().commit();
            }
        catch (PersistenceException exception) {
            EppLogger.logError(this.getClass().getName(), "authorize",
                    exception.getMessage());
            throw new Exception("DAO.TECHNICAL_ERROR");
        }
        catch (Exception e) 
        {
            e.printStackTrace();
            EppLogger.logError(this.getClass().getName(), "authorize", e.getMessage());
            throw new Exception("DAO.TECHNICAL_ERROR");
        } 
        finally 
        {
            if(session!=null)
            {
            session.close();
            sessionFactory.close();
            }
        }
        return login;
    }

I have ojdbc7 under lib folder. Still it is not working. I have gone through several pages on SO which suggest to add ojdbc14 in classpath. Still didn't work out

UPDATE: I have put some syso statements in Hibernate Utility file. I am getting value of first 2 but not the 3rd syso.

1 Answer 1

3

There appears to be a space in driver_class property.

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.Oracle    Driver</property>

Even the error message suggests that.

Try by removing the space

That is,

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
Sign up to request clarification or add additional context in comments.

3 Comments

After removing the space the exception has changed as "Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]"
Hibernate doc says – you should create the session factory once in the lifetime of the application and its only in the end when you are exiting the program you should close it off. I would recommend you read more on SessionFactory and how/when to close it. For Quick fix: remove sessionFactory.close(); from everywhere in the program
Thanks! I will go through it

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.