private void performCoreEnvironmentBootTime(OperationContext context, ModelNode operation, ModelNode coreEnvModel,
ServiceVerificationHandler verificationHandler,
List<ServiceController<?>> controllers) throws OperationFailedException {
// Configure the core configuration.
final String nodeIdentifier = TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER.resolveModelAttribute(context, coreEnvModel).asString();
final CoreEnvironmentService coreEnvironmentService = new CoreEnvironmentService(nodeIdentifier);
String socketBindingName = null;
if (TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.resolveModelAttribute(context, coreEnvModel).asBoolean()) {
// Use the UUID based id
UuidProcessId id = new UuidProcessId();
coreEnvironmentService.setProcessImplementation(id);
} else {
// Use the socket process id
coreEnvironmentService.setProcessImplementationClassName(ProcessIdType.SOCKET.getClazz());
socketBindingName = TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.resolveModelAttribute(context, coreEnvModel).asString();
int ports = TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.resolveModelAttribute(context, coreEnvModel).asInt();
coreEnvironmentService.setSocketProcessIdMaxPorts(ports);
}
final String varDirPathRef = TransactionSubsystemRootResourceDefinition.RELATIVE_TO.resolveModelAttribute(context, coreEnvModel).asString();
final String varDirPath = TransactionSubsystemRootResourceDefinition.PATH.resolveModelAttribute(context, coreEnvModel).asString();
if (ROOT_LOGGER.isDebugEnabled()) {
ROOT_LOGGER.debugf("nodeIdentifier=%s\n", nodeIdentifier);
ROOT_LOGGER.debugf("varDirPathRef=%s, varDirPath=%s\n", varDirPathRef, varDirPath);
}
ServiceTarget target = context.getServiceTarget();
RelativePathService.addService(INTERNAL_CORE_ENV_VAR_PATH, varDirPath, true, varDirPathRef, target, controllers, verificationHandler);
final ServiceBuilder<?> coreEnvBuilder = context.getServiceTarget().addService(TxnServices.JBOSS_TXN_CORE_ENVIRONMENT, coreEnvironmentService);
if (socketBindingName != null) {
// Add a dependency on the socket id binding
ServiceName bindingName = SocketBinding.JBOSS_BINDING_NAME.append(socketBindingName);
coreEnvBuilder.addDependency(bindingName, SocketBinding.class, coreEnvironmentService.getSocketProcessBindingInjector());
}
controllers.add(coreEnvBuilder.addDependency(INTERNAL_CORE_ENV_VAR_PATH, String.class, coreEnvironmentService.getPathInjector())
.addListener(verificationHandler)
.setInitialMode(ServiceController.Mode.ACTIVE)
.install());
}