/**
* {@inheritDoc}
*/
@Override
public void initialize(ExtensionContext context) {
final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME);
subsystem.registerXMLElementWriter(EJB3Subsystem12Parser.INSTANCE);
final ManagementResourceRegistration subsystemRegistration = subsystem.registerSubsystemModel(EJB3SubsystemRootResourceDefinition.INSTANCE);
// describe operation for the subsystem
subsystemRegistration.registerOperationHandler(DESCRIBE, GenericSubsystemDescribeHandler.INSTANCE, GenericSubsystemDescribeHandler.INSTANCE, false, OperationEntry.EntryType.PRIVATE);
// subsystem=ejb3/service=remote
subsystemRegistration.registerSubModel(EJB3RemoteResourceDefinition.INSTANCE);
// subsystem=ejb3/service=async
subsystemRegistration.registerSubModel(EJB3AsyncResourceDefinition.INSTANCE);
// subsystem=ejb3/strict-max-bean-instance-pool=*
subsystemRegistration.registerSubModel(StrictMaxPoolResourceDefinition.INSTANCE);
// subsystem=ejb3/service=timerservice
subsystemRegistration.registerSubModel(TimerServiceResourceDefinition.INSTANCE);
// subsystem=ejb3/thread-pool=*
subsystemRegistration.registerSubModel(EJB3ThreadPoolResourceDefinition.INSTANCE);
ResourceDefinition deploymentsDef = new SimpleResourceDefinition(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, SUBSYSTEM_NAME),
getResourceDescriptionResolver("deployed"));
final ManagementResourceRegistration deploymentsRegistration = subsystem.registerDeploymentModel(deploymentsDef);
deploymentsRegistration.registerSubModel(EntityBeanResourceDefinition.INSTANCE);
deploymentsRegistration.registerSubModel(MessageDrivenBeanResourceDefinition.INSTANCE);
deploymentsRegistration.registerSubModel(SingletonBeanDeploymentResourceDefinition.INSTANCE);
deploymentsRegistration.registerSubModel(StatelessSessionBeanDeploymentResourceDefinition.INSTANCE);
deploymentsRegistration.registerSubModel(StatefulSessionBeanDeploymentResourceDefinition.INSTANCE);