2016-03-31 8 views
1

私たちは、私たちのメモリデータベースをきれいにしてから進化させるベーステストを使ってプレイサーバーでテストの構造を作りました。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:s​​erver = default2」から「[error] caescDefaultServer - Ebean Ebeanの登録解除エラー:server = default38」に報告されます。だから私はシャットダウンされていないEbeanSeversが原因だと信じています。

どうすれば正しく閉じることができますか?

答えて

0

これは、通常、名前の競合が発生した場合に発生します。

あなたが持っている

:ユニークなサーバー名で何かに

String serverName = "default"; 
server = Ebean.getServer(serverName); 

変更、それは:もちろん

String serverName = "default" + UUID.randomUUID().toString(); 
server = Ebean.getServer(serverName); 

あなたは念Ebeanサーバーの名前を作り、いくつかのカウンタまたは類似を使用することができますユニークです。

+0

同じエラーが発生しますが、繰り返しが少なくなります。どうもありがとうございました。 –

+0

Ebeanのバージョンは何ですか? (私はそれが古いバージョンだと思っています) –

関連する問題