Skip to content
Snippets Groups Projects
Commit 598fc2e3 authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Add sql background runner to keep connection open

parent 03f6bc67
No related branches found
No related tags found
No related merge requests found
......@@ -131,6 +131,11 @@
</goals>
</execution>
</executions>
<configuration>
<args>
<arg>-deprecation</arg>
</args>
</configuration>
</plugin>
<plugin>
......
......@@ -17,6 +17,7 @@ import de.tobias.playpad.server.server.plugin.{PluginGet, PluginList}
import de.tobias.playpad.server.server.project._
import de.tobias.playpad.server.server.project.sync.ProjectSyncHandler
import de.tobias.playpad.server.settings.{Settings, SettingsHandler, SettingsLoader}
import de.tobias.playpad.server.sql.SqlBackgroundRunner
import de.tobias.playpad.server.transformer.JsonTransformer
import spark.Spark._
......@@ -30,8 +31,9 @@ object PlayPadServer extends App {
private var settings: Settings = _
private var databaseUrl: String = _
var connectionSource: JdbcConnectionSource = _
private var connectionSource: JdbcConnectionSource = _
private var databaseConnection: Connection = _
private var databaseBackgroundThread: Thread = _
try {
val app = ApplicationUtils.registerMainApplication(getClass)
......@@ -71,6 +73,11 @@ object PlayPadServer extends App {
TableUtils.createTableIfNotExists(connectionSource, classOf[Session])
SqlHelper.createTables(databaseConnection)
val runner = new SqlBackgroundRunner(databaseConnection)
databaseBackgroundThread = new Thread(runner)
databaseBackgroundThread.start()
// Setup Http Server
port(8090)
threadPool(8, 2, 60 * 60 * 1000)
......@@ -106,8 +113,11 @@ object PlayPadServer extends App {
SettingsHandler.saver.save(settings, settingsPath)
Runtime.getRuntime.addShutdownHook(new Thread(() => {
databaseBackgroundThread.interrupt()
databaseConnection.close()
connectionSource.close()
stop()
}))
} catch {
......
......@@ -54,7 +54,6 @@ class JsonSerializer {
clazz.getDeclaredFields
.filter(f => f.isAnnotationPresent(classOf[JsonName]))
.foreach(f => {
println(clazz + "\t" + f.getName)
f.setAccessible(true)
val annotation = f.getAnnotation(classOf[JsonName])
val value = jsonObject.get(annotation.value())
......
......@@ -9,7 +9,7 @@ import java.nio.file.Path
trait SettingsSaver {
@throws[IOException]
def save(settings: Settings, path: Path)
def save(settings: Settings, path: Path): Unit
def default(path: Path): Unit = save(new Settings(), path)
}
package de.tobias.playpad.server.sql
import java.sql.Connection
class SqlBackgroundRunner(connection: Connection) extends Runnable {
private val SLEEP = 5 * 60 * 1000
override def run(): Unit = {
while (!Thread.interrupted()) {
val statement = connection.prepareStatement("SHOW TABLES;")
val resultSet = statement.executeQuery()
resultSet.close()
statement.close()
try {
Thread.sleep(SLEEP)
} catch {
case _: InterruptedException => return
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment