private DatabaseStorageConfiguration createDatabaseStoreConfig(Element storeNode) { DatabaseStorageConfiguration conf = new DatabaseStorageConfiguration(); conf.setBindingsTableName(getString(storeNode, "bindings-table-name", conf.getBindingsTableName(), Validators.NO_CHECK)); conf.setMessageTableName(getString(storeNode, "message-table-name", conf.getMessageTableName(), Validators.NO_CHECK)); conf.setLargeMessageTableName(getString(storeNode, "large-message-table-name", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setPageStoreTableName(getString(storeNode, "page-store-table-name", conf.getPageStoreTableName(), Validators.NO_CHECK)); conf.setNodeManagerStoreTableName(getString(storeNode, "node-manager-store-table-name", conf.getNodeManagerStoreTableName(), Validators.NO_CHECK)); conf.setJdbcConnectionUrl(getString(storeNode, "jdbc-connection-url", conf.getJdbcConnectionUrl(), Validators.NO_CHECK)); conf.setJdbcDriverClassName(getString(storeNode, "jdbc-driver-class-name", conf.getJdbcDriverClassName(), Validators.NO_CHECK)); conf.setJdbcNetworkTimeout(getInteger(storeNode, "jdbc-network-timeout", conf.getJdbcNetworkTimeout(), Validators.NO_CHECK)); conf.setJdbcLockRenewPeriodMillis(getLong(storeNode, "jdbc-lock-renew-period", conf.getJdbcLockRenewPeriodMillis(), Validators.NO_CHECK)); conf.setJdbcLockExpirationMillis(getLong(storeNode, "jdbc-lock-expiration", conf.getJdbcLockExpirationMillis(), Validators.NO_CHECK)); conf.setJdbcJournalSyncPeriodMillis(getLong(storeNode, "jdbc-journal-sync-period", conf.getJdbcJournalSyncPeriodMillis(), Validators.NO_CHECK)); return conf; }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }
IOCriticalErrorListener ioCriticalErrorListener) { validateTimeoutConfiguration(configuration); if (configuration.getDataSource() != null) { final SQLProvider.Factory sqlProviderFactory; if (configuration.getSqlProviderFactory() != null) { sqlProviderFactory = configuration.getSqlProviderFactory(); } else { sqlProviderFactory = new PropertySQLProvider.Factory(configuration.getDataSource()); configuration.getJdbcNetworkTimeout(), configuration.getJdbcLockExpirationMillis(), configuration.getJdbcLockRenewPeriodMillis(), configuration.getJdbcLockAcquisitionTimeoutMillis(), configuration.getDataSource(), sqlProviderFactory.create(configuration.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER), scheduledExecutorService, executorFactory, ioCriticalErrorListener); } else { final SQLProvider sqlProvider = JDBCUtils.getSQLProvider(configuration.getJdbcDriverClassName(), configuration.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); final String brokerId = java.util.UUID.randomUUID().toString(); return usingConnectionUrl(brokerId, configuration.getJdbcNetworkTimeout(), configuration.getJdbcLockExpirationMillis(), configuration.getJdbcLockRenewPeriodMillis(), configuration.getJdbcLockAcquisitionTimeoutMillis(), configuration.getJdbcConnectionUrl(), configuration.getJdbcDriverClassName(), sqlProvider,
return; DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setBindingsTableName(JOURNAL_BINDINGS_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setMessageTableName(JOURNAL_MESSAGES_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setLargeMessageTableName(JOURNAL_LARGE_MESSAGES_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setPageStoreTableName(JOURNAL_PAGE_STORE_TABLE.resolveModelAttribute(context, model).asString()); long networkTimeout = SECONDS.toMillis(JOURNAL_JDBC_NETWORK_TIMEOUT.resolveModelAttribute(context, model).asInt()); storageConfiguration.setJdbcNetworkTimeout((int)networkTimeout); storageConfiguration.setNodeManagerStoreTableName(nodeManagerStoreTableName); final long lockExpirationInMillis; if (model.hasDefined(JOURNAL_JDBC_LOCK_EXPIRATION.getName())) { storageConfiguration.setJdbcLockExpirationMillis(lockExpirationInMillis); final long lockRenewPeriodInMillis; if (model.hasDefined(JOURNAL_JDBC_LOCK_RENEW_PERIOD.getName())) { storageConfiguration.setJdbcLockRenewPeriodMillis(lockRenewPeriodInMillis); storageConfiguration.setJdbcLockAcquisitionTimeoutMillis(jdbcLockAcquisitionTimeoutMillis); configuration.setStoreConfiguration(storageConfiguration);
protected DatabaseStorageConfiguration createDefaultDatabaseStorageConfiguration() { DatabaseStorageConfiguration dbStorageConfiguration = new DatabaseStorageConfiguration(); dbStorageConfiguration.setJdbcConnectionUrl(getTestJDBCConnectionUrl()); dbStorageConfiguration.setBindingsTableName("BINDINGS"); dbStorageConfiguration.setMessageTableName("MESSAGE"); dbStorageConfiguration.setLargeMessageTableName("LARGE_MESSAGE"); dbStorageConfiguration.setPageStoreTableName("PAGE_STORE"); dbStorageConfiguration.setJdbcDriverClassName(getJDBCClassName()); dbStorageConfiguration.setJdbcLockAcquisitionTimeoutMillis(getJdbcLockAcquisitionTimeoutMillis()); dbStorageConfiguration.setJdbcLockExpirationMillis(getJdbcLockExpirationMillis()); dbStorageConfiguration.setJdbcLockRenewPeriodMillis(getJdbcLockRenewPeriodMillis()); return dbStorageConfiguration; }
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
final JDBCJournalImpl messageJournal; final JDBCSequentialFileFactory largeMessagesFactory; if (dbConf.getDataSource() != null) { SQLProvider.Factory sqlProviderFactory = dbConf.getSqlProviderFactory(); if (sqlProviderFactory == null) { sqlProviderFactory = new PropertySQLProvider.Factory(dbConf.getDataSource()); bindingsJournal = new JDBCJournalImpl(dbConf.getDataSource(), sqlProviderFactory.create(dbConf.getBindingsTableName(), SQLProvider.DatabaseStoreType.BINDINGS_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener,dbConf.getJdbcJournalSyncPeriodMillis()); messageJournal = new JDBCJournalImpl(dbConf.getDataSource(), sqlProviderFactory.create(dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener, dbConf.getJdbcJournalSyncPeriodMillis()); largeMessagesFactory = new JDBCSequentialFileFactory(dbConf.getDataSource(), sqlProviderFactory.create(dbConf.getLargeMessageTableName(), SQLProvider.DatabaseStoreType.LARGE_MESSAGE), executorFactory.getExecutor(), criticalErrorListener); } else { String driverClassName = dbConf.getJdbcDriverClassName(); bindingsJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getBindingsTableName(), SQLProvider.DatabaseStoreType.BINDINGS_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener, dbConf.getJdbcJournalSyncPeriodMillis()); messageJournal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL), scheduledExecutorService, executorFactory.getExecutor(), criticalErrorListener, dbConf.getJdbcJournalSyncPeriodMillis()); largeMessagesFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, dbConf.getLargeMessageTableName(), SQLProvider.DatabaseStoreType.LARGE_MESSAGE), executorFactory.getExecutor(), criticalErrorListener); final int networkTimeout = dbConf.getJdbcNetworkTimeout(); if (networkTimeout >= 0) { bindingsJournal.setNetworkTimeout(executorFactory.getExecutor(), networkTimeout);
public synchronized void start() throws Exception { if (!started) { //fix to prevent page table names to be longer than 30 chars (upper limit for Oracle12c identifiers length) final String pageStoreTableNamePrefix = dbConf.getPageStoreTableName(); if (pageStoreTableNamePrefix.length() > 10) { throw new IllegalStateException("The maximum name size for the page store table prefix is 10 characters: THE PAGING STORE CAN'T START"); } if (dbConf.getDataSource() != null) { SQLProvider.Factory sqlProviderFactory = dbConf.getSqlProviderFactory(); if (sqlProviderFactory == null) { sqlProviderFactory = new PropertySQLProvider.Factory(dbConf.getDataSource()); } pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getDataSource(), sqlProviderFactory.create(pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor(), criticalErrorListener); } else { String driverClassName = dbConf.getJdbcDriverClassName(); pagingFactoryFileFactory = new JDBCSequentialFileFactory(dbConf.getJdbcConnectionUrl(), driverClassName, JDBCUtils.getSQLProvider(driverClassName, pageStoreTableNamePrefix, SQLProvider.DatabaseStoreType.PAGE), executorFactory.getExecutor(), criticalErrorListener); } final int jdbcNetworkTimeout = dbConf.getJdbcNetworkTimeout(); if (jdbcNetworkTimeout >= 0) { pagingFactoryFileFactory.setNetworkTimeout(this.executorFactory.getExecutor(), jdbcNetworkTimeout); } pagingFactoryFileFactory.start(); started = true; } } // Public --------------------------------------------------------
@Before public void createLockTable() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); if (withExistingTable) { TestJDBCDriver testDriver = TestJDBCDriver .usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); testDriver.start(); testDriver.stop(); } jdbcSharedStateManager = JdbcSharedStateManager .usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
@Before public void setup() throws Exception { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getMessageTableName(), SQLProvider.DatabaseStoreType.MESSAGE_JOURNAL); scheduledExecutorService = new ScheduledThreadPoolExecutor(5); executorService = Executors.newSingleThreadExecutor(); journal = new JDBCJournalImpl(dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, scheduledExecutorService, executorService, new IOCriticalErrorListener() { @Override public void onIOException(Throwable code, String message, SequentialFile file) { } }, 5); journal.start(); }
private JdbcSharedStateManager createSharedStateManager() { return JdbcSharedStateManager.usingConnectionUrl( UUID.randomUUID().toString(), dbConf.getJdbcLockExpirationMillis(), dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider); }
private TestJDBCDriver createFakeDriver(boolean initializeTable) { return TestJDBCDriver.usingConnectionUrl( dbConf.getJdbcConnectionUrl(), dbConf.getJdbcDriverClassName(), sqlProvider, initializeTable); }
final DataSource ds = dataSource.get().get(); DatabaseStorageConfiguration dbConfiguration = (DatabaseStorageConfiguration) configuration.getStoreConfiguration(); dbConfiguration.setDataSource(ds); dbConfiguration.setSqlProvider(sqlProviderFactory); configuration.setStoreConfiguration(dbConfiguration); ROOT_LOGGER.infof("use JDBC store for Artemis server, bindingsTable:%s", dbConfiguration.getBindingsTableName());
final DataSource ds = dataSource.get().get(); DatabaseStorageConfiguration dbConfiguration = (DatabaseStorageConfiguration) configuration.getStoreConfiguration(); dbConfiguration.setDataSource(ds); PropertySQLProviderFactory sqlProviderFactory = (PropertySQLProviderFactory)dbConfiguration.getSqlProviderFactory(); sqlProviderFactory.investigateDialect(ds); configuration.setStoreConfiguration(dbConfiguration); ROOT_LOGGER.infof("use JDBC store for Artemis server, bindingsTable:%s", dbConfiguration.getBindingsTableName());
private synchronized SequentialFileFactory newFileFactory(final String directoryName, boolean writeToDirectory) throws Exception { JDBCSequentialFile directoryList = (JDBCSequentialFile) pagingFactoryFileFactory.createSequentialFile(DIRECTORY_NAME); directoryList.open(); SimpleString simpleString = SimpleString.toSimpleString(directoryName); ActiveMQBuffer buffer = ActiveMQBuffers.fixedBuffer(simpleString.sizeof()); buffer.writeSimpleString(simpleString); if (writeToDirectory) directoryList.write(buffer, true); directoryList.close(); final SQLProvider sqlProvider; if (dbConf.getDataSource() != null) { final SQLProvider.Factory sqlProviderFactory; if (dbConf.getSqlProviderFactory() != null) { sqlProviderFactory = dbConf.getSqlProviderFactory(); } else { sqlProviderFactory = new PropertySQLProvider.Factory(dbConf.getDataSource()); } sqlProvider = sqlProviderFactory.create(getTableNameForGUID(directoryName), SQLProvider.DatabaseStoreType.PAGE); } else { sqlProvider = JDBCUtils.getSQLProvider(dbConf.getJdbcDriverClassName(), getTableNameForGUID(directoryName), SQLProvider.DatabaseStoreType.PAGE); } final JDBCSequentialFileFactory fileFactory = new JDBCSequentialFileFactory(pagingFactoryFileFactory.getDbDriver().getConnection(), sqlProvider, executorFactory.getExecutor(), criticalErrorListener); final int jdbcNetworkTimeout = dbConf.getJdbcNetworkTimeout(); if (jdbcNetworkTimeout >= 0) { fileFactory.setNetworkTimeout(this.executorFactory.getExecutor(), jdbcNetworkTimeout); } factoryToTableName.put(fileFactory, directoryName); return fileFactory; }
@Before public void configure() { dbConf = createDefaultDatabaseStorageConfiguration(); sqlProvider = JDBCUtils.getSQLProvider( dbConf.getJdbcDriverClassName(), dbConf.getNodeManagerStoreTableName(), SQLProvider.DatabaseStoreType.NODE_MANAGER); }
@Test public void testTooLongPageStoreTableNamePrefix() throws Exception { if (storeType == StoreConfiguration.StoreType.DATABASE) { final Configuration config = createDefaultInVMConfig(); final DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) config.getStoreConfiguration(); //set the page store table to be longer than 10 chars -> the paging manager initialization will fail storageConfiguration.setPageStoreTableName("PAGE_STORE_"); final int PAGE_MAX = 20 * 1024; final int PAGE_SIZE = 10 * 1024; final ActiveMQServer server = createServer(true, config, PAGE_SIZE, PAGE_MAX); server.start(); //due to a failed initialisation of the paging manager, it must be null Assert.assertNull(server.getPagingManager()); server.stop(); } }
return; DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setBindingsTableName(JOURNAL_BINDINGS_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setMessageTableName(JOURNAL_MESSAGES_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setLargeMessageTableName(JOURNAL_LARGE_MESSAGES_TABLE.resolveModelAttribute(context, model).asString()); storageConfiguration.setPageStoreTableName(JOURNAL_PAGE_STORE_TABLE.resolveModelAttribute(context, model).asString()); long networkTimeout = SECONDS.toMillis(JOURNAL_JDBC_NETWORK_TIMEOUT.resolveModelAttribute(context, model).asInt()); storageConfiguration.setJdbcNetworkTimeout((int)networkTimeout); storageConfiguration.setNodeManagerStoreTableName(nodeManagerStoreTableName); final long lockExpirationInMillis; if (model.hasDefined(JOURNAL_JDBC_LOCK_EXPIRATION.getName())) { storageConfiguration.setJdbcLockExpirationMillis(lockExpirationInMillis); final long lockRenewPeriodInMillis; if (model.hasDefined(JOURNAL_JDBC_LOCK_RENEW_PERIOD.getName())) { storageConfiguration.setJdbcLockRenewPeriodMillis(lockRenewPeriodInMillis); storageConfiguration.setJdbcLockAcquisitionTimeoutMillis(jdbcLockAcquisitionTimeoutMillis); ModelNode databaseNode = JOURNAL_DATABASE.resolveModelAttribute(context, model); final String database = databaseNode.isDefined() ? databaseNode.asString() : null; try { storageConfiguration.setSqlProvider(new PropertySQLProviderFactory(database)); } catch (IOException e) { throw new OperationFailedException(e);
public Configuration getParameterConfiguration() throws Exception { Configuration configuration = readConfiguration(); if (isJDBC()) { DatabaseStorageConfiguration storageConfiguration = new DatabaseStorageConfiguration(); storageConfiguration.setJdbcConnectionUrl(getJdbcURL()); storageConfiguration.setJdbcDriverClassName(getJdbcClassName()); storageConfiguration.setBindingsTableName(getJdbcBindings()); storageConfiguration.setMessageTableName(getJdbcMessages()); storageConfiguration.setLargeMessageTableName(getJdbcLargeMessages()); storageConfiguration.setPageStoreTableName(getJdbcPageStore()); storageConfiguration.setNodeManagerStoreTableName(getJdbcNodeManager()); configuration.setStoreConfiguration(storageConfiguration); } else { configuration.setBindingsDirectory(getBinding()); configuration.setJournalDirectory(getJournal()); configuration.setPagingDirectory(getPaging()); configuration.setLargeMessagesDirectory(getLargeMessages()); configuration.setJournalType(JournalType.NIO); } return configuration; }
private void parseDBConfig() throws Exception { if (jdbc == null) { FileConfiguration fileConfiguration = getFileConfiguration(); jdbc = fileConfiguration.isJDBC(); if (jdbc) { DatabaseStorageConfiguration storageConfiguration = (DatabaseStorageConfiguration) fileConfiguration.getStoreConfiguration(); jdbcBindings = storageConfiguration.getBindingsTableName(); jdbcMessages = storageConfiguration.getMessageTableName(); jdbcLargeMessages = storageConfiguration.getLargeMessageTableName(); jdbcPageStore = storageConfiguration.getPageStoreTableName(); jdbcNodeManager = storageConfiguration.getNodeManagerStoreTableName(); jdbcURL = storageConfiguration.getJdbcConnectionUrl(); jdbcClassName = storageConfiguration.getJdbcDriverClassName(); } } }