Search in sources :

Example 1 with HotRodServerRouteDestination

use of org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination in project infinispan by infinispan.

the class Server method run.

public synchronized CompletableFuture<ExitStatus> run() {
    CompletableFuture<ExitStatus> r = exitHandler.getExitFuture();
    if (status == ComponentStatus.RUNNING) {
        return r;
    }
    protocolServers = new ConcurrentHashMap<>(4);
    try {
        // Load any server extensions
        extensions = new Extensions();
        extensions.load(classLoader);
        // Create the cache manager
        cacheManager = new DefaultCacheManager(configurationBuilderHolder, false);
        // Retrieve the server configuration
        serverConfiguration = SecurityActions.getCacheManagerConfiguration(cacheManager).module(ServerConfiguration.class);
        serverConfiguration.setServer(this);
        // Initialize the data sources
        dataSources = new HashMap<>();
        InitialContext initialContext = new InitialContext();
        for (DataSourceConfiguration dataSourceConfiguration : serverConfiguration.dataSources().values()) {
            DataSource dataSource = DataSourceFactory.create(dataSourceConfiguration);
            dataSources.put(dataSourceConfiguration.name(), dataSource);
            initialContext.bind(dataSourceConfiguration.jndiName(), dataSource);
        }
        // Start the cache manager
        SecurityActions.startCacheManager(cacheManager);
        BasicComponentRegistry bcr = SecurityActions.getGlobalComponentRegistry(cacheManager).getComponent(BasicComponentRegistry.class.getName());
        blockingManager = bcr.getComponent(BlockingManager.class).running();
        serverStateManager = new ServerStateManagerImpl(this, cacheManager, bcr.getComponent(GlobalConfigurationManager.class).running());
        bcr.registerComponent(ServerStateManager.class, serverStateManager, false);
        ScheduledExecutorService timeoutExecutor = bcr.getComponent(KnownComponentNames.TIMEOUT_SCHEDULE_EXECUTOR, ScheduledExecutorService.class).running();
        // BlockingManager of single container used for writing the global manifest, but this will need to change
        // when multiple containers are supported by the server. Similarly, the default cache manager is used to create
        // the clustered locks.
        Path dataRoot = serverRoot.toPath().resolve(properties.getProperty(INFINISPAN_SERVER_DATA_PATH));
        backupManager = new BackupManagerImpl(blockingManager, cacheManager, dataRoot);
        backupManager.init();
        // Register the task manager
        taskManager = bcr.getComponent(TaskManager.class).running();
        taskManager.registerTaskEngine(extensions.getServerTaskEngine(cacheManager));
        // Initialize the OpenTracing integration
        RequestTracer.start();
        for (EndpointConfiguration endpoint : serverConfiguration.endpoints().endpoints()) {
            // Start the protocol servers
            SinglePortRouteSource routeSource = new SinglePortRouteSource();
            Set<Route<? extends RouteSource, ? extends RouteDestination>> routes = ConcurrentHashMap.newKeySet();
            endpoint.connectors().parallelStream().forEach(configuration -> {
                try {
                    Class<? extends ProtocolServer> protocolServerClass = configuration.getClass().getAnnotation(ConfigurationFor.class).value().asSubclass(ProtocolServer.class);
                    ProtocolServer protocolServer = Util.getInstance(protocolServerClass);
                    protocolServer.setServerManagement(this, endpoint.admin());
                    if (configuration instanceof HotRodServerConfiguration) {
                        ElytronSASLAuthenticationProvider.init((HotRodServerConfiguration) configuration, serverConfiguration, timeoutExecutor);
                    } else if (configuration instanceof RestServerConfiguration) {
                        ElytronHTTPAuthenticator.init((RestServerConfiguration) configuration, serverConfiguration);
                    } else if (configuration instanceof RespServerConfiguration) {
                        ElytronRESPAuthenticator.init((RespServerConfiguration) configuration, serverConfiguration, blockingManager);
                    }
                    protocolServers.put(protocolServer.getName() + "-" + configuration.name(), protocolServer);
                    SecurityActions.startProtocolServer(protocolServer, configuration, cacheManager);
                    ProtocolServerConfiguration protocolConfig = protocolServer.getConfiguration();
                    if (protocolConfig.startTransport()) {
                        log.protocolStarted(protocolServer.getName(), configuration.socketBinding(), protocolConfig.host(), protocolConfig.port());
                    } else {
                        if (protocolServer instanceof HotRodServer) {
                            routes.add(new Route<>(routeSource, new HotRodServerRouteDestination(protocolServer.getName(), (HotRodServer) protocolServer)));
                            extensions.apply((HotRodServer) protocolServer);
                        } else if (protocolServer instanceof RestServer) {
                            routes.add(new Route<>(routeSource, new RestServerRouteDestination(protocolServer.getName(), (RestServer) protocolServer)));
                        } else if (protocolServer instanceof RespServer) {
                            routes.add(new Route<>(routeSource, new RespServerRouteDestination(protocolServer.getName(), (RespServer) protocolServer)));
                        }
                        log.protocolStarted(protocolServer.getName());
                    }
                } catch (Throwable t) {
                    throw t instanceof RuntimeException ? (RuntimeException) t : new RuntimeException(t);
                }
            });
            // Next we start the single-port endpoints
            SinglePortRouterConfiguration singlePortRouter = endpoint.singlePortRouter();
            SinglePortEndpointRouter endpointServer = new SinglePortEndpointRouter(singlePortRouter);
            endpointServer.start(new RoutingTable(routes), cacheManager);
            protocolServers.put("endpoint-" + endpoint.socketBinding(), endpointServer);
            log.protocolStarted(endpointServer.getName(), singlePortRouter.socketBinding(), singlePortRouter.host(), singlePortRouter.port());
            log.endpointUrl(Util.requireNonNullElse(cacheManager.getAddress(), "local"), singlePortRouter.ssl().enabled() ? "https" : "http", singlePortRouter.host(), singlePortRouter.port());
        }
        serverStateManager.start();
        // Change status
        this.status = ComponentStatus.RUNNING;
        log.serverStarted(Version.getBrandName(), Version.getBrandVersion(), timeService.timeDuration(startTime, TimeUnit.MILLISECONDS));
    } catch (Exception e) {
        r.completeExceptionally(e);
    }
    r = r.handle((status, t) -> {
        if (t != null) {
            Server.log.serverFailedToStart(Version.getBrandName(), t);
        }
        localShutdown(status);
        return null;
    });
    return r;
}
Also used : SSLContext(javax.net.ssl.SSLContext) ConfigurationBuilder(org.infinispan.configuration.cache.ConfigurationBuilder) LogFactory(org.infinispan.util.logging.LogFactory) DataSourceFactory(org.infinispan.server.datasource.DataSourceFactory) WildFlyElytronHttpBasicProvider(org.wildfly.security.http.basic.WildFlyElytronHttpBasicProvider) KnownComponentNames(org.infinispan.factories.KnownComponentNames) GlobalConfigurationManager(org.infinispan.globalstate.GlobalConfigurationManager) Log(org.infinispan.server.logging.Log) WildFlyElytronHttpSpnegoProvider(org.wildfly.security.http.spnego.WildFlyElytronHttpSpnegoProvider) WildFlyElytronHttpClientCertProvider(org.wildfly.security.http.cert.WildFlyElytronHttpClientCertProvider) BasicComponentRegistry(org.infinispan.factories.impl.BasicComponentRegistry) DefaultCacheManager(org.infinispan.manager.DefaultCacheManager) ConfigurationBuilderHolder(org.infinispan.configuration.parsing.ConfigurationBuilderHolder) Map(java.util.Map) TaskManager(org.infinispan.tasks.TaskManager) DataSourceConfiguration(org.infinispan.server.configuration.DataSourceConfiguration) ElytronSASLAuthenticationProvider(org.infinispan.server.security.ElytronSASLAuthenticationProvider) ServerStateManagerImpl(org.infinispan.server.state.ServerStateManagerImpl) Path(java.nio.file.Path) NamingManager(javax.naming.spi.NamingManager) HotRodServer(org.infinispan.server.hotrod.HotRodServer) WildFlyElytronSaslExternalProvider(org.wildfly.security.sasl.external.WildFlyElytronSaslExternalProvider) WildFlyElytronSaslScramProvider(org.wildfly.security.sasl.scram.WildFlyElytronSaslScramProvider) InitialContext(javax.naming.InitialContext) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) JGroupsTransport(org.infinispan.remoting.transport.jgroups.JGroupsTransport) NamedSocketFactory(org.infinispan.remoting.transport.jgroups.NamedSocketFactory) AuthorizationPermission(org.infinispan.security.AuthorizationPermission) Set(java.util.Set) EndpointConfiguration(org.infinispan.server.configuration.endpoint.EndpointConfiguration) Executors(java.util.concurrent.Executors) ComponentStatus(org.infinispan.lifecycle.ComponentStatus) RouteDestination(org.infinispan.server.router.routes.RouteDestination) CompletionStage(java.util.concurrent.CompletionStage) ConfigurationFor(org.infinispan.commons.configuration.ConfigurationFor) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) SerializeWith(org.infinispan.commons.marshall.SerializeWith) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) RouteSource(org.infinispan.server.router.routes.RouteSource) StringBuilderWriter(org.infinispan.commons.io.StringBuilderWriter) SerializableFunction(org.infinispan.util.function.SerializableFunction) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) EndpointConfigurationBuilder(org.infinispan.server.configuration.endpoint.EndpointConfigurationBuilder) Supplier(java.util.function.Supplier) EmbeddedCacheManager(org.infinispan.manager.EmbeddedCacheManager) ClusterExecutor(org.infinispan.manager.ClusterExecutor) WildFlyElytronSaslLocalUserProvider(org.wildfly.security.sasl.localuser.WildFlyElytronSaslLocalUserProvider) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ProtocolServerConfigurationBuilder(org.infinispan.server.core.configuration.ProtocolServerConfigurationBuilder) Address(org.infinispan.remoting.transport.Address) Route(org.infinispan.server.router.routes.Route) PrivilegedActionException(java.security.PrivilegedActionException) Properties(java.util.Properties) GlobalConfigurationBuilder(org.infinispan.configuration.global.GlobalConfigurationBuilder) IOException(java.io.IOException) Authenticator(org.infinispan.rest.authentication.Authenticator) ServerManagement(org.infinispan.server.core.ServerManagement) InputStreamReader(java.io.InputStreamReader) TransportSecurityConfiguration(org.infinispan.server.configuration.security.TransportSecurityConfiguration) File(java.io.File) BackupManager(org.infinispan.server.core.BackupManager) WildFlyElytronSaslGs2Provider(org.wildfly.security.sasl.gs2.WildFlyElytronSaslGs2Provider) ServerConfiguration(org.infinispan.server.configuration.ServerConfiguration) Paths(java.nio.file.Paths) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) BufferedReader(java.io.BufferedReader) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) DefaultTimeService(org.infinispan.commons.time.DefaultTimeService) ConfigurationWriter(org.infinispan.commons.configuration.io.ConfigurationWriter) URL(java.net.URL) ObjectOutput(java.io.ObjectOutput) ServerAdminOperationsHandler(org.infinispan.server.tasks.admin.ServerAdminOperationsHandler) LoggingAuditLogger(org.infinispan.security.audit.LoggingAuditLogger) ProtocolServer(org.infinispan.server.core.ProtocolServer) CompletableFutures(org.infinispan.util.concurrent.CompletableFutures) ProcessInfo(org.infinispan.commons.jdkspecific.ProcessInfo) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) WildFlyElytronHttpBearerProvider(org.wildfly.security.http.bearer.WildFlyElytronHttpBearerProvider) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination) Collectors(java.util.stream.Collectors) List(java.util.List) OS(org.infinispan.commons.util.OS) ObjectInput(java.io.ObjectInput) TokenRealmConfiguration(org.infinispan.server.configuration.security.TokenRealmConfiguration) SinglePortRouterConfiguration(org.infinispan.server.router.configuration.SinglePortRouterConfiguration) RealmConfiguration(org.infinispan.server.configuration.security.RealmConfiguration) WildFlyElytronHttpDigestProvider(org.wildfly.security.http.digest.WildFlyElytronHttpDigestProvider) RestServer(org.infinispan.rest.RestServer) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) WildFlyElytronSaslOAuth2Provider(org.wildfly.security.sasl.oauth2.WildFlyElytronSaslOAuth2Provider) RequestTracer(org.infinispan.server.core.RequestTracer) WildFlyElytronSaslGssapiProvider(org.wildfly.security.sasl.gssapi.WildFlyElytronSaslGssapiProvider) ServerStateManager(org.infinispan.server.core.ServerStateManager) Version(org.infinispan.commons.util.Version) BackupManagerImpl(org.infinispan.server.core.backup.BackupManagerImpl) WildFlyElytronSaslDigestProvider(org.wildfly.security.sasl.digest.WildFlyElytronSaslDigestProvider) DataSource(javax.sql.DataSource) ServerConfigurationSerializer(org.infinispan.server.configuration.ServerConfigurationSerializer) ElytronRESPAuthenticator(org.infinispan.server.security.ElytronRESPAuthenticator) Util(org.infinispan.commons.util.Util) RoutingTable(org.infinispan.server.router.RoutingTable) ServerInitialContextFactoryBuilder(org.infinispan.server.context.ServerInitialContextFactoryBuilder) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) RespServer(org.infinispan.server.resp.RespServer) Security(org.infinispan.security.Security) TimeUnit(java.util.concurrent.TimeUnit) WildFlyElytronSaslPlainProvider(org.wildfly.security.sasl.plain.WildFlyElytronSaslPlainProvider) ServerConfigurationBuilder(org.infinispan.server.configuration.ServerConfigurationBuilder) Configuration(org.infinispan.configuration.cache.Configuration) ParserRegistry(org.infinispan.configuration.parsing.ParserRegistry) ElytronHTTPAuthenticator(org.infinispan.server.security.ElytronHTTPAuthenticator) SinglePortEndpointRouter(org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter) BlockingManager(org.infinispan.util.concurrent.BlockingManager) Collections(java.util.Collections) LogManager(org.apache.logging.log4j.LogManager) TimeService(org.infinispan.commons.time.TimeService) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) ServerConfiguration(org.infinispan.server.configuration.ServerConfiguration) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) HotRodServerConfiguration(org.infinispan.server.hotrod.configuration.HotRodServerConfiguration) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) DataSourceConfiguration(org.infinispan.server.configuration.DataSourceConfiguration) BasicComponentRegistry(org.infinispan.factories.impl.BasicComponentRegistry) ProtocolServer(org.infinispan.server.core.ProtocolServer) GlobalConfigurationManager(org.infinispan.globalstate.GlobalConfigurationManager) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) RouteSource(org.infinispan.server.router.routes.RouteSource) BackupManagerImpl(org.infinispan.server.core.backup.BackupManagerImpl) RestServerConfiguration(org.infinispan.rest.configuration.RestServerConfiguration) SinglePortEndpointRouter(org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter) RespServerConfiguration(org.infinispan.server.resp.configuration.RespServerConfiguration) RespServer(org.infinispan.server.resp.RespServer) Route(org.infinispan.server.router.routes.Route) Path(java.nio.file.Path) DefaultCacheManager(org.infinispan.manager.DefaultCacheManager) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) ServerStateManagerImpl(org.infinispan.server.state.ServerStateManagerImpl) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) InitialContext(javax.naming.InitialContext) PrivilegedActionException(java.security.PrivilegedActionException) IOException(java.io.IOException) CacheConfigurationException(org.infinispan.commons.CacheConfigurationException) DataSource(javax.sql.DataSource) SinglePortRouterConfiguration(org.infinispan.server.router.configuration.SinglePortRouterConfiguration) RestServer(org.infinispan.rest.RestServer) ProtocolServerConfiguration(org.infinispan.server.core.configuration.ProtocolServerConfiguration) RoutingTable(org.infinispan.server.router.RoutingTable) HotRodServer(org.infinispan.server.hotrod.HotRodServer) EndpointConfiguration(org.infinispan.server.configuration.endpoint.EndpointConfiguration) RouteDestination(org.infinispan.server.router.routes.RouteDestination) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) RespServerRouteDestination(org.infinispan.server.router.routes.resp.RespServerRouteDestination)

Example 2 with HotRodServerRouteDestination

use of org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination in project infinispan by infinispan.

the class SniRouteHandler method decode.

@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
    super.decode(ctx, in, out);
    if (isHandShaked()) {
        // At this point Netty has replaced SNIHandler (formally this) with SSLHandler in the pipeline.
        // Now we need to add other handlers at the tail of the queue
        RouterLogger.SERVER.debugf("Handshaked with hostname %s", hostname());
        Optional<Route<SniRouteSource, HotRodServerRouteDestination>> route = routingTable.streamRoutes(SniRouteSource.class, HotRodServerRouteDestination.class).filter(r -> r.getRouteSource().getSniHostName().equals(this.hostname())).findAny();
        HotRodServerRouteDestination routeDestination = route.orElseThrow(() -> RouterLogger.SERVER.noRouteFound()).getRouteDestination();
        ChannelInitializer<Channel> channelInitializer = routeDestination.getProtocolServer().getInitializer();
        ctx.pipeline().addLast(channelInitializer);
        RouterLogger.SERVER.debug("Replaced with route destination's handlers");
    }
}
Also used : RouterLogger(org.infinispan.server.router.logging.RouterLogger) SniHandler(io.netty.handler.ssl.SniHandler) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) ChannelInitializer(io.netty.channel.ChannelInitializer) SslContext(io.netty.handler.ssl.SslContext) SniRouteSource(org.infinispan.server.router.routes.SniRouteSource) RoutingTable(org.infinispan.server.router.RoutingTable) Channel(io.netty.channel.Channel) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) List(java.util.List) ByteBuf(io.netty.buffer.ByteBuf) DomainNameMapping(io.netty.util.DomainNameMapping) Optional(java.util.Optional) Route(org.infinispan.server.router.routes.Route) Channel(io.netty.channel.Channel) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) Route(org.infinispan.server.router.routes.Route)

Example 3 with HotRodServerRouteDestination

use of org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination in project infinispan by infinispan.

the class ProtocolServerEndpointRouterTest method shouldRouteToProperHotRodServerBasedOnSniHostName.

/**
 * In this scenario we create 2 HotRod servers, each one with different credentials and SNI name. We also create a
 * new client for each server. The clients use proper TrustStores as well as SNI names.
 * <p>
 * The router should match properly SNI based routes and connect clients to proper server instances.
 */
@Test
public void shouldRouteToProperHotRodServerBasedOnSniHostName() {
    // given
    hotrodServer1 = HotRodTestingUtil.startHotRodServerWithoutTransport("default");
    hotrodServer2 = HotRodTestingUtil.startHotRodServerWithoutTransport("default");
    HotRodServerRouteDestination hotrod1Destination = new HotRodServerRouteDestination("HotRod1", hotrodServer1);
    SniNettyRouteSource hotrod1Source = new SniNettyRouteSource("hotrod1", KEYSTORE_LOCATION_FOR_HOTROD_1, "secret".toCharArray());
    Route<SniNettyRouteSource, HotRodServerRouteDestination> routeToHotrod1 = new Route<>(hotrod1Source, hotrod1Destination);
    HotRodServerRouteDestination hotrod2Destination = new HotRodServerRouteDestination("HotRod2", hotrodServer2);
    SniNettyRouteSource hotrod2Source = new SniNettyRouteSource("hotrod2", KEYSTORE_LOCATION_FOR_HOTROD_2, "secret".toCharArray());
    Route<SniNettyRouteSource, HotRodServerRouteDestination> routeToHotrod2 = new Route<>(hotrod2Source, hotrod2Destination);
    RouterConfigurationBuilder routerConfigurationBuilder = new RouterConfigurationBuilder();
    routerConfigurationBuilder.hotrod().port(0).ip(InetAddress.getLoopbackAddress()).routing().add(routeToHotrod1).add(routeToHotrod2);
    router = new Router(routerConfigurationBuilder.build());
    router.start();
    InetAddress routerIp = router.getRouter(EndpointRouter.Protocol.HOT_ROD).get().getIp();
    int routerPort = router.getRouter(EndpointRouter.Protocol.HOT_ROD).get().getPort();
    // when
    hotrod1Client = HotRodClientTestingUtil.createWithSni(routerIp, routerPort, "hotrod1", TRUSTSTORE_LOCATION_FOR_HOTROD_1, "secret".toCharArray());
    hotrod2Client = HotRodClientTestingUtil.createWithSni(routerIp, routerPort, "hotrod2", TRUSTSTORE_LOCATION_FOR_HOTROD_2, "secret".toCharArray());
    hotrod1Client.getCache("default").put("test", "hotrod1");
    hotrod2Client.getCache("default").put("test", "hotrod2");
    // then
    Cache<String, String> hotrod1Cache = hotrodServer1.getCacheManager().getCache("default");
    Cache<String, String> hotrod2Cache = hotrodServer2.getCacheManager().getCache("default");
    assertThat(hotrod1Cache.size()).isEqualTo(1);
    assertThat(hotrod2Cache.size()).isEqualTo(1);
    assertThat(hotrod1Cache.get("test")).isEqualTo("hotrod1");
    assertThat(hotrod2Cache.get("test")).isEqualTo("hotrod2");
}
Also used : SniNettyRouteSource(org.infinispan.server.router.routes.hotrod.SniNettyRouteSource) Router(org.infinispan.server.router.Router) EndpointRouter(org.infinispan.server.router.router.EndpointRouter) RouterConfigurationBuilder(org.infinispan.server.router.configuration.builder.RouterConfigurationBuilder) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) InetAddress(java.net.InetAddress) Route(org.infinispan.server.router.routes.Route) Test(org.junit.Test)

Example 4 with HotRodServerRouteDestination

use of org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination in project infinispan by infinispan.

the class TwoServersWithSslSni method initRoutes.

@Override
public Optional<Set<Route<? extends RouteSource, ? extends RouteDestination>>> initRoutes(List<HotRodServer> servers) {
    Set<Route<? extends RouteSource, ? extends RouteDestination>> routes = new HashSet<>();
    HotRodServerRouteDestination hotrod1Destination = new HotRodServerRouteDestination("hotrod1", servers.get(0));
    SniNettyRouteSource hotrod1Source = new SniNettyRouteSource("hotrod1", KEYSTORE_LOCATION_FOR_HOTROD_1, KEYSTORE_PASSWORD);
    routes.add(new Route<>(hotrod1Source, hotrod1Destination));
    HotRodServerRouteDestination hotrod2Destination = new HotRodServerRouteDestination("hotrod2", servers.get(1));
    SniNettyRouteSource hotrod2Source = new SniNettyRouteSource("hotrod2", KEYSTORE_LOCATION_FOR_HOTROD_2, KEYSTORE_PASSWORD);
    routes.add(new Route<>(hotrod2Source, hotrod2Destination));
    return Optional.of(routes);
}
Also used : SniNettyRouteSource(org.infinispan.server.router.routes.hotrod.SniNettyRouteSource) RouteSource(org.infinispan.server.router.routes.RouteSource) SniNettyRouteSource(org.infinispan.server.router.routes.hotrod.SniNettyRouteSource) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) RouteDestination(org.infinispan.server.router.routes.RouteDestination) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) Route(org.infinispan.server.router.routes.Route) HashSet(java.util.HashSet)

Example 5 with HotRodServerRouteDestination

use of org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination in project keycloak by keycloak.

the class HotRodUtils method createHotRodMapStoreServer.

/**
 * Not suitable for a production usage. Only for development and test purposes.
 * Also do not use in clustered environment.
 * @param hotRodServer HotRodServer
 * @param hotRodCacheManager DefaultCacheManager
 * @param embeddedPort int
 */
public static void createHotRodMapStoreServer(HotRodServer hotRodServer, DefaultCacheManager hotRodCacheManager, int embeddedPort) {
    HotRodServerConfigurationBuilder hotRodServerConfigurationBuilder = new HotRodServerConfigurationBuilder();
    hotRodServerConfigurationBuilder.startTransport(false);
    hotRodServerConfigurationBuilder.port(embeddedPort);
    hotRodServer.start(hotRodServerConfigurationBuilder.build(), hotRodCacheManager);
    RestServerConfigurationBuilder restServerConfigurationBuilder = new RestServerConfigurationBuilder();
    restServerConfigurationBuilder.startTransport(false);
    restServerConfigurationBuilder.port(embeddedPort);
    RestServer restServer = new RestServer();
    restServer.start(restServerConfigurationBuilder.build(), hotRodCacheManager);
    SinglePortRouteSource routeSource = new SinglePortRouteSource();
    Set<Route<? extends RouteSource, ? extends RouteDestination>> routes = new HashSet<>();
    routes.add(new Route<>(routeSource, new HotRodServerRouteDestination("hotrod", hotRodServer)));
    routes.add(new Route<>(routeSource, new RestServerRouteDestination("rest", restServer)));
    SinglePortRouterConfiguration singlePortRouter = new SinglePortServerConfigurationBuilder().port(embeddedPort).build();
    SinglePortEndpointRouter endpointServer = new SinglePortEndpointRouter(singlePortRouter);
    endpointServer.start(new RoutingTable(routes));
}
Also used : SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) SinglePortRouterConfiguration(org.infinispan.server.router.configuration.SinglePortRouterConfiguration) RestServer(org.infinispan.rest.RestServer) RestServerConfigurationBuilder(org.infinispan.rest.configuration.RestServerConfigurationBuilder) RoutingTable(org.infinispan.server.router.RoutingTable) RouteSource(org.infinispan.server.router.routes.RouteSource) SinglePortRouteSource(org.infinispan.server.router.routes.singleport.SinglePortRouteSource) SinglePortEndpointRouter(org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter) HotRodServerConfigurationBuilder(org.infinispan.server.hotrod.configuration.HotRodServerConfigurationBuilder) HotRodServerRouteDestination(org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination) RouteDestination(org.infinispan.server.router.routes.RouteDestination) RestServerRouteDestination(org.infinispan.server.router.routes.rest.RestServerRouteDestination) SinglePortServerConfigurationBuilder(org.infinispan.server.configuration.endpoint.SinglePortServerConfigurationBuilder) Route(org.infinispan.server.router.routes.Route) HashSet(java.util.HashSet)

Aggregations

Route (org.infinispan.server.router.routes.Route)7 HotRodServerRouteDestination (org.infinispan.server.router.routes.hotrod.HotRodServerRouteDestination)7 RestServerRouteDestination (org.infinispan.server.router.routes.rest.RestServerRouteDestination)4 SinglePortRouteSource (org.infinispan.server.router.routes.singleport.SinglePortRouteSource)4 RestServer (org.infinispan.rest.RestServer)3 RoutingTable (org.infinispan.server.router.RoutingTable)3 RouteDestination (org.infinispan.server.router.routes.RouteDestination)3 RouteSource (org.infinispan.server.router.routes.RouteSource)3 HashSet (java.util.HashSet)2 List (java.util.List)2 RemoteCacheManager (org.infinispan.client.hotrod.RemoteCacheManager)2 ConfigurationBuilder (org.infinispan.client.hotrod.configuration.ConfigurationBuilder)2 RestClientConfigurationBuilder (org.infinispan.client.rest.configuration.RestClientConfigurationBuilder)2 RestServerConfigurationBuilder (org.infinispan.rest.configuration.RestServerConfigurationBuilder)2 HotRodServerConfigurationBuilder (org.infinispan.server.hotrod.configuration.HotRodServerConfigurationBuilder)2 Router (org.infinispan.server.router.Router)2 SinglePortRouterConfiguration (org.infinispan.server.router.configuration.SinglePortRouterConfiguration)2 RouterConfigurationBuilder (org.infinispan.server.router.configuration.builder.RouterConfigurationBuilder)2 EndpointRouter (org.infinispan.server.router.router.EndpointRouter)2 SinglePortEndpointRouter (org.infinispan.server.router.router.impl.singleport.SinglePortEndpointRouter)2