use of com.canoo.platform.core.PlatformConfiguration in project dolphin-platform by canoo.
the class MetricsModule method initialize.
@Override
public void initialize(final ServerCoreComponents coreComponents) {
final PlatformConfiguration configuration = coreComponents.getConfiguration();
final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
if (!configuration.getBooleanProperty(METRICS_NOOP_PROPERTY, true)) {
final PrometheusMeterRegistry prometheusRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
final List<Tag> tagList = TagUtil.convertTags(ContextManagerImpl.getInstance().getGlobalContexts());
new ClassLoaderMetrics(tagList).bindTo(prometheusRegistry);
new JvmMemoryMetrics(tagList).bindTo(prometheusRegistry);
new JvmGcMetrics(tagList).bindTo(prometheusRegistry);
new ProcessorMetrics(tagList).bindTo(prometheusRegistry);
new JvmThreadMetrics(tagList).bindTo(prometheusRegistry);
servletContext.addFilter(METRICS_SERVLET_FILTER_NAME, new RequestMetricsFilter()).addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, ALL_URL_MAPPING);
servletContext.addListener(new MetricsHttpSessionListener());
servletContext.addServlet(METRICS_SERVLET_NAME, new MetricsServlet(prometheusRegistry)).addMapping(configuration.getProperty(METRICS_ENDPOINT_PROPERTY));
MetricsImpl.getInstance().init(prometheusRegistry);
}
}
use of com.canoo.platform.core.PlatformConfiguration in project dolphin-platform by canoo.
the class CorsModule method initialize.
@Override
public void initialize(final ServerCoreComponents coreComponents) throws ModuleInitializationException {
Assert.requireNonNull(coreComponents, "coreComponents");
final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
final PlatformConfiguration configuration = coreComponents.getConfiguration();
final List<String> endpointList = configuration.getListProperty(CORS_ENDPOINTS_URL_MAPPINGS, CORS_ENDPOINTS_URL_MAPPINGS_DEFAULT_VALUE);
final String[] endpoints = endpointList.toArray(new String[endpointList.size()]);
final CrossSiteOriginFilter filter = new CrossSiteOriginFilter(configuration);
final FilterRegistration.Dynamic createdFilter = servletContext.addFilter(CORS_FILTER, filter);
createdFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, endpoints);
}
use of com.canoo.platform.core.PlatformConfiguration in project dolphin-platform by canoo.
the class ClientSessionModule method initialize.
@Override
public void initialize(final ServerCoreComponents coreComponents) throws ModuleInitializationException {
Assert.requireNonNull(coreComponents, "coreComponents");
final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
final PlatformConfiguration configuration = coreComponents.getConfiguration();
final ClasspathScanner classpathScanner = coreComponents.getInstance(ClasspathScanner.class);
final ManagedBeanFactory beanFactory = coreComponents.getInstance(ManagedBeanFactory.class);
final ClientSessionLifecycleHandlerImpl lifecycleHandler = new ClientSessionLifecycleHandlerImpl();
coreComponents.provideInstance(ClientSessionLifecycleHandler.class, lifecycleHandler);
coreComponents.provideInstance(ClientSessionProvider.class, new ClientSessionProvider() {
@Override
public ClientSession getCurrentClientSession() {
return lifecycleHandler.getCurrentDolphinSession();
}
});
final ClientSessionManager clientSessionManager = new ClientSessionManager(configuration, lifecycleHandler);
final List<String> endpointList = configuration.getListProperty(ID_FILTER_URL_MAPPINGS, ID_FILTER_URL_MAPPINGS_DEFAULT_VALUE);
final String[] endpoints = endpointList.toArray(new String[endpointList.size()]);
final ClientSessionFilter filter = new ClientSessionFilter(clientSessionManager);
final FilterRegistration.Dynamic createdFilter = servletContext.addFilter(DOLPHIN_CLIENT_ID_FILTER_NAME, filter);
createdFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, endpoints);
final HttpSessionCleanerListener sessionCleaner = new HttpSessionCleanerListener(clientSessionManager);
servletContext.addListener(sessionCleaner);
final Set<Class<?>> listeners = classpathScanner.getTypesAnnotatedWith(ServerListener.class);
for (final Class<?> listenerClass : listeners) {
if (ClientSessionListener.class.isAssignableFrom(listenerClass)) {
final ClientSessionListener listener = (ClientSessionListener) beanFactory.createDependentInstance(listenerClass);
lifecycleHandler.addSessionDestroyedListener(s -> listener.sessionDestroyed(s));
lifecycleHandler.addSessionCreatedListener(s -> listener.sessionCreated(s));
}
}
final ClientSessionMutextHolder mutextHolder = new ClientSessionMutextHolder();
lifecycleHandler.addSessionDestroyedListener(s -> mutextHolder.sessionDestroyed(s));
lifecycleHandler.addSessionCreatedListener(s -> mutextHolder.sessionCreated(s));
}
use of com.canoo.platform.core.PlatformConfiguration in project dolphin-platform by canoo.
the class HttpTimeoutModule method initialize.
@Override
public void initialize(final ServerCoreComponents coreComponents) throws ModuleInitializationException {
Assert.requireNonNull(coreComponents, "coreComponents");
final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
final PlatformConfiguration configuration = coreComponents.getConfiguration();
HttpSessionTimeoutListener sessionCleaner = new HttpSessionTimeoutListener(configuration);
servletContext.addListener(sessionCleaner);
}
use of com.canoo.platform.core.PlatformConfiguration in project dolphin-platform by canoo.
the class ServerTimingModule method initialize.
@Override
public void initialize(final ServerCoreComponents coreComponents) throws ModuleInitializationException {
Assert.requireNonNull(coreComponents, "coreComponents");
final ServletContext servletContext = coreComponents.getInstance(ServletContext.class);
final PlatformConfiguration configuration = coreComponents.getConfiguration();
final Filter filter = new ServerTimingFilter(true);
final FilterRegistration.Dynamic createdFilter = servletContext.addFilter(FILTER_NAME, filter);
createdFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
}
Aggregations