protected void performBoottime( final OperationContext context, ModelNode operation, final ModelNode model, ServiceVerificationHandler verificationHandler, List<ServiceController<?>> newControllers) throws OperationFailedException { // setup ejb: namespace EjbNamingContextSetup.setupEjbNamespace(); // TODO: this is a bit of a hack InitialContext.addUrlContextFactory("ejb", new ejbURLContextFactory()); final boolean appclient = model.hasDefined(APPCLIENT) && model.get(APPCLIENT).asBoolean(); context.addStep( new AbstractDeploymentChainStep() { protected void execute(DeploymentProcessorTarget processorTarget) { // DUP's that are used even for app client deployments processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_DEPLOYMENT, new EjbJarParsingDeploymentUnitProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_SESSION_BEAN_CREATE_COMPONENT_DESCRIPTIONS, new SessionBeanComponentDescriptionFactory(appclient)); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_SESSION_BEAN_DD, new SessionBeanXmlDescriptorProcessor(appclient)); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_ANNOTATION_EJB, new EjbAnnotationProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_INJECTION_ANNOTATION, new EjbResourceInjectionAnnotationProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_ENTITY_BEAN_CREATE_COMPONENT_DESCRIPTIONS, new EntityBeanComponentDescriptionFactory(appclient)); processorTarget.addDeploymentProcessor( Phase.DEPENDENCIES, Phase.DEPENDENCIES_EJB, new EjbDependencyDeploymentUnitProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_HOME_MERGE, new HomeViewMergingProcessor(appclient)); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_REF, new EjbRefProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_CLIENT_CONTEXT_SETUP, new EjbClientContextSetupProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_BUSINESS_VIEW_ANNOTATION, new BusinessViewAnnotationProcessor(appclient)); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_ORB_BIND, new ORBJndiBindingProcessor()); processorTarget.addDeploymentProcessor( Phase.INSTALL, Phase.INSTALL_RESOLVE_EJB_INJECTIONS, new EjbInjectionResolutionProcessor()); processorTarget.addDeploymentProcessor( Phase.INSTALL, Phase.INSTALL_EJB_JACC_PROCESSING, new JaccEjbDeploymentProcessor()); processorTarget.addDeploymentProcessor( Phase.CLEANUP, Phase.CLEANUP_EJB, new EjbCleanUpProcessor()); if (!appclient) { // add the metadata parser deployment processor // Process @DependsOn after the @Singletons have been registered. processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_CONTEXT_BINDING, new EjbContextJndiBindingProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_TIMERSERVICE_BINDING, new TimerServiceJndiBindingProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_APPLICATION_EXCEPTION_ANNOTATION, new ApplicationExceptionAnnotationProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_DD_INTERCEPTORS, new InterceptorClassDeploymentDescriptorProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_ASSEMBLY_DESC_DD, new AssemblyDescriptorProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_SECURITY_ROLE_REF_DD, new SecurityRoleRefDDProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_EJB_REMOTE_CLIENT_CONTEXT, new EjbClientContextParsingProcessor()); processorTarget.addDeploymentProcessor( Phase.PARSE, Phase.PARSE_MDB_CREATE_COMPONENT_DESCRIPTIONS, new MessageDrivenComponentDescriptionFactory()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_IMPLICIT_NO_INTERFACE_VIEW, new ImplicitLocalViewProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_JNDI_BINDINGS, new EjbJndiBindingsDeploymentUnitProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_APPLICATION_EXCEPTIONS, new ApplicationExceptionMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_DD_INTERCEPTORS, new DeploymentDescriptorInterceptorBindingsProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_DD_METHOD_RESOLUTION, new DeploymentDescriptorMethodProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_TRANSACTION_MANAGEMENT, new TransactionManagementMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_CONCURRENCY_MANAGEMENT_MERGE, new ConcurrencyManagementMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_CONCURRENCY_MERGE, new EjbConcurrencyMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_TX_ATTR_MERGE, new TransactionAttributeMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_RUN_AS_MERGE, new RunAsMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_RESOURCE_ADAPTER_MERGE, new ResourceAdaptorMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_REMOVE_METHOD, new RemoveMethodMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_STARTUP_MERGE, new StartupMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_SECURITY_DOMAIN, new SecurityDomainMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_ROLES, new DeclareRolesMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_METHOD_PERMISSIONS, new MethodPermissionsMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_STATEFUL_TIMEOUT, new StatefulTimeoutMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_SESSION_SYNCHRONIZATION, new SessionSynchronizationMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_INIT_METHOD, new InitMethodMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_LOCAL_HOME, new SessionBeanHomeProcessor()); processorTarget.addDeploymentProcessor( Phase.POST_MODULE, Phase.POST_MODULE_EJB_IIOP, new EjbIIOPDeploymentUnitProcessor()); processorTarget.addDeploymentProcessor( Phase.INSTALL, Phase.INSTALL_DEPENDS_ON_ANNOTATION, new EjbDependsOnMergingProcessor()); processorTarget.addDeploymentProcessor( Phase.INSTALL, Phase.INSTALL_DEPLOYMENT_REPOSITORY, new DeploymentRepositoryProcessor()); processorTarget.addDeploymentProcessor( Phase.INSTALL, Phase.INSTALL_EJB_MANAGEMENT_RESOURCES, new EjbManagementDeploymentUnitProcessor()); } } }, OperationContext.Stage.RUNTIME); if (model.hasDefined(DEFAULT_MDB_INSTANCE_POOL)) { EJB3SubsystemDefaultPoolWriteHandler.MDB_POOL.updatePoolService( context, model, newControllers); } if (model.hasDefined(DEFAULT_SLSB_INSTANCE_POOL)) { EJB3SubsystemDefaultPoolWriteHandler.SLSB_POOL.updatePoolService( context, model, newControllers); } if (model.hasDefined(DEFAULT_RESOURCE_ADAPTER_NAME)) { DefaultResourceAdapterWriteHandler.INSTANCE.updateDefaultAdapterService( context, model, newControllers); } if (model.hasDefined(DEFAULT_SINGLETON_BEAN_ACCESS_TIMEOUT)) { DefaultSingletonBeanAccessTimeoutWriteHandler.INSTANCE .updateOrCreateDefaultSingletonBeanAccessTimeoutService(context, model, newControllers); } if (model.hasDefined(DEFAULT_STATEFUL_BEAN_ACCESS_TIMEOUT)) { DefaultStatefulBeanAccessTimeoutWriteHandler.INSTANCE .updateOrCreateDefaultStatefulBeanAccessTimeoutService(context, model, newControllers); } final ServiceTarget serviceTarget = context.getServiceTarget(); newControllers.add( context .getServiceTarget() .addService(DeploymentRepository.SERVICE_NAME, new DeploymentRepository()) .install()); addRemoteInvocationServices(context, newControllers, appclient); if (!appclient) { final EJBUtilities utilities = new EJBUtilities(); newControllers.add( serviceTarget .addService(EJBUtilities.SERVICE_NAME, utilities) .addDependency( ConnectorServices.RA_REPOSISTORY_SERVICE, ResourceAdapterRepository.class, utilities.getResourceAdapterRepositoryInjector()) .addDependency( ConnectorServices.IRONJACAMAR_MDR, MetadataRepository.class, utilities.getMdrInjector()) .addDependency( SimpleSecurityManagerService.SERVICE_NAME, SimpleSecurityManager.class, utilities.getSecurityManagerInjector()) .addDependency( TxnServices.JBOSS_TXN_TRANSACTION_MANAGER, TransactionManager.class, utilities.getTransactionManagerInjector()) .addDependency( TxnServices.JBOSS_TXN_SYNCHRONIZATION_REGISTRY, TransactionSynchronizationRegistry.class, utilities.getTransactionSynchronizationRegistryInjector()) .addDependency( TxnServices.JBOSS_TXN_USER_TRANSACTION, UserTransaction.class, utilities.getUserTransactionInjector()) .addListener(verificationHandler) .setInitialMode(ServiceController.Mode.ACTIVE) .install()); // create the POA Registry use by iiop final POARegistry poaRegistry = new POARegistry(); newControllers.add( context .getServiceTarget() .addService(POARegistry.SERVICE_NAME, poaRegistry) .addDependency(CorbaPOAService.ROOT_SERVICE_NAME, POA.class, poaRegistry.getRootPOA()) .addListener(verificationHandler) .install()); } }