Пример #1
0
  @Override
  protected void populateModel(ModelNode operation, ModelNode model)
      throws OperationFailedException {
    populateModelWithRecoveryEnvConfig(operation, model);

    populateModelWithCoreEnvConfig(operation, model);

    populateModelWithCoordinatorEnvConfig(operation, model);

    populateModelWithObjectStoreConfig(operation, model);

    TransactionSubsystemRootResourceDefinition.JTS.validateAndSet(operation, model);

    TransactionSubsystemRootResourceDefinition.USE_JOURNAL_STORE.validateAndSet(operation, model);

    for (AttributeDefinition ad : TransactionSubsystemRootResourceDefinition.attributes_1_2) {
      ad.validateAndSet(operation, model);
    }

    TransactionSubsystemRootResourceDefinition.JOURNAL_STORE_ENABLE_ASYNC_IO.validateAndSet(
        operation, model);
  }
Пример #2
0
  private void performObjectStoreBoottime(OperationContext context, ModelNode model)
      throws OperationFailedException {
    boolean useJournalStore =
        model.hasDefined(USE_JOURNAL_STORE) && model.get(USE_JOURNAL_STORE).asBoolean();
    final boolean enableAsyncIO =
        TransactionSubsystemRootResourceDefinition.JOURNAL_STORE_ENABLE_ASYNC_IO
            .resolveModelAttribute(context, model)
            .asBoolean();
    final String objectStorePathRef =
        TransactionSubsystemRootResourceDefinition.OBJECT_STORE_RELATIVE_TO
            .resolveModelAttribute(context, model)
            .asString();
    final String objectStorePath =
        TransactionSubsystemRootResourceDefinition.OBJECT_STORE_PATH
            .resolveModelAttribute(context, model)
            .asString();

    final boolean useJdbcStore =
        model.hasDefined(USE_JDBC_STORE) && model.get(USE_JDBC_STORE).asBoolean();
    final String dataSourceJndiName =
        TransactionSubsystemRootResourceDefinition.JDBC_STORE_DATASOURCE
            .resolveModelAttribute(context, model)
            .asString();

    ArjunaObjectStoreEnvironmentService.JdbcStoreConfigBulder confiBuilder =
        new ArjunaObjectStoreEnvironmentService.JdbcStoreConfigBulder();
    confiBuilder
        .setActionDropTable(
            TransactionSubsystemRootResourceDefinition.JDBC_ACTION_STORE_DROP_TABLE
                .resolveModelAttribute(context, model)
                .asBoolean())
        .setStateDropTable(
            TransactionSubsystemRootResourceDefinition.JDBC_STATE_STORE_DROP_TABLE
                .resolveModelAttribute(context, model)
                .asBoolean())
        .setCommunicationDropTable(
            TransactionSubsystemRootResourceDefinition.JDBC_COMMUNICATION_STORE_DROP_TABLE
                .resolveModelAttribute(context, model)
                .asBoolean());

    if (model.hasDefined(
        TransactionSubsystemRootResourceDefinition.JDBC_ACTION_STORE_TABLE_PREFIX.getName()))
      confiBuilder.setActionTablePrefix(
          TransactionSubsystemRootResourceDefinition.JDBC_ACTION_STORE_TABLE_PREFIX
              .resolveModelAttribute(context, model)
              .asString());
    if (model.hasDefined(
        TransactionSubsystemRootResourceDefinition.JDBC_STATE_STORE_TABLE_PREFIX.getName()))
      confiBuilder.setStateTablePrefix(
          TransactionSubsystemRootResourceDefinition.JDBC_STATE_STORE_TABLE_PREFIX
              .resolveModelAttribute(context, model)
              .asString());

    if (model.hasDefined(
        TransactionSubsystemRootResourceDefinition.JDBC_COMMUNICATION_STORE_TABLE_PREFIX.getName()))
      confiBuilder.setCommunicationTablePrefix(
          TransactionSubsystemRootResourceDefinition.JDBC_COMMUNICATION_STORE_TABLE_PREFIX
              .resolveModelAttribute(context, model)
              .asString());

    TransactionLogger.ROOT_LOGGER.debugf(
        "objectStorePathRef=%s, objectStorePath=%s%n", objectStorePathRef, objectStorePath);

    ServiceTarget target = context.getServiceTarget();
    // Configure the ObjectStoreEnvironmentBeans
    final ArjunaObjectStoreEnvironmentService objStoreEnvironmentService =
        new ArjunaObjectStoreEnvironmentService(
            useJournalStore,
            enableAsyncIO,
            objectStorePath,
            objectStorePathRef,
            useJdbcStore,
            dataSourceJndiName,
            confiBuilder.build());
    ServiceBuilder<Void> builder =
        target
            .addService(
                TxnServices.JBOSS_TXN_ARJUNA_OBJECTSTORE_ENVIRONMENT, objStoreEnvironmentService)
            .addDependency(
                PathManagerService.SERVICE_NAME,
                PathManager.class,
                objStoreEnvironmentService.getPathManagerInjector())
            .addDependency(TxnServices.JBOSS_TXN_CORE_ENVIRONMENT);
    if (useJdbcStore) {
      final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(dataSourceJndiName);
      builder.addDependency(bindInfo.getBinderServiceName());
    }
    builder.setInitialMode(ServiceController.Mode.ACTIVE).install();

    TransactionManagerService.addService(target);
    UserTransactionService.addService(target);
    target
        .addService(
            TxnServices.JBOSS_TXN_USER_TRANSACTION_REGISTRY, new UserTransactionRegistryService())
        .setInitialMode(ServiceController.Mode.ACTIVE)
        .install();
    TransactionSynchronizationRegistryService.addService(target);
  }