私は非 Web アプリケーションで春を利用しており、DB を操作するために休止状態を使用しています。私が経験している問題は、「registerShutdownHook();」の間です。スプリング コンテキスト コンテナを閉じると、適切にシャットダウンされず、JPA のリソースが閉じられないため、DB への接続が限界に達しています。
<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"/>
上記の構成を使用して JPA レイヤーを起動し、「@Transactional」アノテーションを使用して EM を DAO に挿入します。
たぶん、誰かが私に何が足りないのか、またはスタンドアロン環境で JPA セッションを適切に閉じる方法を教えてくれるでしょうか?
ありがとうございました、
私が取得している PS Exception は次のとおりです: java.net.SocketException: No buffer space available (最大接続数に達しましたか?): connect