如果未关闭,StreamingResponseBody将重用OutputStream。这是预期的吗?

时间:2018-02-06 23:18:37

标签: java spring

我注意到如果curl请求是ctrl + c,则以下代码将使用相同的package mycompany import sbt._ import Keys._ object MyReleaseConfigPlugin extends AutoPlugin { override def trigger: PluginTrigger = allRequirements override def requires = sbtrelease.ReleasePlugin /* common release configuration code example */ import sbtrelease.ReleasePlugin.autoImport._ import ReleaseTransformations._ override lazy val projectSettings = Seq( releaseProcess := Seq[ReleaseStep]( checkSnapshotDependencies, inquireVersions, runClean, setReleaseVersion, commitReleaseVersion, tagRelease, publishArtifacts), releaseIgnoreUntrackedFiles := false, publishMavenStyle := true, credentials += Credentials( "Artifactory Realm", "artifactory.mycompany.com", sys.env.get("REPO_USER").getOrElse(""), sys.env.get("REPO_PASS").getOrElse("")) ) } 对象(调试时的哈希代码相同),然后重新运行。即使使用不同的参数,它也使用相同的OutputStream。这显然导致非常奇怪的输出。

原始输出流在写入OutputStream时开始抛出NullPointerException,因为基础OutputStream不再存在(断开管道)。这就是为什么我认为后续请求会重用相同的HttpOutputStream对象是很奇怪的。

在finally块中关闭输出流可以解决问题。我在网上看到的一些例子没有明确地关闭输出流。是否预期重用OutputStream?有没有人对我为什么会看到这种行为有任何想法?

OutputStream

0 个答案:

没有答案