Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / подружить tomcat и hibernate / 25 сообщений из 160, страница 1 из 7
26.06.2012, 16:24:16
    #37855398
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
собственно вопрос то в следующем:
создал значит пул соединений к БД (прописал в /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
26.06.2012, 17:10:41
    #37855530
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
32338,

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

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

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

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

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

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

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

потому как мимо JNDI ходит отлично к БД но я хочу юзать именно DBCP (конечно можно настроить и c3p0, но блин зачем козе баян)
...
Рейтинг: 0 / 0
27.06.2012, 07:40:29
    #37856122
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
может быть конечно тут ошибка???? ????
Код: 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
27.06.2012, 09:32:08
    #37856195
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
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
27.06.2012, 09:38:05
    #37856203
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
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
27.06.2012, 09:40:43
    #37856209
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
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
27.06.2012, 09:51:03
    #37856226
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
в спирнге немного ошибся там вместо
<property name="dataSource" ref="dS" />
<property name="dataSource" ref="dataSource" />
...
Рейтинг: 0 / 0
27.06.2012, 10:46:11
    #37856344
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
попробовал изолировать проблему, а точнее убрал Spring из проекта (благо тока учебный проект 3 строки =) )
прописал конфиг hibernate (правдо подключение создавал не пулом) и Hibernate заработал, вернул запись и все такое

т.е. что-то в конфиге Spring не пашет, вопрос почему? и где косяк, ведь все создается без ошибок но sessionFactory пуст...
...
Рейтинг: 0 / 0
27.06.2012, 11:12:16
    #37856429
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
В 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
27.06.2012, 11:17:43
    #37856441
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
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
27.06.2012, 11:33:50
    #37856493
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
Почитайте в логе как создаётся UserDAO. Там должно быть написано почему sessionFactory не заинжектилась. Давайте, в общем, лог посмотрим.
...
Рейтинг: 0 / 0
27.06.2012, 11:49:00
    #37856563
32338
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подружить tomcat и hibernate
Blazkowicz,

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

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



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

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

все понял =)

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

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

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


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