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

Кое как добился того, что 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
Конфигурация Hibernate для доступа к БД через GlassFish
    #39800980
Фотография 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 пытается что-то писать в Виндовс-реестр и обламывается. Толи прав не хватило толи нет самой ветки.
Вобщем не знаю что делать. Погугли в стековерфлоу - масса вариантов как решать.
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39800982
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801008
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
База поднята?
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801011
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JNDI без всякого хибера работает?
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801014
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801015
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123JNDI без всякого хибера работает?

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

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

На серверах приложений пулы создаются серверами, а потом из пула коннекты пользуются всяческими хиберами. При этом как настроить запрос коннекта их пула - чистое админство, просто читаем мануалы и всё сразу начинает работать (ну почти сразу).
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801050
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex55555, если бы можно было бы просто прочитать мнуал и сделать по аналогии, и всё заработало бы, то я бы не спрашивал.
Не работает так.
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801168
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801170
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__miralex55555, если бы можно было бы просто прочитать мнуал и сделать по аналогии, и всё заработало бы, то я бы не спрашивал.
Не работает так.
А сорцы у тебя где-то в гитхабе лежат?
...
Рейтинг: 0 / 0
Конфигурация Hibernate для доступа к БД через GlassFish
    #39801216
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mirPetro123JNDI без всякого хибера работает?

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

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


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

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

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


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