2016-08-16 4 views
0

Я изменил свое приложение с java7 на java8, поскольку я хотел попробовать и использовать выражение лямбда для метода.Пул соединений достиг максимального размера

Впоследствии мне пришлось обновить tomcat7 до tomcat8, так как он больше не хотел запускать мой веб-сервис.

Теперь, так как я изменил его на tomcat8, у меня есть проблемы с пула соединений: \

Что делал до сих пор? Искал SO и google, но не смог найти ничего, связанного с моей проблемой, рядом с настройками C3P0, которые я еще не испытывал.

<property name="connection_provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
<property name="c3p0.minPoolSize">5</property> 
<property name="c3p0.maxPoolSize">100</property> 
<property name="c3p0.acquireIncrement">5</property> 
<property name="c3p0.maxStatements">200</property> 
<property name="c3p0.timeout">180</property> 

Кто-нибудь есть идея для меня, или я должен вернуться к java7, как я не имел никаких проблем вчера.

EDIT: добавлено исключение тзд

SCHWERWIEGEND: Servlet.service() for servlet [RESTservice] in context with path [] threw exception [org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!] with root cause org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!

EDIT 17.08.2016: я переделал приложение, как предложено в ссылке, это было не так много, чтобы изменить, только добавить EntityManager зависимость и создать настойчивость .xml из существующего hibernate.cfg.xml.

Источник должен был внести несколько изменений в реализацию до сих пор, у меня уже были импорт аннотаций и персистентности, и это не было разницей в синтаксисе Hibernate.

Но я сделал это правильно? Я создал один экземпляр JPA в этом случае EntityManager в конструкторе и использую его всюду, мне все еще нужно закрывать и воссоздавать его повсюду?

По крайней мере, проблема, с которой сталкивается в данный момент, - это исключение, которое не позволяет мне экспериментировать дальше.

javax.persistence.PersistenceException: No Persistence provider for EntityManager named ServicePU 

мой persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<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_2_0.xsd" 
    version="2.0"> 

    <persistence-unit name="ServicePU"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <properties> 
      <property name="hibernate.connection.url" value="jdbc:sqlserver://xyz" /> 
      <property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
      <property name="hibernate.connection.username" value="xyz" /> 
      <property name="hibernate.connection.password" value="xyz" /> 
      <property name="hibernate.archive.autodetection" value="class" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 
      <property name="hbm2ddl.auto" value="update" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

Я надеюсь, что драйвер MSSQL разве проблема здесь: =)

+0

Я предположил бы, что вы не закрываете соединения DB, пожалуйста, поделитесь своими реализации – naoru

+0

я оставил работу , поэтому у меня нет исходного кода, но все мои методы выборки имеют эту структуру, сначала getSession(), doStuff на db с циклом foreach, а затем после закрытия сессий. Это плохой подход или мне нужно открыть для каждого отдельного объекта сеанс, а затем закрыть его? – kaya

+0

, если вы убедитесь, что ваше соединение закрыто (даже в случае исключений), это может быть другой проблемой, вы можете попробовать написать тестовый пример с 300 + вставками и убедиться, что вы можете отказаться от этой теории. – naoru

ответ

0

Похоже, что вы не закрываете сделки после каждого доступа к БД , Я бы рекомендовал использовать менеджер JPA лица или мои личные предпочтения, используя структуру пружины, в любом случае эта связь обеспечивает и простой пример http://www.javawebtutor.com/articles/jpa/jpa-example-using-maven.php

+0

Насколько я могу видеть, что это не так много для изменения в моем проекте, могу ли я позволить свой конструктор pojo как есть или изменить его, как в учебнике, конструктор имеет вызовы setMethod, я непосредственно инициировал с помощью this.x = x 'в моем проекте – kaya

+0

, если этот ответ помог вам пометить его как исправить – naoru

+0

Я начал внедрять материал, если это работает, это просто потрясающе, 3-4 лайнера только что получили один вкладыш =) , но я столкнулся с новой проблемой сейчас , я меняю начальный вопрос и добавляю новый Exception – kaya

Смежные вопросы