私たちは、私たちのメモリデータベースをきれいにしてから進化させるベーステストを使ってプレイサーバーでテストの構造を作りました。Ebeanのシャットダウンが再生テストで壊れている
public static void ddlConfiguration() {
String serverName = "default";
server = Ebean.getServer(serverName);
ServerConfig config = new ServerConfig();
ddl = new DdlGenerator();
// Get the database engine
String jdbc = settings.get("db.default.url");
String[] splittedUrl = jdbc.split(":");
String engine = splittedUrl[1];
if(engine.equals("h2")){
ddl.setup((SpiEbeanServer) server, new H2Platform(), config);
}else{
ddl.setup((SpiEbeanServer) server, new MySqlPlatform(), config);
}
}
@Before
public void startApp() throws IOException {
app = Helpers.fakeApplication(settings);
Helpers.start(app);
ddlConfiguration();
}
@After
public void stopApp() {
// We clean the database at the end of the test in order not to overwrite
// the onStart App initialization
cleanDb();
Helpers.stop(app);
}
を問題は、一度、すべてのテストが実行されていると、サーバーは次のようにスローされた例外があるshutdows再生:
[error] c.a.e.s.c.DefaultServer - Error unregistering Ebean Ebean:server=default2
javax.management.InstanceNotFoundException: Ebean:server=default2,key=AutoFetch
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) ~[na:1.8.0_72]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:427) ~[na:1.8.0_72]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:415) ~[na:1.8.0_72]
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:546) ~[na:1.8.0_72]
at com.avaje.ebeaninternal.server.core.DefaultServer.shutdownInternal(DefaultServer.java:406) [avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.shutdownManaged(DefaultServer.java:379) [avaje-ebeanorm.jar:na]
[error] c.a.e.s.c.DefaultServer - Error unregistering Ebean Ebean:server=default3
javax.management.InstanceNotFoundException: Ebean:server=default3,key=AutoFetch
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095) ~[na:1.8.0_72]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:427) ~[na:1.8.0_72]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:415) ~[na:1.8.0_72]
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:546) ~[na:1.8.0_72]
at com.avaje.ebeaninternal.server.core.DefaultServer.shutdownInternal(DefaultServer.java:406) [avaje-ebeanorm.jar:na]
at com.avaje.ebeaninternal.server.core.DefaultServer.shutdownManaged(DefaultServer.java:379) [avaje-ebeanorm.jar:na]
の最初の行は、コードの簡単なスナップショットは以下のとおりです。各エラーは「[エラー] caescDefaultServer - エラーの登録解除によるEbean Ebean:server = default2」から「[error] caescDefaultServer - Ebean Ebeanの登録解除エラー:server = default38」に報告されます。だから私はシャットダウンされていないEbeanSeversが原因だと信じています。
どうすれば正しく閉じることができますか?
同じエラーが発生しますが、繰り返しが少なくなります。どうもありがとうございました。 –
Ebeanのバージョンは何ですか? (私はそれが古いバージョンだと思っています) –