public EbeanManaged(final Config config, final ServerConfig conf) { ebean = Suppliers.memoize(() -> { EbeanServer ebean = EbeanServerFactory.create(conf); // move .sql file to tmp directory... didn't find any other way of dealing with this if (conf.isDdlGenerate()) { String tmpdir = config.getString("application.tmpdir"); move(conf.getName() + "-drop-all.sql", tmpdir); move(conf.getName() + "-create-all.sql", tmpdir); } return ebean; }); }
public String getServerName() { return (serverConfig == null) ? "db" : serverConfig.getName(); }
/** * Create the TransactionScopeManager taking into account JTA or external transaction manager. */ private TransactionScopeManager createTransactionScopeManager() { ExternalTransactionManager externalTransactionManager = serverConfig.getExternalTransactionManager(); if (externalTransactionManager == null && serverConfig.isUseJtaTransactionManager()) { externalTransactionManager = new JtaTransactionManager(); } if (externalTransactionManager != null) { logger.info("Using Transaction Manager [" + externalTransactionManager.getClass() + "]"); return new ExternalTransactionScopeManager(serverConfig.getName(), externalTransactionManager); } else { return new DefaultTransactionScopeManager(serverConfig.getName()); } }
private SpiBackgroundExecutor createBackgroundExecutor(ServerConfig serverConfig) { String namePrefix = "ebean-" + serverConfig.getName(); int schedulePoolSize = serverConfig.getBackgroundExecutorSchedulePoolSize(); int shutdownSecs = serverConfig.getBackgroundExecutorShutdownSecs(); return new DefaultBackgroundExecutor(schedulePoolSize, shutdownSecs, namePrefix); }
/** * Check the autoCommit and Transaction Isolation levels of the DataSource. * <p> * If autoCommit is true this could be a real problem. * </p> * <p> * If the Isolation level is not READ_COMMITTED then optimistic concurrency * checking may not work as expected. * </p> */ private boolean checkDataSource(ServerConfig serverConfig) { if (isOfflineMode(serverConfig)) { return false; } if (serverConfig.getDataSource() == null) { if (serverConfig.getDataSourceConfig().isOffline()) { // this is ok - offline DDL generation etc return false; } throw new RuntimeException("DataSource not set?"); } try (Connection connection = serverConfig.getDataSource().getConnection()) { if (!serverConfig.isAutoCommitMode() && connection.getAutoCommit()) { logger.warn("DataSource [{}] has autoCommit defaulting to true!", serverConfig.getName()); } return true; } catch (SQLException ex) { throw new PersistenceException(ex); } }
/** * Create using the ServerConfig object to configure the server. */ public static synchronized EbeanServer create(ServerConfig config) { if (config.getName() == null) { throw new PersistenceException("The name is null (it is required)"); } EbeanServer server = createInternal(config); if (config.isRegister()) { PrimaryServer.setSkip(true); Ebean.register(server, config.isDefaultServer()); } return server; }
/** * Set the DatabasePlatform if it has not already been set. */ private void setDatabasePlatform(ServerConfig config) { DatabasePlatform platform = config.getDatabasePlatform(); if (platform == null) { if (config.getTenantMode().isDynamicDataSource()) { throw new IllegalStateException("DatabasePlatform must be explicitly set on ServerConfig for TenantMode "+config.getTenantMode()); } // automatically determine the platform platform = new DatabasePlatformFactory().create(config); config.setDatabasePlatform(platform); } logger.info("DatabasePlatform name:{} platform:{}", config.getName(), platform.getName()); platform.configure(config.getPlatformConfig()); }
public String getServerName() { return (serverConfig == null) ? "db" : serverConfig.getName(); }
public EbeanManaged(final Config config, final ServerConfig conf) { ebean = Suppliers.memoize(() -> { EbeanServer ebean = EbeanServerFactory.create(conf); // move .sql file to tmp directory... didn't find any other way of dealing with this if (conf.isDdlGenerate()) { String tmpdir = config.getString("application.tmpdir"); move(conf.getName() + "-drop-all.sql", tmpdir); move(conf.getName() + "-create-all.sql", tmpdir); } return ebean; }); }
/** * Create the TransactionScopeManager taking into account JTA or external transaction manager. */ private TransactionScopeManager createTransactionScopeManager() { ExternalTransactionManager externalTransactionManager = serverConfig.getExternalTransactionManager(); if (externalTransactionManager == null && serverConfig.isUseJtaTransactionManager()) { externalTransactionManager = new JtaTransactionManager(); } if (externalTransactionManager != null) { logger.info("Using Transaction Manager [" + externalTransactionManager.getClass() + "]"); return new ExternalTransactionScopeManager(serverConfig.getName(), externalTransactionManager); } else { return new DefaultTransactionScopeManager(serverConfig.getName()); } }
this.changeLogAsync = options.config.isChangeLogAsync(); this.clusterManager = options.clusterManager; this.serverName = options.config.getName(); this.scopeManager = options.scopeManager; this.tableModState = options.tableModState;
private SpiBackgroundExecutor createBackgroundExecutor(ServerConfig serverConfig) { String namePrefix = "ebean-" + serverConfig.getName(); int schedulePoolSize = serverConfig.getBackgroundExecutorSchedulePoolSize(); int shutdownSecs = serverConfig.getBackgroundExecutorShutdownSecs(); return new DefaultBackgroundExecutor(schedulePoolSize, shutdownSecs, namePrefix); }
this.backgroundExecutor = config.getBackgroundExecutor(); this.serverName = serverConfig.getName(); this.lazyLoadBatchSize = serverConfig.getLazyLoadBatchSize(); this.queryBatchSize = serverConfig.getQueryBatchSize();
/** * Check the autoCommit and Transaction Isolation levels of the DataSource. * <p> * If autoCommit is true this could be a real problem. * </p> * <p> * If the Isolation level is not READ_COMMITTED then optimistic concurrency * checking may not work as expected. * </p> */ private boolean checkDataSource(ServerConfig serverConfig) { if (isOfflineMode(serverConfig)) { return false; } if (serverConfig.getDataSource() == null) { if (serverConfig.getDataSourceConfig().isOffline()) { // this is ok - offline DDL generation etc return false; } throw new RuntimeException("DataSource not set?"); } try (Connection connection = serverConfig.getDataSource().getConnection()) { if (!serverConfig.isAutoCommitMode() && connection.getAutoCommit()) { logger.warn("DataSource [{}] has autoCommit defaulting to true!", serverConfig.getName()); } return true; } catch (SQLException ex) { throw new PersistenceException(ex); } }
this.serverName = InternString.intern(serverConfig.getName()); this.cacheManager = config.getCacheManager(); this.docStoreFactory = config.getDocStoreFactory();
/** * Create using the ServerConfig object to configure the server. */ public static synchronized EbeanServer create(ServerConfig config) { if (config.getName() == null) { throw new PersistenceException("The name is null (it is required)"); } EbeanServer server = createInternal(config); if (config.isRegister()) { PrimaryServer.setSkip(true); Ebean.register(server, config.isDefaultServer()); } return server; }
/** * Set the DatabasePlatform if it has not already been set. */ private void setDatabasePlatform(ServerConfig config) { DatabasePlatform platform = config.getDatabasePlatform(); if (platform == null) { if (config.getTenantMode().isDynamicDataSource()) { throw new IllegalStateException("DatabasePlatform must be explicitly set on ServerConfig for TenantMode "+config.getTenantMode()); } // automatically determine the platform platform = new DatabasePlatformFactory().create(config); config.setDatabasePlatform(platform); } logger.info("DatabasePlatform name:{} platform:{}", config.getName(), platform.getName()); platform.configure(config.getPlatformConfig()); }
@Override public DataSource createDataSource(DataSourceConfig conf) { ServerConfig ebeanConfig = new EbeanConfigAdaptor().adaptFrom(actConfig, conf, svc); DataSourceFactory factory = ebeanConfig.service(DataSourceFactory.class); if (factory == null) { throw new IllegalStateException("No DataSourceFactory service implementation found in class path." + " Probably missing dependency to avaje-datasource?"); } DataSourceAlertFactory alertFactory = ebeanConfig.service(DataSourceAlertFactory.class); io.ebean.datasource.DataSourceConfig dsConfig = ebeanConfig.getDataSourceConfig(); if (alertFactory != null) { dsConfig.setAlert(alertFactory.createAlert()); } if (conf.readOnly) { // setup to use AutoCommit such that we skip explicit commit dsConfig.setAutoCommit(true); } String poolName = ebeanConfig.getName() + (conf.readOnly ? "-ro" : ""); return new EbeanDataSourceWrapper(ebeanConfig, factory.createPool(poolName, dsConfig)); }