J'utilise le printemps dans une application non web et j'utilise hibernate pour travailler avec DB. Le problème que je rencontre est celui de "registerShutdownHook();" ferme le conteneur de contexte de printemps il ne ferme pas correctement et ne ferme pas les ressources pour JPA afin que mes connexions à la DB soient maximisées.Spring JPA/Hibernate dans l'application autonome
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="pu" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false" />
<property name="showSql" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
j'utiliser la configuration présentée ci-dessus pour tirer en couche JPA et utiliser les annotations « @Transactional » pour injecter EM est dans DAO de.
Peut-être que quelqu'un pourrait m'aider ce qui me manque ou comment devrais-je gérer la fermeture correcte des sessions JPA dans un environnement autonome?
Merci,
P.S. Exception Je reçois est: java.net.SocketException: Pas d'espace tampon disponible (nombre maximal de connexions atteint?): Connecter
Je pense que @Transactional n'est PAS pour injecter des EM, n'est-ce pas? –
PersistenceAnnotationBeanPostProcessor - analyse l'annotation @Transactional pour l'injection de fichiers EM, autant que je sache. – Xeperis
Je crois qu'il scanne '@ PersistenceUnit' et' @ PersistenceContext' à la place –