Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Проблема с hibernate бинами springa в Geronimo


Автор: NiUb 20.7.2009, 20:32
Здравсвуйте
Постараюсь вкратце описать свою проблему:
При деплое вебэппа в Geronimo вылетает иксепшен следующего содержания:

20:04:19,383 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'phonebookOrmDataProvider' defined in ServletContext resource [/WEB-INF/ApplicationContext.xml]: Cannot resolve reference to bean 'phonebookOrmDao' while setting bean property 'pbDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'phonebookOrmDao' defined in ServletContext resource [/WEB-INF/ApplicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: net/sf/hibernate/Session
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'phonebookOrmDao' defined in ServletContext resource [/WEB-INF/ApplicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: net/sf/hibernate/Session

ApplicationConfig выглядит следующим образом : 

Код

<bean id="phonebookOrmDataProvider" class="phonebook.dao.PhonebookDataProvider">
        <property name="pbDao">
            <ref local="phonebookOrmDao"/>
        </property>
    </bean>

      <bean id="phonebookOrmDao" class="phonebook.dao.orm.HibernatePhonebookDao">
               <property name="sessionFactory"><ref local="SessionFactory"/></property>
      </bean>
      
      
      <bean id="SessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="useTransactionAwareDataSource" value="true" />
        <property name="mappingResources" value="phonebook/dao/PhonebookEntry.hbm.xml">
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="connection.pool_size">1</prop>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.DerbyDialect
                </prop>
                <prop key="show_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.cglib.use_reflection_optimizer">
                    false
                </prop>
            </props>
        </property>
    </bean>
     
     
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" />
        <property name="url"
            value="jdbc:derby:new_phonebookdb" />
        <property name="username" value="APP" />
        <property name="password" value="" />
    </bean>
    
    

    
    
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory"><ref bean="SessionFactory"/></property>
    </bean>


Знаю что проблема точно в Спринге, так как если использовать hibernate.hbm.xml всё работает на ура
В этом случае в IoC загружаю только phonebookOrmDataProvider  и phonebookOrmDao  все остальные настройки считываются самим Hibernate из hibernate.hbm.xml

Заранее благодарен за помощь




Автор: MisterCleric 21.7.2009, 00:09
А вот это 
Цитата

java.lang.NoClassDefFoundError: net/sf/hibernate/Session

ни о чем не говорит? Положи рядом со spring.jar еще и hibernate2.jar

Автор: NiUb 21.7.2009, 15:36
хорошо , я попробую, хотя не понимаю из-за чего Geronimo требует классы hibernate2 когда везде и в коде и в конфигах я использую hibernate3


Кстати я попробовал заменить в контексте приложения классы спринга с hibernate3 на просто hibernate и теперь мне Geronimo выбрасывает следующее :

15:30:34,992 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/ApplicationContext.xml]: Class that bean class [org.springframework.orm.hibernate.HibernateTransactionManager] depends on not found; nested exception is java.lang.NoClassDefFoundError: net/sf/hibernate/HibernateException

То есть теперь ему не нравится что то в transactionManager 
Вот привожу пример объявления transactionManager

Код

<bean id="transactionManager"
        class="org.springframework.orm.hibernate.HibernateTransactionManager">
        <property name="sessionFactory"><ref bean="SessionFactory"/></property>
    </bean>




Не понимаю, что ему ещё нужно , уже запарился с этим
Очень рассчитываю на мнение форумчан

Автор: NiUb 22.7.2009, 16:32
Спасибо Помогло Правда для меня до сих пор загадка, для чего нужны были классы из hibernate2

Пришлось к hibernate2.jar кинуть ещё ehcache.jar

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)