use of io.undertow.server.handlers.proxy.ProxyHandler in project wildfly-swarm by wildfly-swarm.
the class TopologyProxyService method updateProxyHosts.
private void updateProxyHosts(String serviceName, List<Topology.Entry> entries) {
HttpHandler proxyHandler = proxyHandlerMap.get(serviceName).getOptionalValue();
if (proxyHandler == null) {
// Service has been shutdown
proxyHandlerMap.remove(serviceName);
return;
}
LoadBalancingProxyClient proxyClient = null;
// which then wraps the next handler in the chain
if (proxyHandler instanceof GlobalRequestControllerHandler) {
// next in the chain of handlers
ProxyHandler proxy = (ProxyHandler) ((GlobalRequestControllerHandler) proxyHandler).getNext();
proxyClient = (LoadBalancingProxyClient) proxy.getProxyClient();
} else {
proxyClient = (LoadBalancingProxyClient) ((ProxyHandler) proxyHandler).getProxyClient();
}
List<Topology.Entry> oldEntries = proxyEntries.get(serviceName);
List<Topology.Entry> entriesToRemove = new ArrayList<>();
List<Topology.Entry> entriesToAdd = new ArrayList<>();
if (oldEntries == null) {
entriesToAdd.addAll(entries);
} else {
for (Topology.Entry oldEntry : oldEntries) {
if (!entries.contains(oldEntry)) {
entriesToRemove.add(oldEntry);
}
}
for (Topology.Entry entry : entries) {
if (!oldEntries.contains(entry)) {
entriesToAdd.add(entry);
}
}
}
for (Topology.Entry entry : entriesToRemove) {
try {
proxyClient.removeHost(entryToURI(entry));
} catch (URISyntaxException ex) {
log.log(Level.WARNING, "Error converting topology entry to URI", ex);
}
}
for (Topology.Entry entry : entriesToAdd) {
try {
proxyClient.addHost(entryToURI(entry));
} catch (URISyntaxException ex) {
log.log(Level.WARNING, "Error converting topology entry to URI", ex);
}
}
proxyEntries.put(serviceName, entries);
}
use of io.undertow.server.handlers.proxy.ProxyHandler in project keycloak by keycloak.
the class AbstractAdapterClusteredTest method prepareReverseProxy.
@Before
public void prepareReverseProxy() throws Exception {
loadBalancerToNodes = new LoadBalancingProxyClient().addHost(NODE_1_URI, NODE_1_NAME).setConnectionsPerThread(10);
// 1 hour for proxy request timeout, so we can debug the backend keycloak servers
int maxTime = 3600000;
reverseProxyToNodes = Undertow.builder().addHttpListener(HTTP_PORT_NODE_REVPROXY, ServerURLs.APP_SERVER_HOST).setIoThreads(2).setHandler(new ProxyHandler(loadBalancerToNodes, maxTime, ResponseCodeHandler.HANDLE_404)).build();
reverseProxyToNodes.start();
}
Aggregations