У меня есть веб-приложение, работающее с использованием spring и mongodb. он работает нормально, пока я не разверну новую версию приложения, используя tomcat deploy api (к тому же, в любом случае).
Я заметил, что подключения монго увеличиваются после развертывания нового приложения
Журналы кота показывают следующее падение
05-Apr-2019 23: 59: 55.579 ИНФОРМАЦИЯ [cluster-ClusterId {value = '5ca72a9851187904a9f63de1', description = 'null'} - 127.0.0.1:27017] org.apache.catalina.loader.WebappClassLoaderBase.checkLoadingStateForleg доступ: этот экземпляр веб-приложения уже остановлен. Не удалось загрузить [com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable]. Следующая трассировка стека генерируется для целей отладки, а также для попытки завершить поток, вызвавший несанкционированный доступ.
java.lang.IllegalStateException: незаконный доступ: этот экземпляр веб-приложения уже остановлен. Не удалось загрузить [com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable]. Следующая трассировка стека генерируется для целей отладки, а также для попытки завершить поток, вызвавший несанкционированный доступ.
в org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading (WebappClassLoaderBase.java:1383)
в org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading (WebappClassLoaderBase.java:1371)
в org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1224)
в org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1186)
в ch.qos.logback.classic.spi.PackagingDataCalculator.loadClass (PackagingDataCalculator.java:204)
в ch.qos.logback.classic.spi.PackagingDataCalculator.bestEffortLoadClass (PackagingDataCalculator.java:228)
в ch.qos.logback.classic.spi.PackagingDataCalculator.computeBySTEP (PackagingDataCalculator.java:135)
в ch.qos.logback.classic.spi.PackagingDataCalculator.populateUncommonFrames (PackagingDataCalculator.java:111)
в ch.qos.logback.classic.spi.PackagingDataCalculator.populateFrames (PackagingDataCalculator.java:104)
в ch.qos.logback.classic.spi.PackagingDataCalculator.calculate (PackagingDataCalculator.java:58)
в ch.qos.logback.classic.spi.ThrowableProxy.calculatePackagingData (ThrowableProxy.java:142)
в ch.qos.logback.classic.spi.LoggingEvent. (LoggingEvent.java:122)
в ch.qos.logback.classic.Logger.buildLoggingEventAndAppend (Logger.java:419)
в ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus (Logger.java:383)
на ch.qos.logback.classic.Logger.warn (Logger.java:692)
на com.mongodb.diagnostics.logging.SLF4JLogger.warn (SLF4JLogger.java:91)
в com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable.run (DefaultServerMonitor.java:151)
в java.base / java.lang.Thread.run (Thread.java:844)
Раньше я копировал файл war в каталог tomcat. Теперь я использую команду curl и API Tomcat. Но
private ServerAddress server = new ServerAddress("127.0.0.1", 27017);
///if server requires authentication
//private List<MongoCredential> creds = new ArrayList<MongoCredential>();
public MongoClient mongoClient() {
MongoClientOptions.Builder optionsBuilder = new MongoClientOptions.Builder();
optionsBuilder.connectionsPerHost(8);
optionsBuilder.maxWaitTime(1500);
optionsBuilder.connectTimeout(1000);
optionsBuilder.socketTimeout(1500);
optionsBuilder.socketKeepAlive(true);
MongoClientOptions options = optionsBuilder.build();
return new MongoClient(server, options);
// creds.add(MongoCredential.createCredential("username", "database", "password".toCharArray()));
// return new MongoClient(server, creds, options);
}
Я ожидаю, что сервер после развертывания должен работать с новыми подключениями.