Search in sources :

Example 1 with SessionServiceImpl

use of org.teiid.services.SessionServiceImpl in project teiid by teiid.

the class TestJBossSecurityHelper method validateSession.

public void validateSession(boolean securityEnabled) throws Exception {
    final ArrayList<String> domains = new ArrayList<String>();
    domains.add("somedomain");
    AuthenticationManager authManager = Mockito.mock(AuthenticationManager.class);
    Mockito.stub(authManager.isValid(new SimplePrincipal("steve"), "pass1", new Subject())).toReturn(true);
    final SecurityDomainContext securityContext = new SecurityDomainContext(authManager, null, null, null, null, null);
    SessionServiceImpl jss = new SessionServiceImpl() {

        @Override
        protected VDBMetaData getActiveVDB(String vdbName, String vdbVersion) throws SessionServiceException {
            return Mockito.mock(VDBMetaData.class);
        }
    };
    jss.setSecurityHelper(buildSecurityHelper("somedomain", securityContext));
    jss.setSecurityDomain("somedomain");
    try {
        jss.validateSession(String.valueOf(1));
        // $NON-NLS-1$
        fail("exception expected");
    } catch (InvalidSessionException e) {
    }
    // $NON-NLS-1$ //$NON-NLS-2$
    SessionMetadata info = jss.createSession("x", "1", AuthenticationType.USERPASSWORD, "steve", new Credentials("pass1".toCharArray()), "foo", new Properties());
    if (securityEnabled) {
        Mockito.verify(authManager).isValid(new SimplePrincipal("steve"), "pass1", new Subject());
    }
    String id1 = info.getSessionId();
    jss.validateSession(id1);
    assertEquals(1, jss.getActiveSessionsCount());
    // $NON-NLS-1$
    assertEquals(0, jss.getSessionsLoggedInToVDB(new VDBKey("a", 1)).size());
    jss.closeSession(id1);
    try {
        jss.validateSession(id1);
        // $NON-NLS-1$
        fail("exception expected");
    } catch (InvalidSessionException e) {
    }
    try {
        jss.closeSession(id1);
        // $NON-NLS-1$
        fail("exception expected");
    } catch (InvalidSessionException e) {
    }
}
Also used : InvalidSessionException(org.teiid.client.security.InvalidSessionException) SessionServiceImpl(org.teiid.services.SessionServiceImpl) SessionMetadata(org.teiid.adminapi.impl.SessionMetadata) ArrayList(java.util.ArrayList) Properties(java.util.Properties) Subject(javax.security.auth.Subject) SecurityDomainContext(org.jboss.as.security.plugins.SecurityDomainContext) AuthenticationManager(org.jboss.security.AuthenticationManager) VDBKey(org.teiid.vdb.runtime.VDBKey) SimplePrincipal(org.jboss.security.SimplePrincipal) Credentials(org.teiid.security.Credentials)

Example 2 with SessionServiceImpl

use of org.teiid.services.SessionServiceImpl in project teiid by teiid.

the class TeiidAdd method initilaizeTeiidEngine.

private void initilaizeTeiidEngine(final OperationContext context, final ModelNode operation) throws OperationFailedException {
    ServiceTarget target = context.getServiceTarget();
    final String nodeName = getNodeName();
    Environment environment = context.getCallEnvironment();
    final JBossLifeCycleListener shutdownListener = new JBossLifeCycleListener(environment);
    // $NON-NLS-1$
    ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("Teiid Timer"));
    // async thread-pool
    int maxThreads = 10;
    if (asInt(THREAD_COUNT_ATTRIBUTE, operation, context) != null) {
        maxThreads = asInt(THREAD_COUNT_ATTRIBUTE, operation, context);
    }
    buildThreadService(maxThreads, target);
    // translator repository
    final TranslatorRepository translatorRepo = new TranslatorRepository();
    ValueService<TranslatorRepository> translatorService = new ValueService<TranslatorRepository>(new org.jboss.msc.value.Value<TranslatorRepository>() {

        @Override
        public TranslatorRepository getValue() throws IllegalStateException, IllegalArgumentException {
            return translatorRepo;
        }
    });
    ServiceController<TranslatorRepository> service = target.addService(TeiidServiceNames.TRANSLATOR_REPO, translatorService).install();
    final ConnectorManagerRepository connectorManagerRepo = buildConnectorManagerRepository(translatorRepo);
    // system function tree
    SystemFunctionManager systemFunctionManager = SystemMetadata.getInstance().getSystemFunctionManager();
    // VDB repository
    final VDBRepository vdbRepository = new VDBRepository();
    vdbRepository.setSystemFunctionManager(systemFunctionManager);
    if (isDefined(DATA_ROLES_REQUIRED_ELEMENT, operation, context) && asBoolean(DATA_ROLES_REQUIRED_ELEMENT, operation, context)) {
        vdbRepository.setDataRolesRequired(true);
    }
    if (isDefined(ALLOW_ENV_FUNCTION_ELEMENT, operation, context)) {
        vdbRepository.setAllowEnvFunction(asBoolean(ALLOW_ENV_FUNCTION_ELEMENT, operation, context));
    } else {
        vdbRepository.setAllowEnvFunction(false);
    }
    VDBRepositoryService vdbRepositoryService = new VDBRepositoryService(vdbRepository);
    ServiceBuilder<VDBRepository> vdbRepoService = target.addService(TeiidServiceNames.VDB_REPO, vdbRepositoryService);
    vdbRepoService.addDependency(TeiidServiceNames.BUFFER_MGR, BufferManager.class, vdbRepositoryService.bufferManagerInjector);
    vdbRepoService.addDependency(DependencyType.OPTIONAL, TeiidServiceNames.OBJECT_REPLICATOR, ObjectReplicator.class, vdbRepositoryService.objectReplicatorInjector);
    vdbRepoService.install();
    // VDB Status manager
    final VDBStatusCheckerExecutorService statusChecker = new VDBStatusCheckerExecutorService();
    ValueService<VDBStatusChecker> statusService = new ValueService<VDBStatusChecker>(new org.jboss.msc.value.Value<VDBStatusChecker>() {

        @Override
        public VDBStatusChecker getValue() throws IllegalStateException, IllegalArgumentException {
            return statusChecker;
        }
    });
    ServiceBuilder<VDBStatusChecker> statusBuilder = target.addService(TeiidServiceNames.VDB_STATUS_CHECKER, statusService);
    statusBuilder.addDependency(TeiidServiceNames.THREAD_POOL_SERVICE, Executor.class, statusChecker.executorInjector);
    statusBuilder.addDependency(TeiidServiceNames.VDB_REPO, VDBRepository.class, statusChecker.vdbRepoInjector);
    statusBuilder.install();
    // $NON-NLS-1$ //$NON-NLS-2$
    RelativePathService.addService(TeiidServiceNames.DATA_DIR, "teiid-data", "jboss.server.data.dir", target);
    final ObjectsSerializerService serializer = new ObjectsSerializerService();
    ServiceBuilder<ObjectSerializer> objectSerializerService = target.addService(TeiidServiceNames.OBJECT_SERIALIZER, serializer);
    objectSerializerService.addDependency(TeiidServiceNames.DATA_DIR, String.class, serializer.getPathInjector());
    objectSerializerService.install();
    // Object Replicator
    boolean replicatorAvailable = false;
    if (isDefined(DC_STACK_ATTRIBUTE, operation, context)) {
        String stack = asString(DC_STACK_ATTRIBUTE, operation, context);
        replicatorAvailable = true;
        JGroupsObjectReplicatorService replicatorService = new JGroupsObjectReplicatorService();
        ServiceBuilder<JGroupsObjectReplicator> serviceBuilder = target.addService(TeiidServiceNames.OBJECT_REPLICATOR, replicatorService);
        // $NON-NLS-1$ //$NON-NLS-2$
        serviceBuilder.addDependency(JGroupsRequirement.CHANNEL_FACTORY.getServiceName(context, stack), ChannelFactory.class, replicatorService.channelFactoryInjector);
        serviceBuilder.addDependency(TeiidServiceNames.THREAD_POOL_SERVICE, Executor.class, replicatorService.executorInjector);
        serviceBuilder.install();
        LogManager.logInfo(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50003));
        NodeTrackerService trackerService = new NodeTrackerService(nodeName, scheduler);
        ServiceBuilder<NodeTracker> nodeTrackerBuilder = target.addService(TeiidServiceNames.NODE_TRACKER_SERVICE, trackerService);
        // $NON-NLS-1$ //$NON-NLS-2$
        nodeTrackerBuilder.addDependency(JGroupsRequirement.CHANNEL_FACTORY.getServiceName(context, stack), ChannelFactory.class, trackerService.channelFactoryInjector);
        nodeTrackerBuilder.install();
    } else {
        // $NON-NLS-1$
        LogManager.logDetail(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("distributed_cache_not_enabled"));
    }
    // TODO: remove verbose service by moving the buffer service from runtime project
    // $NON-NLS-1$ //$NON-NLS-2$
    RelativePathService.addService(TeiidServiceNames.BUFFER_DIR, "teiid-buffer", "jboss.server.temp.dir", target);
    BufferManagerService bufferService = buildBufferManager(context, operation);
    ServiceBuilder<BufferManager> bufferServiceBuilder = target.addService(TeiidServiceNames.BUFFER_MGR, bufferService);
    bufferServiceBuilder.addDependency(TeiidServiceNames.BUFFER_DIR, String.class, bufferService.pathInjector);
    bufferServiceBuilder.install();
    TupleBufferCacheService tupleBufferService = new TupleBufferCacheService();
    ServiceBuilder<TupleBufferCache> tupleBufferBuilder = target.addService(TeiidServiceNames.TUPLE_BUFFER, tupleBufferService);
    tupleBufferBuilder.addDependency(TeiidServiceNames.BUFFER_MGR, BufferManager.class, tupleBufferService.bufferMgrInjector);
    tupleBufferBuilder.addDependency(replicatorAvailable ? DependencyType.REQUIRED : DependencyType.OPTIONAL, TeiidServiceNames.OBJECT_REPLICATOR, ObjectReplicator.class, tupleBufferService.replicatorInjector);
    tupleBufferBuilder.install();
    PolicyDecider policyDecider = null;
    if (isDefined(POLICY_DECIDER_MODULE_ELEMENT, operation, context)) {
        policyDecider = buildService(PolicyDecider.class, asString(POLICY_DECIDER_MODULE_ELEMENT, operation, context));
    }
    final AuthorizationValidator authValidator;
    if (isDefined(AUTHORIZATION_VALIDATOR_MODULE_ELEMENT, operation, context)) {
        authValidator = buildService(AuthorizationValidator.class, asString(AUTHORIZATION_VALIDATOR_MODULE_ELEMENT, operation, context));
    } else {
        DefaultAuthorizationValidator dap = new DefaultAuthorizationValidator();
        dap.setPolicyDecider(policyDecider);
        authValidator = dap;
    }
    ValueService<AuthorizationValidator> authValidatorService = new ValueService<AuthorizationValidator>(new org.jboss.msc.value.Value<AuthorizationValidator>() {

        @Override
        public AuthorizationValidator getValue() throws IllegalStateException, IllegalArgumentException {
            return authValidator;
        }
    });
    target.addService(TeiidServiceNames.AUTHORIZATION_VALIDATOR, authValidatorService).install();
    final PreParser preParser;
    if (isDefined(PREPARSER_MODULE_ELEMENT, operation, context)) {
        preParser = buildService(PreParser.class, asString(PREPARSER_MODULE_ELEMENT, operation, context));
    } else {
        preParser = new PreParser() {

            @Override
            public String preParse(String command, CommandContext context) {
                return command;
            }
        };
    }
    ValueService<PreParser> preParserService = new ValueService<PreParser>(new org.jboss.msc.value.Value<PreParser>() {

        @Override
        public PreParser getValue() throws IllegalStateException, IllegalArgumentException {
            return preParser;
        }
    });
    target.addService(TeiidServiceNames.PREPARSER, preParserService).install();
    // resultset cache
    boolean rsCache = true;
    if (isDefined(RSC_ENABLE_ATTRIBUTE, operation, context) && !asBoolean(RSC_ENABLE_ATTRIBUTE, operation, context)) {
        rsCache = false;
    }
    if (!isDefined(RSC_CONTAINER_NAME_ATTRIBUTE, operation, context)) {
        throw new OperationFailedException(IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50094));
    }
    // $NON-NLS-1$
    String cacheName = "resultset";
    if (isDefined(RSC_NAME_ATTRIBUTE, operation, context)) {
        // if null; default cache will be used
        cacheName = asString(RSC_NAME_ATTRIBUTE, operation, context);
    }
    if (rsCache) {
        CacheFactoryService cfs = new CacheFactoryService();
        ServiceBuilder<CacheFactory> cacheFactoryBuilder = target.addService(TeiidServiceNames.RESULTSET_CACHE_FACTORY, cfs);
        String ispnName = asString(RSC_CONTAINER_NAME_ATTRIBUTE, operation, context);
        cacheFactoryBuilder.addDependency(InfinispanRequirement.CONTAINER.getServiceName(context, ispnName), EmbeddedCacheManager.class, // $NON-NLS-1$
        cfs.cacheContainerInjector);
        cacheFactoryBuilder.install();
        int maxStaleness = DQPConfiguration.DEFAULT_MAX_STALENESS_SECONDS;
        if (isDefined(RSC_MAX_STALENESS_ATTRIBUTE, operation, context)) {
            maxStaleness = asInt(RSC_MAX_STALENESS_ATTRIBUTE, operation, context);
        }
        CacheService<CachedResults> resultSetService = new CacheService<CachedResults>(cacheName, SessionAwareCache.Type.RESULTSET, maxStaleness);
        ServiceBuilder<SessionAwareCache<CachedResults>> resultsCacheBuilder = target.addService(TeiidServiceNames.CACHE_RESULTSET, resultSetService);
        resultsCacheBuilder.addDependency(TeiidServiceNames.TUPLE_BUFFER, TupleBufferCache.class, resultSetService.tupleBufferCacheInjector);
        resultsCacheBuilder.addDependency(TeiidServiceNames.RESULTSET_CACHE_FACTORY, CacheFactory.class, resultSetService.cacheFactoryInjector);
        // $NON-NLS-1$
        resultsCacheBuilder.addDependency(InfinispanCacheRequirement.CACHE.getServiceName(context, ispnName, cacheName));
        // $NON-NLS-1$
        resultsCacheBuilder.addDependency(InfinispanCacheRequirement.CACHE.getServiceName(context, ispnName, cacheName + SessionAwareCache.REPL));
        resultsCacheBuilder.install();
    }
    // prepared-plan cache
    boolean ppCache = true;
    if (isDefined(PPC_ENABLE_ATTRIBUTE, operation, context)) {
        ppCache = asBoolean(PPC_ENABLE_ATTRIBUTE, operation, context);
    }
    if (!isDefined(PPC_CONTAINER_NAME_ATTRIBUTE, operation, context)) {
        throw new OperationFailedException(IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50095));
    }
    // $NON-NLS-1$
    cacheName = "preparedplan";
    if (isDefined(PPC_NAME_ATTRIBUTE, operation, context)) {
        cacheName = asString(PPC_NAME_ATTRIBUTE, operation, context);
    }
    if (ppCache) {
        CacheFactoryService cfs = new CacheFactoryService();
        ServiceBuilder<CacheFactory> cacheFactoryBuilder = target.addService(TeiidServiceNames.PREPAREDPLAN_CACHE_FACTORY, cfs);
        String ispnName = asString(PPC_CONTAINER_NAME_ATTRIBUTE, operation, context);
        cacheFactoryBuilder.addDependency(InfinispanRequirement.CONTAINER.getServiceName(context, ispnName), EmbeddedCacheManager.class, // $NON-NLS-1$
        cfs.cacheContainerInjector);
        cacheFactoryBuilder.install();
        CacheService<PreparedPlan> preparedPlanService = new CacheService<PreparedPlan>(cacheName, SessionAwareCache.Type.PREPAREDPLAN, 0);
        ServiceBuilder<SessionAwareCache<PreparedPlan>> preparedPlanCacheBuilder = target.addService(TeiidServiceNames.CACHE_PREPAREDPLAN, preparedPlanService);
        preparedPlanCacheBuilder.addDependency(TeiidServiceNames.PREPAREDPLAN_CACHE_FACTORY, CacheFactory.class, preparedPlanService.cacheFactoryInjector);
        // $NON-NLS-1$
        preparedPlanCacheBuilder.addDependency(InfinispanCacheRequirement.CACHE.getServiceName(context, ispnName, cacheName));
        preparedPlanCacheBuilder.install();
    }
    // Query Engine
    final DQPCoreService engine = buildQueryEngine(context, operation);
    EventDistributorFactoryService edfs = new EventDistributorFactoryService();
    ServiceBuilder<InternalEventDistributorFactory> edfsServiceBuilder = target.addService(TeiidServiceNames.EVENT_DISTRIBUTOR_FACTORY, edfs);
    edfsServiceBuilder.addDependency(TeiidServiceNames.VDB_REPO, VDBRepository.class, edfs.vdbRepositoryInjector);
    edfsServiceBuilder.addDependency(replicatorAvailable ? DependencyType.REQUIRED : DependencyType.OPTIONAL, TeiidServiceNames.OBJECT_REPLICATOR, ObjectReplicator.class, edfs.objectReplicatorInjector);
    edfs.dqpCore = engine.getValue();
    edfsServiceBuilder.install();
    // $NON-NLS-1$
    String workManager = "default";
    if (isDefined(WORKMANAGER, operation, context)) {
        workManager = asString(WORKMANAGER, operation, context);
    }
    ServiceBuilder<DQPCore> engineBuilder = target.addService(TeiidServiceNames.ENGINE, engine);
    // $NON-NLS-1$ //$NON-NLS-2$
    engineBuilder.addDependency(ServiceName.JBOSS.append("connector", "workmanager", workManager), WorkManager.class, engine.getWorkManagerInjector());
    // $NON-NLS-1$ //$NON-NLS-2$
    engineBuilder.addDependency(ServiceName.JBOSS.append("txn", "XATerminator"), XATerminator.class, engine.getXaTerminatorInjector());
    // $NON-NLS-1$ //$NON-NLS-2$
    engineBuilder.addDependency(ServiceName.JBOSS.append("txn", "TransactionManager"), TransactionManager.class, engine.getTxnManagerInjector());
    engineBuilder.addDependency(TeiidServiceNames.BUFFER_MGR, BufferManager.class, engine.getBufferManagerInjector());
    engineBuilder.addDependency(TeiidServiceNames.TRANSLATOR_REPO, TranslatorRepository.class, engine.getTranslatorRepositoryInjector());
    engineBuilder.addDependency(TeiidServiceNames.VDB_REPO, VDBRepository.class, engine.getVdbRepositoryInjector());
    engineBuilder.addDependency(TeiidServiceNames.AUTHORIZATION_VALIDATOR, AuthorizationValidator.class, engine.getAuthorizationValidatorInjector());
    engineBuilder.addDependency(TeiidServiceNames.PREPARSER, PreParser.class, engine.getPreParserInjector());
    engineBuilder.addDependency(rsCache ? DependencyType.REQUIRED : DependencyType.OPTIONAL, TeiidServiceNames.CACHE_RESULTSET, SessionAwareCache.class, engine.getResultSetCacheInjector());
    engineBuilder.addDependency(TeiidServiceNames.CACHE_PREPAREDPLAN, SessionAwareCache.class, engine.getPreparedPlanCacheInjector());
    engineBuilder.addDependency(TeiidServiceNames.EVENT_DISTRIBUTOR_FACTORY, InternalEventDistributorFactory.class, engine.getEventDistributorFactoryInjector());
    engineBuilder.setInitialMode(ServiceController.Mode.ACTIVE);
    engineBuilder.install();
    // add JNDI for event distributor
    final ReferenceFactoryService<EventDistributorFactory> referenceFactoryService = new ReferenceFactoryService<EventDistributorFactory>();
    // $NON-NLS-1$
    final ServiceName referenceFactoryServiceName = TeiidServiceNames.EVENT_DISTRIBUTOR_FACTORY.append("reference-factory");
    final ServiceBuilder<?> referenceBuilder = target.addService(referenceFactoryServiceName, referenceFactoryService);
    referenceBuilder.addDependency(TeiidServiceNames.EVENT_DISTRIBUTOR_FACTORY, EventDistributorFactory.class, referenceFactoryService.getInjector());
    referenceBuilder.setInitialMode(ServiceController.Mode.ACTIVE);
    // $NON-NLS-1$
    String jndiName = "teiid/event-distributor-factory";
    final ContextNames.BindInfo bindInfo = ContextNames.bindInfoFor(jndiName);
    final BinderService binderService = new BinderService(bindInfo.getBindName());
    final ServiceBuilder<?> binderBuilder = target.addService(bindInfo.getBinderServiceName(), binderService);
    binderBuilder.addDependency(referenceFactoryServiceName, ManagedReferenceFactory.class, binderService.getManagedObjectInjector());
    binderBuilder.addDependency(bindInfo.getParentContextServiceName(), ServiceBasedNamingStore.class, binderService.getNamingStoreInjector());
    binderBuilder.setInitialMode(ServiceController.Mode.ACTIVE);
    referenceBuilder.install();
    binderBuilder.install();
    // $NON-NLS-1$
    LogManager.logDetail(LogConstants.CTX_RUNTIME, IntegrationPlugin.Util.getString("event_distributor_bound", jndiName));
    // Materialization management service
    MaterializationManagementService matviewService = new MaterializationManagementService(shutdownListener, scheduler);
    ServiceBuilder<MaterializationManager> matviewBuilder = target.addService(TeiidServiceNames.MATVIEW_SERVICE, matviewService);
    matviewBuilder.addDependency(TeiidServiceNames.ENGINE, DQPCore.class, matviewService.dqpInjector);
    matviewBuilder.addDependency(TeiidServiceNames.VDB_REPO, VDBRepository.class, matviewService.vdbRepositoryInjector);
    matviewBuilder.addDependency(replicatorAvailable ? DependencyType.REQUIRED : DependencyType.OPTIONAL, TeiidServiceNames.NODE_TRACKER_SERVICE, NodeTracker.class, matviewService.nodeTrackerInjector);
    matviewBuilder.install();
    // Register VDB deployer
    context.addStep(new AbstractDeploymentChainStep() {

        @Override
        public void execute(DeploymentProcessorTarget processorTarget) {
            // vdb deployers
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.STRUCTURE, 0, new FileRootMountProcessor(".ddl"));
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.STRUCTURE, Phase.STRUCTURE_WAR_DEPLOYMENT_INIT | 0xFF75, new DynamicVDBRootMountDeployer());
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.STRUCTURE, Phase.STRUCTURE_WAR_DEPLOYMENT_INIT | 0xFF76, new VDBStructureDeployer());
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.PARSE, Phase.PARSE_WEB_DEPLOYMENT | 0x0001, new VDBParserDeployer(vdbRepository));
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.DEPENDENCIES, Phase.DEPENDENCIES_WAR_MODULE | 0x0001, new VDBDependencyDeployer());
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.INSTALL, Phase.INSTALL_WAR_DEPLOYMENT | 0x1000, new VDBDeployer(translatorRepo, vdbRepository, shutdownListener));
            // translator deployers
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.STRUCTURE, Phase.STRUCTURE_JDBC_DRIVER | 0x0001, new TranslatorStructureDeployer());
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.DEPENDENCIES, Phase.DEPENDENCIES_MODULE | 0x0001, new TranslatorDependencyDeployer());
            processorTarget.addDeploymentProcessor(TeiidExtension.TEIID_SUBSYSTEM, Phase.INSTALL, Phase.INSTALL_JDBC_DRIVER | 0x0001, new TranslatorDeployer());
        }
    }, OperationContext.Stage.RUNTIME);
    // install a session service
    // TODO: may eventually couple this with DQPCore
    final SessionServiceImpl sessionServiceImpl = new SessionServiceImpl();
    if (isDefined(AUTHENTICATION_SECURITY_DOMAIN_ATTRIBUTE, operation, context)) {
        String securityDomain = asString(AUTHENTICATION_SECURITY_DOMAIN_ATTRIBUTE, operation, context);
        sessionServiceImpl.setSecurityDomain(securityDomain);
    }
    if (isDefined(AUTHENTICATION_MAX_SESSIONS_ALLOWED_ATTRIBUTE, operation, context)) {
        sessionServiceImpl.setSessionMaxLimit(asLong(AUTHENTICATION_MAX_SESSIONS_ALLOWED_ATTRIBUTE, operation, context));
    }
    if (isDefined(AUTHENTICATION_SESSION_EXPIRATION_TIME_LIMIT_ATTRIBUTE, operation, context)) {
        sessionServiceImpl.setSessionExpirationTimeLimit(asLong(AUTHENTICATION_SESSION_EXPIRATION_TIME_LIMIT_ATTRIBUTE, operation, context));
    }
    if (isDefined(AUTHENTICATION_TYPE_ATTRIBUTE, operation, context)) {
        sessionServiceImpl.setAuthenticationType(AuthenticationType.valueOf(asString(AUTHENTICATION_TYPE_ATTRIBUTE, operation, context)));
    } else {
        sessionServiceImpl.setAuthenticationType(AuthenticationType.USERPASSWORD);
    }
    if (isDefined(AUTHENTICATION_TRUST_ALL_LOCAL_ATTRIBUTE, operation, context)) {
        boolean allowUnauthenticated = asBoolean(AUTHENTICATION_TRUST_ALL_LOCAL_ATTRIBUTE, operation, context);
        sessionServiceImpl.setTrustAllLocal(allowUnauthenticated);
    }
    if (isDefined(AUTHENTICATION_ALLOW_SECURITY_DOMAIN_QUALIFIER, operation, context)) {
        boolean allowSecurityDomainQualifier = asBoolean(AUTHENTICATION_ALLOW_SECURITY_DOMAIN_QUALIFIER, operation, context);
        sessionServiceImpl.setAllowSecurityDomainQualifier(allowSecurityDomainQualifier);
    }
    sessionServiceImpl.setDqp(engine.getValue());
    sessionServiceImpl.setVDBRepository(vdbRepository);
    sessionServiceImpl.setSecurityHelper(new JBossSecurityHelper());
    sessionServiceImpl.start();
    ContainerSessionService containerSessionService = new ContainerSessionService(sessionServiceImpl);
    ServiceBuilder<SessionService> sessionServiceBuilder = target.addService(TeiidServiceNames.SESSION, containerSessionService);
    sessionServiceBuilder.install();
    // rest war service
    RestWarGenerator warGenerator = TeiidAdd.buildService(RestWarGenerator.class, "org.jboss.teiid.rest-service");
    ResteasyEnabler restEnabler = new ResteasyEnabler(warGenerator);
    ServiceBuilder<Void> warGeneratorSvc = target.addService(TeiidServiceNames.REST_WAR_SERVICE, restEnabler);
    warGeneratorSvc.addDependency(Services.JBOSS_SERVER_CONTROLLER, ModelController.class, restEnabler.controllerValue);
    warGeneratorSvc.addDependency(TeiidServiceNames.THREAD_POOL_SERVICE, Executor.class, restEnabler.executorInjector);
    warGeneratorSvc.addDependency(TeiidServiceNames.VDB_REPO, VDBRepository.class, restEnabler.vdbRepoInjector);
    warGeneratorSvc.install();
}
Also used : SystemFunctionManager(org.teiid.query.function.SystemFunctionManager) NodeTracker(org.teiid.runtime.NodeTracker) DefaultAuthorizationValidator(org.teiid.dqp.internal.process.DefaultAuthorizationValidator) AuthorizationValidator(org.teiid.dqp.internal.process.AuthorizationValidator) CommandContext(org.teiid.CommandContext) TeiidConstants.asString(org.teiid.jboss.TeiidConstants.asString) PreParser(org.teiid.PreParser) TupleBufferCache(org.teiid.common.buffer.TupleBufferCache) CacheFactory(org.teiid.cache.CacheFactory) NamedThreadFactory(org.teiid.core.util.NamedThreadFactory) VDBStatusChecker(org.teiid.deployers.VDBStatusChecker) CachedResults(org.teiid.dqp.internal.process.CachedResults) PreparedPlan(org.teiid.dqp.internal.process.PreparedPlan) AbstractDeploymentChainStep(org.jboss.as.server.AbstractDeploymentChainStep) DQPCore(org.teiid.dqp.internal.process.DQPCore) InternalEventDistributorFactory(org.teiid.services.InternalEventDistributorFactory) RestWarGenerator(org.teiid.deployers.RestWarGenerator) ConnectorManagerRepository(org.teiid.dqp.internal.datamgr.ConnectorManagerRepository) OperationFailedException(org.jboss.as.controller.OperationFailedException) SessionService(org.teiid.dqp.service.SessionService) DeploymentProcessorTarget(org.jboss.as.server.DeploymentProcessorTarget) SessionAwareCache(org.teiid.dqp.internal.process.SessionAwareCache) BufferManager(org.teiid.common.buffer.BufferManager) TranslatorRepository(org.teiid.dqp.internal.datamgr.TranslatorRepository) JGroupsObjectReplicator(org.teiid.replication.jgroups.JGroupsObjectReplicator) ContextNames(org.jboss.as.naming.deployment.ContextNames) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ServiceTarget(org.jboss.msc.service.ServiceTarget) MaterializationManager(org.teiid.runtime.MaterializationManager) ServiceName(org.jboss.msc.service.ServiceName) Environment(org.jboss.as.controller.access.Environment) PolicyDecider(org.teiid.PolicyDecider) ValueService(org.jboss.msc.service.ValueService) BinderService(org.jboss.as.naming.service.BinderService) DefaultAuthorizationValidator(org.teiid.dqp.internal.process.DefaultAuthorizationValidator) InternalEventDistributorFactory(org.teiid.services.InternalEventDistributorFactory) EventDistributorFactory(org.teiid.events.EventDistributorFactory) SessionServiceImpl(org.teiid.services.SessionServiceImpl) VDBRepository(org.teiid.deployers.VDBRepository)

Example 3 with SessionServiceImpl

use of org.teiid.services.SessionServiceImpl in project teiid by teiid.

the class TestCommSockets method helpEstablishConnection.

private SocketServerConnection helpEstablishConnection(boolean clientSecure, SSLConfiguration config, Properties socketConfig) throws CommunicationException, ConnectionException {
    if (listener == null) {
        ClientServiceRegistryImpl server = new ClientServiceRegistryImpl() {

            @Override
            public ClassLoader getCallerClassloader() {
                return getClass().getClassLoader();
            }
        };
        service = new SessionServiceImpl();
        server.registerClientService(ILogon.class, new LogonImpl(service, "fakeCluster"), null);
        server.registerClientService(FakeService.class, new TestSocketRemoting.FakeServiceImpl(), null);
        storageManager = new MemoryStorageManager();
        listener = new SocketListener(addr, 0, 0, 2, config, server, storageManager);
        SocketListenerStats stats = listener.getStats();
        assertEquals(0, stats.maxSockets);
        assertEquals(0, stats.objectsRead);
        assertEquals(0, stats.objectsWritten);
        assertEquals(0, stats.sockets);
    }
    Properties p = new Properties(socketConfig);
    String url = new TeiidURL(addr.getHostName(), listener.getPort(), clientSecure).getAppServerURL();
    p.setProperty(TeiidURL.CONNECTION.SERVER_URL, url);
    p.setProperty(TeiidURL.CONNECTION.APP_NAME, "test");
    p.setProperty(TeiidURL.CONNECTION.DISCOVERY_STRATEGY, UrlServerDiscovery.class.getName());
    if (sscf == null) {
        sscf = new SocketServerConnectionFactory();
        sscf.initialize(socketConfig);
    }
    return sscf.getConnection(p);
}
Also used : SocketServerConnectionFactory(org.teiid.net.socket.SocketServerConnectionFactory) SessionServiceImpl(org.teiid.services.SessionServiceImpl) TeiidURL(org.teiid.net.TeiidURL) Properties(java.util.Properties) UrlServerDiscovery(org.teiid.net.socket.UrlServerDiscovery) MemoryStorageManager(org.teiid.common.buffer.impl.MemoryStorageManager)

Example 4 with SessionServiceImpl

use of org.teiid.services.SessionServiceImpl in project teiid by teiid.

the class TestLogonImpl method setup.

@Before
public void setup() {
    ssi = new SessionServiceImpl();
    ssi.setSecurityHelper(new DoNothingSecurityHelper() {

        @Override
        public Subject getSubjectInContext(String securityDomain) {
            if (securityDomain.equals("SC")) {
                return new Subject();
            }
            return null;
        }
    });
}
Also used : SessionServiceImpl(org.teiid.services.SessionServiceImpl) DoNothingSecurityHelper(org.teiid.runtime.DoNothingSecurityHelper) Subject(javax.security.auth.Subject) Before(org.junit.Before)

Aggregations

SessionServiceImpl (org.teiid.services.SessionServiceImpl)4 Properties (java.util.Properties)2 Subject (javax.security.auth.Subject)2 ArrayList (java.util.ArrayList)1 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)1 OperationFailedException (org.jboss.as.controller.OperationFailedException)1 Environment (org.jboss.as.controller.access.Environment)1 ContextNames (org.jboss.as.naming.deployment.ContextNames)1 BinderService (org.jboss.as.naming.service.BinderService)1 SecurityDomainContext (org.jboss.as.security.plugins.SecurityDomainContext)1 AbstractDeploymentChainStep (org.jboss.as.server.AbstractDeploymentChainStep)1 DeploymentProcessorTarget (org.jboss.as.server.DeploymentProcessorTarget)1 ServiceName (org.jboss.msc.service.ServiceName)1 ServiceTarget (org.jboss.msc.service.ServiceTarget)1 ValueService (org.jboss.msc.service.ValueService)1 AuthenticationManager (org.jboss.security.AuthenticationManager)1 SimplePrincipal (org.jboss.security.SimplePrincipal)1 Before (org.junit.Before)1 CommandContext (org.teiid.CommandContext)1 PolicyDecider (org.teiid.PolicyDecider)1