Плагин Maven Exec, сочетание Spring и ojdbc7 предотвращает отключение JVM - PullRequest
0 голосов
/ 13 мая 2019
exec-maven-plugin - 1.6.0
Spring - 5.1.5
com.oracle:ojdbc7 - 12.1.0.2

У меня есть простой Java-класс, который запускает Spring AnnotationConfigApplicationContext, который содержит DriverManagerDataSource (база данных Oracle).Затем класс вставляет несколько строк перед вызовом метода context.close().

Это прекрасно работает, когда я запускаю класс из моего Intellij.Однако, когда я запускаю это через exec-maven-plugin, я получаю следующую ошибку

[WARNING] thread Thread[oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource.BlockReleaser,4,MYCLASS] was interrupted but is still alive after waiting at least 14999msecs
[WARNING] thread Thread[oracle.jdbc.driver.BlockSource.ThreadedCachingBlockSource.BlockReleaser,4,MYCLASS] will linger despite being asked to die via interruption
[WARNING] NOTE: 1 thread(s) did not finish despite being asked to  via interruption. This is not a problem with exec:java, it is a problem with the running code. Although not serious, it should be remedied.
[WARNING] Couldn't destroy threadgroup org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=MYCLASS,maxpri=10]

Есть некоторые ссылки на утечки памяти вокруг класса ThreadedCachingBlockSource, но ничего конкретного относительно того, что я должен делать.

Это происходит только тогда, когда я запускаю через exec-maven-plugin, а НЕ когда говорю правый клик и запускаю класс в Intellij

Я попытался явно вызвать DriverManager.getDrivers и deregisterDriverэто не помогает

1 Ответ

0 голосов
/ 24 июня 2019

После отладки кажется, что это не имеет ничего общего с ojdbc, но все, что связано с плагином exec maven.

Как объяснено в https://github.com/camelinaction/camelinaction2/issues/52 добавление -Dexec.cleanupDaemonThreads=false исправило проблему

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