Как реализовать maual производное с использованием ServletContextListener, учитывая, что это может предотвратить утечку памяти? - PullRequest
0 голосов
/ 24 сентября 2019

Веб-приложение [alloFactorV3] зарегистрировало драйвер JDBC [com.mysql.jdbc.Driver], но не удалось отменить его регистрацию при остановке веб-приложения.Чтобы предотвратить утечку памяти, драйвер JDBC был принудительно незарегистрирован.

Кажется, что веб-приложение [alloFactorV3] запустило поток с именем [Поток очистки заброшенного соединения], но не смогло его остановить.Это очень вероятно, чтобы создать утечку памяти.Трассировка стека потока: java.lang.Object.wait(Native Method)

Я регулярно сталкиваюсь с проблемами утечки памяти. Это часто происходит, так как мы обновили (security ypdate) сервер ubuntu (я не уверен, что какие-либо файлы, связанные с tomcat8, изменены, напримерserver.xml)

Я закрыл незамкнутые InputStreams / OutputStreams, так как я узнал, что они вызывают утечку памяти.Я думаю, что эта проблема может иметь отношение к JDBCDriver.Я новичок, поэтому, пожалуйста, любезно посоветуйте.

Если ручная регистрация регистрирует утечку памяти, как я могу реализовать ее в проекте пружин сопоставления на основе xml?

Приведенный ниже код является моей конфигурацией для соединения jdbc

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

        <property name="driverClass">
            <value>${jdbc.driverClassName}</value>
        </property>
        <property name="jdbcUrl">
            <value>${jdbc.url}</value>
        </property>
        <property name="user">
            <value>${jdbc.username}</value>
        </property>
        <property name="password">
            <value>${jdbc.password}</value>
        </property>


        <property name="idleConnectionTestPeriod"><value>22000</value></property>
        <property name="preferredTestQuery"><value>SELECT 1</value></property>

</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>

    <property name="mappingJarLocations" value="/WEB-INF/lib/alloFactor_V3.jar">
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.query.factory_class">${hibernate.query_factory_class}</prop>
            <prop key="hibernate.generate_statistics">true</prop>
            <prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>

        </props>
    </property>


</bean>


<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>


<bean id="baseTransactionProxy"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
    abstract="true">
    <property name="transactionManager">
        <ref bean="transactionManager" />
    </property>
    <property name="transactionAttributes">
        <props>
            <prop key="get*">PROPAGATION_REQUIRED</prop>
            <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
            <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
            <prop key="store*">PROPAGATION_REQUIRED</prop>
            <prop key="update*">PROPAGATION_REQUIRED</prop>
            <prop key="delete*">PROPAGATION_REQUIRED</prop>
            <prop key="generate*">PROPAGATION_REQUIRED</prop>
        </props>
    </property>
</bean>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...