Postgresql 在Global.beforeStart中加载数据库驱动程序

Postgresql 在Global.beforeStart中加载数据库驱动程序,postgresql,jdbc,playframework,ebean,Postgresql,Jdbc,Playframework,Ebean,我想在每次启动时实现一些数据库清理(在开发环境中完全删除和重新创建模式) 我是在Global.beforeStart做这件事的。而且因为它实际上是在开始之前,所以我需要自己加载DB驱动程序 代码是: @Override public void beforeStart(Application app){ System.out.println("IN beforeStart"); try{ Class.forName("org.postgresql.D

我想在每次启动时实现一些数据库清理(在开发环境中完全删除和重新创建模式)

我是在Global.beforeStart做这件事的。而且因为它实际上是在开始之前,所以我需要自己加载DB驱动程序

代码是:

    @Override
    public void beforeStart(Application app){
    System.out.println("IN beforeStart");
    try{
        Class.forName("org.postgresql.Driver");
        System.out.println("org.postgresql.Driver LOADED");
    } catch (ClassNotFoundException cnfe){
        System.out.println("NOT LOADED org.postgresql.Driver");
        cnfe.printStackTrace();
    }

    ServerConfig config = new ServerConfig();
    config.setName("pgtest");

    DataSourceConfig postgresDb = new DataSourceConfig ();
    postgresDb.setDriver("org.postgresql.Driver");
    postgresDb.setUsername("postgres");
    postgresDb.setPassword("postgrespassword");
    postgresDb.setUrl("postgres://postgres:postgrespassword@localhost:5432/TotoIntegration2");

    config.setDataSourceConfig(postgresDb);
    config.setDefaultServer(true);
    EbeanServer server = EbeanServerFactory.create(config);





    SqlQuery countTables = Ebean.createSqlQuery("select count(*) from  pg_stat_user_tables;");

    Integer numTables = countTables.findUnique().getInteger("count");
    System.out.println("numTables = " + numTables);
    if(numTables>2){
        DbHelper.cleanSchema();
    }
    System.out.println("beforeStart EXECUTED");
    //DbHelper.cleanSchema();

}
Class.forName(“org.postgresql.Driver”)在没有异常的情况下传递,但我得到:

com.avaje.ebeaninternal.server.lib.sql.DataSourceException:java.sql.SQLException:未找到适合postgres的驱动程序

在行EbeanServer server=EbeanServerFactory.create(config)上


为什么?

使用
onStart
相反,它是在
beforeStart
之后执行的,但它自然适合在数据库上操作(在生产模式下,它不会等待第一个请求),javadoc适用于它们:

/**
 * Executed before any plugin - you can set-up your database schema here, for instance.
 */
public void beforeStart(Application app) {
}

/**
 * Executed after all plugins, including the database set-up with Evolutions and the EBean wrapper.
 * This is a good place to execute some of your application code to create entries, for instance.
 */
public void onStart(Application app) {
}

注意,您不需要在此处另外包含DB config,您可以在此处使用与在controller中相同的模型。

您的JDBC url错误,它应该以
JDBC:postgresql:
开头(url的其余部分看起来也错误),另请注意,不再需要加载符合JDBC 4的驱动程序。