Пример #1
0
  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());
    }
  }