【发布时间】:2017-01-03 20:52:27
【问题描述】:
有没有办法在同一个 JVM 中运行多个 Sparkjava 服务器实例?我在“插件”软件中使用它,根据外部情况,我的插件的多个实例可能会启动,然后导致
java.lang.IllegalStateException: This must be done before route mapping has begun
at spark.SparkBase.throwBeforeRouteMappingException(SparkBase.java:256)
at spark.SparkBase.port(SparkBase.java:101)
at com.foo.bar.a(SourceFile:59)
在我看来,它是围绕代码中的静态字段大量构建的代码,所以我正在考虑一个类加载器技巧或使用SparkServerFactory 以某种方式消除SparkBase。
【问题讨论】:
-
可能这些实例使用相同的端口号。当您启动 spark 实例时,它必须在自己的端口上运行
-
不,当您尝试初始化第二个端口时会发生这种情况,无论端口是否相同。第一次初始化将标志设置为 true,从那时起,大多数配置方法都被锁定。
-
我在使用 sparkjava 运行集成测试时遇到了同样的问题。作为一种解决方法,请确保为 maven 故障安全插件设置 forkCount=1/reuseForks=false 以在其自己的 JVM 进程中执行每个测试类(请参阅maven.apache.org/surefire/maven-surefire-plugin/examples/…)
标签: java spark-java