Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Интеграция spring3 hibernate4. Проблема с datasource / 6 сообщений из 6, страница 1 из 1
22.05.2012, 04:18:17
    #37805007
tepka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
Утро коллеги,
Уж простите, но я сразу к делу, ибо я с этими xml'ми уже сутки бьюсь :)

Есть сервер приложения tomcat6. У него в файле context.xml вписаны ресурс.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Resource name="jdbc/DarkWeb" 
	auth="Container" 
	type="javax.sql.DataSource" 
	factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
	username="root" 
	password="ххххххх" 
	validationQuery="SELECT 1" 
	driverClassName="com.mysql.jdbc.Driver" 
	url="jdbc:mysql://ххх.ххх.ххх.ххх:3306/DarkWeb?autoReconnectForPools=true" 
	maxActive="100" 
	maxIdle="5" 
	removeAbandoned="true" 
	removeAbandonedTimeout="30" 
	logAbandoned="true" />



Сей ресурс вроде работает, проверенно путем теста простой jsp'ихой. По крайне мере jsp'и напрямую селекты из ресурса делает(jsp запускается напрямую минуя dao и сервси-левел)


При попытки открыть транзакцию из бина при следующей конфигурации хибирнейта\спринга
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
...
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:comp/env/jdbc/DarkWeb</value>
        </property>
    </bean> 

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation">
            <value>/WEB-INF/db/hibernate.cfg.xml</value>
        </property>        
    </bean>

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



Вываливаюсь в эксепшен:
Код: 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.
30.
31.
32.
33.
34.
35.
36.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
....
java.lang.UnsupportedOperationException: Not supported by BasicDataSource
	org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1062)
	org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141)
	org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276)
	org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
	org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
	org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
	org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
	org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1263)
	org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:399)
	org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
	org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
	org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
	org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
	$Proxy26.userList(Unknown Source)
	com.seostella.spring.controller.UserController.listUsers(UserController.java:33)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
	org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)



Если чутка подправить конфигурацию dataSource вот так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
     <!-- Непосредственно бин dataSource --> 
     <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="com.mysql.jdbc.Driver"
          p:url="jdbc:mysql://78.46.147.206:3306/DarkWeb"
          p:username="root"
          p:password="TepKyh69!"
    />      

    <!-- Настройки фабрики сессий Хибернейта -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
    </bean>
...


То всё работает, но я естественно так не хочу :) Хочу чтобы пулами управлял tomcat, а не spring напрямую лез в базу
...
Рейтинг: 0 / 0
22.05.2012, 05:12:49
    #37805019
tepka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
кхм, поменял версию хибирнейта с 4.1 на 3.6.10.Final все заработало.
Если не поборю останусь на 3ем хибирнейте.

Для истории:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- <property name="dataSource" ref="dataSource"/> -->
        <property name="configLocation">
            <value>/WEB-INF/db/hibernate.cfg.xml</value>
        </property>        
    </bean>

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


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="connection.datasource">java:comp/env/jdbc/DarkWeb</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.show_sql">true</property>
        <mapping class="com.seostella.spring.domain.user.User" />
        <mapping class="com.seostella.spring.domain.Country" />
    </session-factory>
</hibernate-configuration>
...
Рейтинг: 0 / 0
22.05.2012, 13:02:13
    #37805671
Joe R
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
tepka,

У меня было что-то похожее. Работал хибер 4 пока не решил соединить его со спрингом. Не получилось, хотя с 3.6 работает прекрасно. Оказывается там дело в спринге, у него ещё вроде как до конца не отлажена интеграция с 4-й версией.
...
Рейтинг: 0 / 0
22.05.2012, 13:11:00
    #37805699
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
Hibernate у вас почему-то пытается вызвать getConnection указывая имя и пароль. Откуда он их берет? А Tomcat DataSource так не умеет. Только логин и пароль из context.xml.

И, да. Помимо этого Spring вроде ещё не достаточно хорошо поддерживает 4й хибер. но это к вашей ошибке вроде не относится.
...
Рейтинг: 0 / 0
22.05.2012, 13:24:42
    #37805750
tepka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
BlazkowiczИ, да. Помимо этого Spring вроде ещё не достаточно хорошо поддерживает 4й хибер. но это к вашей ошибке вроде не относится.

эх, значит realese note'ы врут спринговые. А у них ведь написано
official support for Hibernate 4.0.0/4.0.1 as well as Hibernate 4.1
...
Рейтинг: 0 / 0
22.05.2012, 13:29:01
    #37805759
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интеграция spring3 hibernate4. Проблема с datasource
tepkaэх, значит realese note'ы врут спринговые. А у них ведь написано
official support for Hibernate 4.0.0/4.0.1 as well as Hibernate 4.1
1) Саппорт есть, но уже не первый раз читаю что где-то не клеиться.
2) К вашей проблеме Spring интеграция отношения, вроде, не имеет.
3) Подключите исходники хибера и посмотрите в DatasourceConnectionProviderImpl, почему он пытается юзера использовать и откуда его берет.
4) В самом Hibernate4 вроде смысла особого нет. Там никаких серьезных новшеств не наблюдается.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Интеграция spring3 hibernate4. Проблема с datasource / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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