На отдельном сервере Jetty 9.4 я развертываю приложение, которое использует JPA в спящем режиме. Я наблюдал следующее странное поведение (может быть, это и не странно, я уверен, что мне просто не хватает какой-то концепции)
Если я явно объявлю свойства подключения к базе данных в XML-файле сохранения приложений, я получу 15-20 мс ответов для службы, которая считывает некоторые фиктивные данные из базы данных. Это похоже на 300 мс для первой попытки, затем срабатывает объединение.
Если я использую источник данных JNDI и ссылаюсь на него в XML-файле постоянства, я получаю 1 секунду начального времени отклика, тогда оно составляет от 300 до 400 мс в той же локальной среде.
У меня вопрос: это нормальное поведение? Всегда ли JNDI такой медленный, или это может быть просто плохая конфигурация? Это медленная реализация причала?
PS Я попытался объявить PoolDataSource в качестве ресурса JNDI, но файл persistence.xml не принимает его.
Заранее спасибо за ответы.
постоянство.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence <?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="mydatasource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/mydatasource</Arg>
<Arg>
<New class="org.postgresql.ds.PGSimpleDataSource">
<Set name="databaseName">postgres</Set>
<Set name="serverName">localhost</Set>
<Set name="portNumber">5433</Set>
<Set name="user">user</Set>
<Set name="password">password</Set>
</New>
</Arg>
</New>
</Configure>
0.xsd"
version="2.0">
<persistence-unit name="flapweb">
<non-jta-data-source>java:comp/env/jdbc/mydatasource</non-jta-data-source>
<properties>
<!--property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5433/postgres" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="password" /-->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <!-- DB Dialect -->
<property name="hibernate.hbm2ddl.auto" value="update" /> <!-- create / create-drop / update -->
<property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
<property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.timeout" value="500" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test_period" value="2000" />
</properties>
</persistence-unit>
</persistence>
Декларация JNDI источника данных
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<New id="mydatasource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/mydatasource</Arg>
<Arg>
<New class="org.postgresql.ds.PGSimpleDataSource">
<Set name="databaseName">postgres</Set>
<Set name="serverName">localhost</Set>
<Set name="portNumber">5433</Set>
<Set name="user">user</Set>
<Set name="password">password</Set>
</New>
</Arg>
</New>
</Configure>
<resource-ref>
для вашегоjdbc/mydatasource
, объявленного в вашемWEB-INF/web.xml
? - person Joakim Erdfelt   schedule 28.02.2018org.postgresql.ds.PGConnectionPoolDataSource
- eclipse.org/jetty/documentation/9.4.x/ - person Joakim Erdfelt   schedule 28.02.2018