0
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="sessionFactory">
  <property name="hibernate.connection.pool_size">10</property>
  <property name="show_sql">true</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bestdb</property>
  <property name="hibernate.connection.password">best123</property>
  <property name="hibernate.connection.username">best</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
  <property name="hibernate.show_sql">false</property>
  <mapping resource="Registration.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

This is my hibernate configuration file. The error stacktrace is :

 org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1491)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1425)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1411)
    at connectionHandler.ConnectionHandler.openConnection(ConnectionHandler.java:24)
    at controller.RegistrationController.loginController(RegistrationController.java:240)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:387)
    at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
    at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
    at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
    at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.dom4j.DocumentException: hibernate.sourceforge.net Nested exception: hibernate.sourceforge.net
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1481)
    ... 46 more

My ConnectionHandler.java code is :

public class ConnectionHandler {

    private static SessionFactory sesstioFactory;


    public static SessionFactory getSesstioFactory() {
        return sesstioFactory;
    }


    public static void setSesstioFactory(SessionFactory sesstioFactory) {
        ConnectionHandler.sesstioFactory = sesstioFactory;
    }


    public static void openConnection(){
        try{
            System.out.println("Trying to build session factory");
            sesstioFactory=new Configuration().configure().buildSessionFactory();
            System.out.println("Session factory built successfully");
        }
        catch (Exception e) {
            System.out.println("----------------Problem in opening connection--------------");
            e.printStackTrace();
        }
    }
    public static void closeConnection(){
        try{
            System.out.println("Trying to close session factory");
            sesstioFactory.close();
            System.out.println("Session factory closed successfully");
        }
        catch (Exception e) {
            System.out.println("----------------Problem in opening connection--------------");
            e.printStackTrace();
        }
    }

The below snippet calls the ConnectionHandler.java :

ConnectionHandler.openConnection(); // Calling for opening connection
                                            // for the first time
        SessionFactory sf = ConnectionHandler.getSesstioFactory();
        Session s = sf.openSession();
        Transaction t = s.beginTransaction(); 

I don't know why it's showing error parsing configuration file. I tried changing

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" to "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

All the required jars are also included. Thank you!

2
  • Your hibernate config file looks ok. Just make sure you don't have multiple hibernate config files in your application. Commented Oct 31, 2013 at 11:05
  • Your hibernate jar in classpath doesn't contain the DTD you have specified in the cfg xml. Did you check that? Commented Oct 31, 2013 at 11:38

1 Answer 1

1

In your hibernate.cfg.xml file, try changing

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

to this:

<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

EDIT:

In my original answer, I copied DOCTYPE from my mapping file; I should have copied from the config file instead. Thanks RAS for pointing that out.

Your config file seems correct. I am using the same DOCTYPE declaration:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

And for mapping files, you can try below DOCTYPE declaration (if yours is different) and make sure that there is no spelling mistake:

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
Sign up to request clarification or add additional context in comments.

3 Comments

Why his hibernate.cfg.xml should refer to hibernate-mapping-3.0.dtd instead of hibernate-configuration-3.0.dtd?
that's my question as well?
@Debojit Difference bw PUBLIC & SYSTEM?

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.