/** {@inheritDoc} */ public InvocationResponse invoke(MessageContext messageContext) throws AxisFault { if (log.isDebugEnabled()) { log.debug( "Starting Activation Handler invocation. Incoming Message: " + messageContext.getEnvelope().toString()); } AxisService service = messageContext.getAxisService(); int tenantId = getTenantId(messageContext); if (service != null && "ActivationService".equals(service.getName())) { log.debug("Granted access to the Activation Service"); if (tenantId > 0) { TenantAxisUtils.getTenantAxisConfiguration( getTenantDomain(), messageContext.getConfigurationContext()); log.debug("Loaded Tenant Configuration"); } return InvocationResponse.CONTINUE; } if (tenantId == MultitenantConstants.SUPER_TENANT_ID) { log.debug("Granted access for super tenant"); return InvocationResponse.CONTINUE; } if (ActivationManager.activationRecorded(tenantId)) { if (ActivationManager.getActivation(tenantId)) { TenantAxisUtils.getTenantAxisConfiguration( getTenantDomain(), messageContext.getConfigurationContext()); log.debug("Loaded Tenant Configuration"); return InvocationResponse.CONTINUE; } else { if (log.isWarnEnabled()) { String serviceName = Util.getServiceName(); log.warn("Failed attempt to access " + serviceName + " by tenant " + tenantId); } return InvocationResponse.ABORT; } } String serviceName = Util.getServiceName(); try { if (CloudServicesUtil.isCloudServiceActive(serviceName, tenantId)) { log.debug("Successful attempt to access " + serviceName + " by tenant " + tenantId); ActivationManager.setActivation(tenantId, true); TenantAxisUtils.getTenantAxisConfiguration( getTenantDomain(), messageContext.getConfigurationContext()); log.debug("Loaded Tenant Configuration"); return InvocationResponse.CONTINUE; } } catch (Exception e) { throw new AxisFault("Failed to determine Activation status.", e); } log.warn("Failed attempt to access " + serviceName + " by tenant " + tenantId); ActivationManager.setActivation(tenantId, false); return InvocationResponse.ABORT; }
/** * Search the service artifacts stored in the registry and find the set of services that satisfy * the conditions stated in the given WS-D probe. If the probe does not impose any restrictions on * the result set, all the services in the registry will be returned. * * @param probe a WS-D probe describing the search criteria * @return an array of TargetService instances matching the probe or null * @throws Exception if an error occurs while accessing the registry */ public static TargetService[] findServices(Probe probe) throws Exception { ServiceManager serviceManager = new ServiceManager(getRegistry()); DiscoveryServiceFilter filter = new DiscoveryServiceFilter(probe); // Check whether the inactive services should be skipped when searching AxisConfiguration axisConfig; String tenantDomain = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantDomain(true); ConfigurationContext mainCfgCtx = ConfigHolder.getInstance().getServerConfigurationContext(); if (tenantDomain != MultitenantConstants.SUPER_TENANT_DOMAIN_NAME) { axisConfig = TenantAxisUtils.getTenantAxisConfiguration(tenantDomain, mainCfgCtx); } else { axisConfig = mainCfgCtx.getAxisConfiguration(); } Parameter parameter = axisConfig.getParameter(DiscoveryConstants.SKIP_INACTIVE_SERVICES); filter.setSkipInactiveServices(parameter == null || "true".equals(parameter.getValue())); Service[] services = serviceManager.findServices(filter); if (services != null && services.length > 0) { TargetService[] targetServices = new TargetService[services.length]; for (int i = 0; i < services.length; i++) { targetServices[i] = getTargetService(services[i]); } return targetServices; } return null; }
private static Registry getRegistry() throws DiscoveryException { String domain = CarbonContext.getThreadLocalCarbonContext().getTenantDomain(); if (domain != MultitenantConstants.SUPER_TENANT_DOMAIN_NAME) { AxisConfiguration axisConfig = TenantAxisUtils.getTenantAxisConfiguration( domain, ConfigHolder.getInstance().getServerConfigurationContext()); return (Registry) PrivilegedCarbonContext.getCurrentContext(axisConfig) .getRegistry(RegistryType.SYSTEM_GOVERNANCE); } return (Registry) PrivilegedCarbonContext.getCurrentContext().getRegistry(RegistryType.SYSTEM_GOVERNANCE); }