Я успешно интегрировал спящий режим в своем веб-приложении. Я был счастлив с моей конфигурации persistence.xml
jpa настраиваемый пул соединений
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="PU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLiteDialect" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.connection.url" value="jdbc:sqlite:/tmp/database.db" />
<property name="hibernate.connection.driver_class" value="org.sqlite.JDBC" />
</properties>
</persistence-unit>
</persistence>
Тогда я решил использовать HikariCp соединения Pooler после прочтения this
Встроенный пул соединений не предназначен для производственных сред
С this пример Мне удалось сделать его частично работающим с новым persistence.xml
<persistence-unit name="PU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLiteDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.connection.provider_class" value="com.zaxxer.hikari.hibernate.HikariConnectionProvider" />
<property name="hibernate.hikari.minimumPoolSize" value="20" />
<!-- <property name="hibernate.hikari.maximumPoolSize" value="100" /> -->
<property name="hibernate.hikari.idleTimeout" value="30000" />
<property name="hibernate.hikari.dataSourceClassName" value="org.sqlite.SQLiteDataSource" />
<property name="hibernate.hikari.dataSource.url" value="jdbc:sqlite:/tmp/database.db" />
<!-- <property name="hibernate.hikari.dataSource.user" value="" />
<property name="hibernate.hikari.dataSource.password" value="" /> -->
</properties>
</persistence-unit>
Но я получаю сообщение об ошибке при попытке установить minimumPoolSize, maximumPoolSize, пользователь и пароль. Если прокомментировать их, все будет отлично.
org.hibernate.HibernateException: java.lang.RuntimeException: java.beans.IntrospectionException: Метод не найден: setMinimumPoolSize
Как настроить JPA использовать спящий режим с hikaricp бассейном? Я предпочитаю не разбрасывать содержимое спящего режима в моем коде, так как я хочу сохранить абстрактный абстракцию ORM. Я нашел много путаных материалов и получил больше вопросов, чем аверс. Как связаны persistence.xml, hibernate.properties и hibernate.cfg.xml друг с другом? Что такое JNDI и как его использовать? А что такое конфигурация bean this?
hibernate. * файлы не имеют ничего общего с JPA и не должны использоваться, если вы хотите оставаться портативными. Любой пул соединений может использовать внутренний код реализации JPA (например, вы пытаетесь), или вы можете просто настроить javax.sql.DataSource, который настроен на предоставление пула (а затем его можно использовать с ЛЮБОЙ реализацией JPA) –
Если вы работая с JPA, тогда беспокоиться только о файле persistence.xml для конфигурации. если вы помещаете что-то в файлы спящего режима. * Затем вы настраиваете конкретные параметры Hibernate, которые вы не хотите.Вы будете использовать JNDI для части источника данных, если у вас есть корпоративный сервер (Jboss, weblogic, websphere), вы сможете создать источник данных в консоли администратора сервера (включая конфигурацию пула) и присвоить ему имя JNDI , Вместо того, чтобы настраивать соединения, пулы соединений и т. Д. В файле persistence.xml, вы просто указываете имя jndi в том же файле. – Zeus
Является ли _setting javax.sql.DataSource_ такой же, как _configuring JNDI_? Должен ли я настраивать конкретный файл Catalina на каждом сервере, я развертываю свое веб-приложение в этом случае? – gkiko