Hibernate - почему возникает ExceptionInInitializerError ? в избранное  новое    подписка   модер.  /!\
От: wagtail 
Дата: 24.09.04 10:35
Скачал hibernate, установил под томкатом как описано у них в доке, сделал пробный сервлет почти один-в-один их пример с кошками (только поля другие и база — firebird), пытаюсь запустить — получаю такой вот эксепшн:

----------------
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.ExceptionInInitializerError
tma.test.HibernateUtil.<clinit>(HibernateUtil.java:26)
tma.test.Tester.doGet(Tester.java:27)
javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.25 logs.
----------------

В чем дело, подскажите плз... ( Или где копать хотя бы?
Re: Hibernate - почему возникает ExceptionInInitializerError в избранное  новое    модер.  /!\
От: Blazkowicz модератор 
Дата: 24.09.04 10:37
Здравствуйте, wagtail, Вы писали:

W>java.lang.ExceptionInInitializerError

W>tma.test.HibernateUtil.<clinit>(HibernateUtil.java:26)
W>tma.test.Tester.doGet(Tester.java:27)
W>javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
W>javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

W>note The full stack trace of the root cause is available in the Apache Tomcat/5.0.25 logs.


А там что? Есть более полный трейс в логах?
Re: Hibernate - почему возникает ExceptionInInitializerError в избранное  новое    модер.  /!\
От: Luckerhttp://lucker.intervelopers.com/
Дата: 24.09.04 10:38
Здравствуйте, wagtail, Вы писали:


W>В чем дело, подскажите плз... ( Или где копать хотя бы?


tma.test.HibernateUtil в студию!
Re: Hibernate - почему возникает ExceptionInInitializerError в избранное  новое    модер.  /!\
От: Blazkowicz модератор 
Дата: 24.09.04 10:39
Здравствуйте, wagtail, Вы писали:


W>java.lang.ExceptionInInitializerError

W>tma.test.HibernateUtil.<clinit>(HibernateUtil.java:26)
W>tma.test.Tester.doGet(Tester.java:27)
W>javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
W>javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

Скорее всего у тебя в HibernateUtil есть статическое поле. Которое инициализируется сразу в объявлении типа

pulic static field singleton = new SomeClass();


А в конструкторе SomeClass происходит исключение.
Re[2]: Hibernate - почему возникает ExceptionInInitializerEr в избранное  новое    модер.  /!\
От: wagtail 
Дата: 24.09.04 11:30
Здравствуйте, Blazkowicz, Вы писали:

B>А там что? Есть более полный трейс в логах?


2004-09-24 16:25:01 StandardWrapperValve[Tester]: Servlet.service() for servlet Tester threw exception
java.lang.ExceptionInInitializerError
        at tma.test.HibernateUtil.<clinit>(HibernateUtil.java:26)
        at tma.test.Tester.doGet(Tester.java:27)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
        at java.lang.Thread.run(Unknown Source)
Caused by: net.sf.hibernate.HibernateException: Could not find datasource
        at net.sf.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:48)
        at net.sf.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:83)
        at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:65)
        at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1155)
        at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:789)
        at tma.test.HibernateUtil.<clinit>(HibernateUtil.java:23)
        ... 27 more
Caused by: javax.naming.NameNotFoundException: Name phones is not bound in this Context
        at org.apache.naming.NamingContext.lookup(NamingContext.java:768)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:138)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:779)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:138)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:779)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:151)
        at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136)
        at javax.naming.InitialContext.lookup(Unknown Source)
        at net.sf.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:44)


Я так понимаю (или я не прав?), что дело в том, что hibernate не видит мой datasource. Но вот почему — ума не приложу! Я вообще чайник еще вв этом деле, но вроде все задал правильно:

hibernate.cfg.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="connection.datasource">java:comp/env/phones</property>
        <property name="show_sql">false</property>
        <property name="dialect">net.sf.hibernate.dialect.FirebirdDialect</property>

        <!-- Mapping files -->
        <mapping resource="Phone.hbm.xml"/>

    </session-factory>

</hibernate-configuration>


server.xml:
    <Resource name="phones" scope="Shareable" type="javax.sql.DataSource"/>
    <ResourceParams name="phones">
      <parameter>
        <name>validationQuery</name>
        <value>select * from rbd$database</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>10</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>masterkey</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:firebirdsql:localhost/3050:phones</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>org.firebirdsql.jdbc.FBDriver</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>5</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>SYSDBA</value>
      </parameter>
    </ResourceParams>


Все похоже на их пример с кошками, но вот не работает почему-то.
Re[2]: Hibernate - почему возникает ExceptionInInitializerEr в избранное  новое    модер.  /!\
От: wagtail 
Дата: 24.09.04 11:31
Здравствуйте, Lucker, Вы писали:

L>tma.test.HibernateUtil в студию!


Их стандартный, из примера с кошками. Ничего не менял
Re[3]: Hibernate - почему возникает ExceptionInInitializerEr в избранное  новое    модер.  /!\
От: Luckerhttp://lucker.intervelopers.com/
Дата: 24.09.04 11:45
Оценка: +1
Здравствуйте, wagtail, Вы писали:

W>Здравствуйте, Blazkowicz, Вы писали:


W>Я так понимаю (или я не прав?), что дело в том, что hibernate не видит мой datasource. Но вот почему — ума не приложу! Я вообще чайник еще вв этом деле, но вроде все задал правильно:


не видит. А в web.xml не прописывал
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>phones</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
 </resource-ref>