Java 停止和重新启动嵌入式Tomcat8失败,端口已在使用中

Java 停止和重新启动嵌入式Tomcat8失败,端口已在使用中,java,kotlin,tomcat,Java,Kotlin,Tomcat,我有java(kotlin)应用程序启动多个嵌入式服务器。没关系。我也有一些单元测试,它在每个单元之前启动这些服务器,在每个单元之后停止它们 tomcat上的stop方法毫无例外地完成,但随后的服务器启动失败,端口正在使用中 我的基类相当标准 open class TomcatBase( val tomcat: Tomcat = Tomcat() ) { val context:Context val contextPath:String init {

我有java(kotlin)应用程序启动多个嵌入式服务器。没关系。我也有一些单元测试,它在每个单元之前启动这些服务器,在每个单元之后停止它们

tomcat上的stop方法毫无例外地完成,但随后的服务器启动失败,端口正在使用中

我的基类相当标准

open class TomcatBase(
    val tomcat: Tomcat = Tomcat()
) {
    val context:Context
    val contextPath:String

    init {
        tomcat.engine.name=UUID.randomUUID().toString()
        contextPath = ""
        val dir_url: URL = ClassLoader.getSystemResource("static")
        val docBase = File(dir_url.toURI()).absolutePath
        context = tomcat.addContext(contextPath, docBase)
    }

    fun addServlet(path: String, servlet: Servlet) {...}

    fun start() {
        tomcat.start()
        context.resources.isCachingAllowed = false
    }

    fun stop() {
        tomcat.stop()        
    }
}

事实证明还有destroy()方法,它完成了这个任务

fun stop() {
        tomcat.stop()
        tomcat.destroy()
    }