From 2a7e44d32cca964dbfebe86cd6d431510fb22a07 Mon Sep 17 00:00:00 2001 From: Brian Topping Date: Tue, 12 Jan 2016 08:56:18 -0700 Subject: [PATCH] =htp #19331 Make FileAndResourceDirectives work in OSGi environments --- .../server/directives/FileAndResourceDirectives.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/akka-http/src/main/scala/akka/http/scaladsl/server/directives/FileAndResourceDirectives.scala b/akka-http/src/main/scala/akka/http/scaladsl/server/directives/FileAndResourceDirectives.scala index 45fbfaead6..cc4f13f064 100644 --- a/akka-http/src/main/scala/akka/http/scaladsl/server/directives/FileAndResourceDirectives.scala +++ b/akka-http/src/main/scala/akka/http/scaladsl/server/directives/FileAndResourceDirectives.scala @@ -222,7 +222,14 @@ object FileAndResourceDirectives extends FileAndResourceDirectives { ResourceFile(url, entry.getSize, entry.getTime) } } finally jar.close() - case _ ⇒ None + case _ ⇒ + val conn = url.openConnection() + try { + conn.setUseCaches(false) // otherwise the JDK will keep the connection open when we close! + val len = conn.getContentLength + val lm = conn.getLastModified + Some(ResourceFile(url, len, lm)) + } finally conn.getInputStream.close() } } case class ResourceFile(url: URL, length: Long, lastModified: Long)