0

I have a problem caused by a wrong hibernate mapping configuration while deploying the webapp from a war file in Tomcat. The stacktrace of the error is the following:

    Grave: Critical error during deployment:
com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! java.util.concurrent.ExecutionException: java.lang.ExceptionInInitializerError
        at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:449)
        at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:214)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: javax.faces.FacesException: java.util.concurrent.ExecutionException: java.lang.ExceptionInInitializerError
        at com.sun.faces.config.ConfigManager.getAnnotatedClasses(ConfigManager.java:507)
        at com.sun.faces.config.processor.AbstractConfigProcessor.processAnnotations(AbstractConfigProcessor.java:402)
        at com.sun.faces.config.processor.ApplicationConfigProcessor.process(ApplicationConfigProcessor.java:340)
        at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:152)
        at com.sun.faces.config.processor.LifecycleConfigProcessor.process(LifecycleConfigProcessor.java:116)
        at com.sun.faces.config.processor.AbstractConfigProcessor.invokeNext(AbstractConfigProcessor.java:152)
        at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:239)
        at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:435)
        ... 14 more
    Caused by: java.util.concurrent.ExecutionException: java.lang.ExceptionInInitializerError
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:188)
        at com.sun.faces.config.ConfigManager.getAnnotatedClasses(ConfigManager.java:503)
        ... 21 more
    Caused by: java.lang.ExceptionInInitializerError
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at com.sun.faces.util.Util.loadClass(Util.java:325)
        at com.sun.faces.config.AnnotationScanner.processClassList(AnnotationScanner.java:309)
        at com.sun.faces.config.JavaClassScanningAnnotationScanner.getAnnotatedClasses(JavaClassScanningAnnotationScanner.java:128)
        at com.sun.faces.config.DelegatingAnnotationProvider.getAnnotatedClasses(DelegatingAnnotationProvider.java:85)
        at com.sun.faces.config.ConfigManager$AnnotationScanTask.call(ConfigManager.java:931)
        at com.sun.faces.config.ConfigManager$AnnotationScanTask.call(ConfigManager.java:883)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:383)
        ... 14 more
    Caused by: java.lang.NullPointerException
        at es.smt.better.bd.utils.HibernateUtils.getCurrentSession(HibernateUtils.java:38)
        at es.smt.better.bd.dao.UsuarioDAO.getNicks(UsuarioDAO.java:219)
        at es.smt.better.converters.UserConverter.<clinit>(UserConverter.java:23)
        ... 24 more

It is caused by this piece of code:

<many-to-one name="editor" class="es.smt.better.bd.model.Usuario" fetch="select">
            <column name="UsuarioId" not-null="true" />
</many-to-one>

Which is inside this hibernate mapping file:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 21-feb-2014 9:40:43 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="es.smt.better.bd.model.Edicion" table="EdicionProyecto" schema="dbo" catalog="BtterDevDatabase2">
        <id name="edicionId" type="java.lang.Integer">
            <column name="EdicionId" />
            <generator class="native" />
        </id>
        <property name="fecha" type="timestamp">
            <column name="Fecha" length="23" not-null="true" />
        </property>
        <many-to-one name="editor" class="es.smt.better.bd.model.Usuario" fetch="select">
            <column name="UsuarioId" not-null="true" />
        </many-to-one>

        <many-to-one name="proyecto" class="es.smt.better.bd.model.Proyecto" fetch="select">
            <column name="ProyectoId" not-null="true" />
        </many-to-one>

    </class>
</hibernate-mapping>

What i am trying to do is to add a new entity called Edicion which contains a reference to "proyecto" class and other to "usuario". The thing i don't understand here is that the reference (foreign key in database) to proyecto works well but usuario (foreign key also) gives me this configuration error while doing the same coding. If i comment the piece of code of "usuario" posted before the deployment works but if i leave it uncommented it fails.

Please i've been hours trying to solve it without any result, if you can show me any clue about what could it be i would be very grateful.

Thanks in advance.

Hugo
  • 1,662
  • 18
  • 35
  • You got NullPointerException at es.smt.better.bd.utils.HibernateUtils.getCurrentSession(HibernateUtils.java:38) you should check what is there a null. – Krzysztof Bogdan Feb 21 '14 at 19:51
  • In that line i only do SessionFactory.openSession(), how can i know what's NULL ¿? i mean, it's not an empty field in an assignation or something. It's just a configuration error, and as i say in the question, if i quit this code --> " " it doesnt throw the error... Thank you very much for the answer anyway – Hugo Feb 24 '14 at 08:53

1 Answers1

0

Ok, it's already solved, it was an stupid error. I changed one property name in Edicion.java without changing its naming also in the corresponding getter and setter. Some hours lost for a silly error... grrrr

thanks anyway!

have a nice day

Hugo
  • 1,662
  • 18
  • 35