Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Конфигурация Hibernate для доступа к БД через GlassFish / 17 сообщений из 17, страница 1 из 1
13.04.2019, 21:50
    #39800975
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Доброго времени!

Кое как добился того, что GlassFish запинговался с моей БД. Создал JDBC resources "jdbc_dbfastwater", в котором указал ранее созданный пул соединений "MySQLPool". Нашёл в интернете описание конфигурации Hibernate, для того чтобы Hibernate создавал сессию не на прямую с моей БД, а через GlassFish, но все конфигурации в формате XML, а у меня конфиг класс. Я попытался дописать в свой конфиг класс Hibernate параметры, которые указывались в XML-файлах, но не получается - JDBC соединение не создаётся:

автор[2019-04-13T20:44:07.780+0500] [glassfish 5.0] [WARNING] [] [java.util.prefs] [tid: _ThreadID=46 _ThreadName=admin-listener(4)] [timeMillis: 1555170247780] [levelValue: 900] [[
Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.]]

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'geographKoordsDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'GeographKoordsService': Unsatisfied dependency expressed through field 'geographKoordsDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'GeographKoordsDao': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in config.HibernateConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.hibernate.SessionFactory]: Factory method 'sessionFactory' threw exception; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

Без GlassFish тестил - всё работает.
Может кто знает, что не хватает в моей конфигурации или что не верно, подскажите.

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
@Configuration
@ComponentScan(basePackages = { "config","controller","dao","entity","service"})
@EnableWebMvc
@EnableTransactionManagement
public class HibernateConfig {
    private static Logger logger=LoggerFactory.getLogger(HibernateConfig.class);
 
    @Bean
    public DataSource getDataSource() {
        DriverManagerDataSource dataSource = null;
        try {
            dataSource = new DriverManagerDataSource();
            dataSource.setDriverClassName("com.mysql.jdbc.Driver");
            dataSource.setUrl("jdbc:mysql://localhost:3306/dbfastwater?useSSL=false");//"jdbc:mysql://localhost:3306/dbfastwater?useSSL=false"
            dataSource.setUsername("root");
            dataSource.setPassword("root");
        } catch (Exception e) {
            logger.error("MysqlDataSource bean cannot be created!", e);
        }
        return dataSource;
    }
    org.springframework.jndi.JndiObjectFactoryBean dataSourseJndi=new org.springframework.jndi.JndiObjectFactoryBean();
 
    private Properties hibernateProperties() {
        Properties hibernateProp = new Properties();
        hibernateProp.put("hibernate.dialect", "org.hibernate.spatial.dialect.mysql.MySQL56SpatialDialect");
        hibernateProp.put("connection.driver_class", "com.mysql.jdbc.Driver");
        hibernateProp.put("current_session_context_class","thread");
        hibernateProp.put("hibernate.connection.datasource","jdbc_dbfastwater");
        hibernateProp.put("hibernate.format_sql", true);
        hibernateProp.put("hibernate.use_sql_comments", true);
        hibernateProp.put("hibernate.show_sql", true);
        hibernateProp.put("hibernate.max_fetch_depth", 3);
        hibernateProp.put("hibernate.jdbc.batch_size", 10);
        hibernateProp.put("hibernate.jdbc.fetch_size", 50);
        hibernateProp.put("hibernate.hbm2ddl.auto","update");
        return hibernateProp;
    }
 
    @Bean
    public SessionFactory sessionFactory() throws IOException {
        LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
        sessionFactoryBean.setDataSource(getDataSource());
        sessionFactoryBean.setPackagesToScan("entity","dao","service");
        sessionFactoryBean.afterPropertiesSet();
        sessionFactoryBean.setHibernateProperties(hibernateProperties());
        return sessionFactoryBean.getObject();
    }
 
    @Bean
    public PlatformTransactionManager transactionManager() throws IOException {
        HibernateTransactionManager transactionManager=new HibernateTransactionManager();
        transactionManager.setSessionFactory(sessionFactory());
        return transactionManager;
    }
}



Пробовал прописывать сервер, порт и название ресурса GlassFish:"jdbc:mysql://localhost:8080/jdbc_dbfastwater":

Код: java
1.
dataSource.setUrl("jdbc:mysql://localhost:4848/jdbc_dbfastwater");
...
Рейтинг: 0 / 0
13.04.2019, 22:52
    #39800980
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Проблема скорее всего в Windows где ты пытаешся запускать среду.

Код: java
1.
2.
[2019-04-13T20:44:07.780+0500] [glassfish 5.0] [WARNING] [] [java.util.prefs] [tid: _ThreadID=46 _ThreadName=admin-listener(4)] [timeMillis: 1555170247780] [levelValue: 900] [[
Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.]]


Java Util Prefs пытается что-то писать в Виндовс-реестр и обламывается. Толи прав не хватило толи нет самой ветки.
Вобщем не знаю что делать. Погугли в стековерфлоу - масса вариантов как решать.
...
Рейтинг: 0 / 0
13.04.2019, 23:13
    #39800982
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
maytonПроблема скорее всего в Windows где ты пытаешся запускать среду.

Код: java
1.
2.
[2019-04-13T20:44:07.780+0500] [glassfish 5.0] [WARNING] [] [java.util.prefs] [tid: _ThreadID=46 _ThreadName=admin-listener(4)] [timeMillis: 1555170247780] [levelValue: 900] [[
Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.]]


Java Util Prefs пытается что-то писать в Виндовс-реестр и обламывается. Толи прав не хватило толи нет самой ветки.
Вобщем не знаю что делать. Погугли в стековерфлоу - масса вариантов как решать.

Но это же вроде предупреждение, а не ошибка?

Запустил Intellije IDEA от имени администратора, предупреждение вроде пропало, но ошибка осталась:

авторClass [ com/querydsl/core/dml/UpdateClause ] not found. Error while loading [ class org.springframework.data.jpa.repository.support.QuerydslRepositorySupport ]]]

[2019-04-14T01:08:06.495+0500] [glassfish 5.0] [WARN] [] [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator] [tid: _ThreadID=45 _ThreadName=admin-listener(4)] [timeMillis: 1555186086495] [levelValue: 900] [[
HHH000342: Could not obtain connection to query metadata : Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.]]

[2019-04-14T01:08:06.526+0500] [glassfish 5.0] [SEVERE] [] [javax.enterprise.web] [tid: _ThreadID=45 _ThreadName=admin-listener(4)] [timeMillis: 1555186086526] [levelValue: 1000] [[
WebModule[/fast-water]StandardWrapper.Throwable
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'geographKoordsDao'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'GeographKoordsService': Unsatisfied dependency expressed through field 'geographKoordsDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'GeographKoordsDao': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in config.HibernateConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.hibernate.SessionFactory]: Factory method 'sessionFactory' threw exception; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
...
Рейтинг: 0 / 0
14.04.2019, 10:03
    #39801008
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
База поднята?
...
Рейтинг: 0 / 0
14.04.2019, 10:25
    #39801011
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
JNDI без всякого хибера работает?
...
Рейтинг: 0 / 0
14.04.2019, 10:40
    #39801014
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
maytonБаза поднята?

Да.
Тестировал без Glassfisha, напрямую ссылку прописывал
Код: java
1.
dataSource.setUrl("jdbc:mysql://localhost:3306/dbfastwater?useSSL=false");



и без вот этих свойств Хибера:
Код: java
1.
2.
hibernateProp.put("current_session_context_class","thread");
hibernateProp.put("hibernate.connection.datasource","jdbc_dbfastwater");



всё работает - соединяется подгружается.

Далее пробую через Glassfish, меняю
Код: java
1.
dataSource.setUrl("jdbc:mysql://localhost:4848/jdbc_dbfastwater");



добавляю:
Код: java
1.
2.
hibernateProp.put("current_session_context_class","thread");
hibernateProp.put("hibernate.connection.datasource","jdbc_dbfastwater");


И вот эта ошибка (
...
Рейтинг: 0 / 0
14.04.2019, 10:42
    #39801015
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Petro123JNDI без всякого хибера работает?

Пинг от созданного пола соединений glassfish к БД проходит.

Что ещё нужно проверить?
...
Рейтинг: 0 / 0
14.04.2019, 13:15
    #39801040
alex55555
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__mirчтобы Hibernate создавал сессию не на прямую с моей БД, а через GlassFish
В общем гуглим про пулы коннектов. Что это и с чем едят.

На серверах приложений пулы создаются серверами, а потом из пула коннекты пользуются всяческими хиберами. При этом как настроить запрос коннекта их пула - чистое админство, просто читаем мануалы и всё сразу начинает работать (ну почти сразу).
...
Рейтинг: 0 / 0
14.04.2019, 13:58
    #39801050
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
alex55555, если бы можно было бы просто прочитать мнуал и сделать по аналогии, и всё заработало бы, то я бы не спрашивал.
Не работает так.
...
Рейтинг: 0 / 0
14.04.2019, 23:19
    #39801168
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__mir, я не понимаю людей который тащат спринг на JavaEE. Запустился на Tomcat и ладненько, зачем тащить 50Мб кода дублирующего код сервера приложений?
Нафига создавать в коде DataSource (getDataSource()), когда JDBC-пул создается в GlassFish?

1. JDBC-пул настраивается в сервере приложений ("добился того, что GlassFish запинговался с моей БД" - это не проблема GlassFish, а просто кто то с трудом выполнил элементарные настройки)

2. Пул цепляется в коде спринга:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Bean(name = "dataSource")
public DataSource getDataSource() {
	DataSource dataSource = null;
	try {
		JndiTemplate jndi = new JndiTemplate();
		dataSource = jndi.lookup("путь к jdbc пулу в JNDI", DataSource.class);
	} catch (NamingException e) {
		LOG.error(e);
	}
	return dataSource;
}



3. Цепляется EntityManager в коде спринга:

Код: java
1.
2.
3.
4.
5.
6.
@Bean
public EntityManagerFactory entityManagerFactory() {
  LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
  ...
  return factory.getObject();
}



4. Тонкие настройки Hibernate размещаются в persistence.xml или при получении бина EntityManager-а как property

В любом случае GlassFish не виноват
...
Рейтинг: 0 / 0
14.04.2019, 23:21
    #39801170
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__miralex55555, если бы можно было бы просто прочитать мнуал и сделать по аналогии, и всё заработало бы, то я бы не спрашивал.
Не работает так.
А сорцы у тебя где-то в гитхабе лежат?
...
Рейтинг: 0 / 0
15.04.2019, 07:45
    #39801216
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__mirPetro123JNDI без всякого хибера работает?

Пинг от созданного пола соединений glassfish к БД проходит.

Что ещё нужно проверить?в коде JNDI 2 строки работает?
Это же очевидно, потыкал в админке кнопки и теперь проверил в коде.
...
Рейтинг: 0 / 0
17.04.2019, 15:40
    #39802897
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Kachalov, спасибо! Буду пробовать.
...
Рейтинг: 0 / 0
17.04.2019, 15:41
    #39802898
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
mayton, нет, в Гитхаб ничего не выкладывал, всё локально
...
Рейтинг: 0 / 0
17.04.2019, 15:45
    #39802901
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Petro123Vlad__i__mirпропущено...


Пинг от созданного пола соединений glassfish к БД проходит.

Что ещё нужно проверить?в коде JNDI 2 строки работает?
Это же очевидно, потыкал в админке кнопки и теперь проверил в коде.

Что значит в коде 2 строки работает? Я же говорю, напрямую без JNDI всё работает.
авторЭто же очевидно, потыкал в админке кнопки и теперь проверил в коде
Какие там кнопки нужно тыкать, я вроде все настройки выполнил?
Что и как нужно проверить в коде?
...
Рейтинг: 0 / 0
17.04.2019, 16:20
    #39802923
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__mirmayton, нет, в Гитхаб ничего не выкладывал, всё локально
Можешь выложить макет где ошибка воспроизводится?
...
Рейтинг: 0 / 0
17.04.2019, 16:32
    #39802933
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конфигурация Hibernate для доступа к БД через GlassFish
Vlad__i__mirЧто значит в коде 2 строки работает? Я же говорю, напрямую без JNDI всё работает.ну как еще говорить.
У меня на сайте в коде, две строчки JNDI работают при коннекте к базе.
А у тебя? Покажи.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Конфигурация Hibernate для доступа к БД через GlassFish / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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