powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / подружить tomcat и hibernate
25 сообщений из 160, страница 1 из 7
подружить tomcat и hibernate
    #37855398
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно вопрос то в следующем:
создал значит пул соединений к БД (прописал в /META-INF/context.txt)
пул работает все прекрасно, в ручную все хорошо пускает все пашет selectы идут,
но вот подружить его с Hibernate ну никак не получается

собственно как делаю:
создаю пул так
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<Context antiJARLocking="true" path="/homeWork" >
    <Resource name="jdbc/Sybase" auth="Container" type="javax.sql.DataSource"
        removeAbandoned="true" 
        removeAbandonedTimeout="60"
        maxActive="20" 
        maxIdle="10"
        minIdle="0"
        maxWait="10000"
        username="sa" 
        password="qwerty"
        driverClassName="com.sybase.jdbc3.jdbc.SybDriver"
        url="jdbc:sybase:Tds:localhost:5000/myTestDb"
        testOnBoeeow="true"
        validationQuery="SELECT 1"
        timeBetweenEvictionRunsMillis="20000"
        minEvictableIdleTimeMillis="30000"
        testWhileIdle="true"
    />
</Context> 



в Spring овом контейнере делаю бин и настройку так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/Sybase"/>
        <property name="proxyInterface" value="javax.sql.DataSource"/>
         <property name="resourceRef" value="true" />             
    </bean>    
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.Sybase11Dialect</prop>
            </props>
        </property>
    </bean>


в самом hibernate.cfg.xml
прописал 2 класса (там простые сущность для теста id и name вытаскиваю по load(className.class, 1) )
при попытке что-то получить попадает NullPointerException
в логе на уровне INFO тишь да гладь
на уровне DEBUG жуть ( если надо то выложу )

смотрю в логе когда идет попытка получить что-то из БД нету SQL запроса т.е. sessionFactory видать не создался
куда хоть рыть?

в логе есть пара таких вот строк:
Not binding SessionFactory to JNDI, no JNDI name configured
Instantiated session factory
но я так понимаю что Session factory == null ....

может я как-то криво настроил Hibernate ? (версия 4.1.4.Final ) или в Spring ? (version 3.1.1)
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855530
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338,

Посмотрите в jmx tomcat'a какие пулы он создал(создал ли) и их jndi.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855533
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, а Sybase драйвер вы положили в lib?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855578
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН,

обижаете уважаемый =)
конечно положил и на счет JNDI я ж написал что мимо томката через java/env/jdbc/Sybase ходит => получается что все созданно
да и Spring про отсутствие Jndi молчать не будет....
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855596
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338,
а так
Код: java
1.
<property name="jndiName" value="jdbc/Sybase"/>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855663
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

а так долго и громко ругается что нету JNDI
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37855971
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?
Код: xml
1.
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/Sybase"/>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856110
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

таже беда
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856112
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

кстати так он не сругался, я оказывается уже закоментил его в context =)
но ошибку выдает

и опятьже повторюсь, дело не в JNDI !! либо где-то глубоко в нем

сам он РАБОТАЕТ, не работает Hibernate.... с ним необходимо бороться! с ним =)

потому как мимо JNDI ходит отлично к БД но я хочу юзать именно DBCP (конечно можно настроить и c3p0, но блин зачем козе баян)
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856122
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть конечно тут ошибка???? ????
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    
    @Autowired
    private SessionFactory sessionFactory;
    
    
    @Override
    public User getTerminalBySerialNumber(String serialNumber){
        
        return (User) sessionFactory.getCurrentSession()
                .load(Terminal.class, 2);
         
        
    }
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856195
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338может быть конечно тут ошибка???? ????
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    
    @Autowired
    private SessionFactory sessionFactory;
    
    
    @Override
    public User getTerminalBySerialNumber(String serialNumber){
        
        return (User) sessionFactory.getCurrentSession()
                .load(Terminal.class, 2);
         
        
    }

а весь класс целиком?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856203
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package ru.home.homeWork.dao.impl;

import java.util.List;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import ru.home.homeWork.dao.UserDAO;
import ru.home.homeWork.domain.User;


@Repository(value="UserDAO")
public class UserDaoImpl implements UserDAO {
    
    protected final Logger logger = LoggerFactory.getLogger( getClass() );

    @Autowired
    private SessionFactory sessionFactory;
    
    @Override
    public User getTerminalBySerialNumber(String serialNumber){
        
        return (User) sessionFactory.getCurrentSession()
                .load(Terminal.class, 2);
         
    }
    
}
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856209
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,

а это spring-context.xml все кроме описания beans а то там много всего =)

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    <!-- Включаем опцию использования конфигурационных аннотаций (@Annotation-based configuration)-->
    <context:annotation-config />
        
    <!-- Определяем папки, в которых будем автоматически искать бины-компоненты (@Component, @Service)  -->
    <context:component-scan base-package="ru.home.homeWork.dao" />
    <context:component-scan base-package="ru.home.homeWork.dao.impl" />
    
    <!-- Настраивает управление транзакциями с помощью аннотации @Transactional -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    
    <!-- Менеджер транзакций -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    
    <!-- ну чтож будем пытаться подружить Spring и JNDI Connection Pool -->
    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/Sybase"/>
    
    
    <!-- чтож попробую еще разок приручить страшный Hibernate -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dS" />
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
        <!--<property name="con" value="org.hibernate.cfg.AnnotationConfiguration" /> -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.Sybase11Dialect</prop>
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
                <prop key="hibernate.current_session_context_class">thread</prop>
            </props>
        </property>
    </bean>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856226
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в спирнге немного ошибся там вместо
<property name="dataSource" ref="dS" />
<property name="dataSource" ref="dataSource" />
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856344
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал изолировать проблему, а точнее убрал Spring из проекта (благо тока учебный проект 3 строки =) )
прописал конфиг hibernate (правдо подключение создавал не пулом) и Hibernate заработал, вернул запись и все такое

т.е. что-то в конфиге Spring не пашет, вопрос почему? и где косяк, ведь все создается без ошибок но sessionFactory пуст...
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856429
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В web.xml прописали DataSource?

Код: xml
1.
2.
3.
4.
5.
6.
7.
 
<resource-ref>
        <description>Local DataSource</description>
        <res-ref-name>jdbc/Sybase</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856441
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

да прописан

Код: xml
1.
2.
3.
4.
5.
6.
     <resource-ref>
        <description>Connection Pool</description>
        <res-ref-name>jdbc/Sybase</res-ref-name>
        <res-type>javax.sql.Datasource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856493
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте в логе как создаётся UserDAO. Там должно быть написано почему sessionFactory не заинжектилась. Давайте, в общем, лог посмотрим.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856563
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

собственно выкладываю лог, там ошибок нету..... (уровень лога установлен Debug )
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856586
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё нормально, вроде. Где происходит NPE? В дебаге смотрели что там sessionFactory null? Как и куда инжектили сам UserDAO?
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856619
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

да в дебаге смотрю,
NPE происходит когда я в фильтре вызываю такой вот код:
Код: java
1.
   User u = new UserDaoImpl().getTerminalBySerialNumber('uname');



собственно тут и происходит NPE... что делать тут я не пойму =)
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856634
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

слово инжектили я не понял =)
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856637
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LOL
Я, конечно, подозревал что дело в этом. Но не думал что это окажется правдой.
Когда вы создаёте новый экземпляр UserDaoImpl, спринг о нём ничего не знает и инжектить туда ничего не собирается.
Вам нужно UserDAO получить из спрингового котекста. В идеале, чтобы Spring сам заинжектил его куда нужно.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856641
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
32338слово инжектили я не понял =)
Ну, тогда отложите в стороку код, который вы где-то накопали. И гуглите статьи на тему что такое Dependency Injection вообще и зачем он нужен.
Вы у себя в фильтре начинаете управлять жизненым циклом UserDAO, это именно то с чем борется DI.
...
Рейтинг: 0 / 0
подружить tomcat и hibernate
    #37856665
32338
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

все понял =)

я тут просто проекти этот писал изначально без спринга ваще.... (ну не знал я как его туда применить) и работал напрямую с Hibernate (удобная штука ваще много от много мороки избавляет), а теперь переделываю на RESTFull сервис (ну или точнее на его подобие) вот и подумал про Spring MVC, а если есть Spring MVC то без IoC скучно будет

т.е. я сделал слои DAO, Domain а вот слой Service как бЭ позабыл =) вот и вышла ошибочка....

а так вообще спасибо
...
Рейтинг: 0 / 0
25 сообщений из 160, страница 1 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / подружить tomcat и hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]