diff --git a/core/pom.xml b/core/pom.xml
index b4ff9d432b..4edb59ad58 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -397,6 +397,12 @@
log4j-slf4j2-impl
provided
+
+ jakarta.annotation
+ jakarta.annotation-api
+ 2.1.1
+ compile
+
diff --git a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java
index ac88013f69..75c15473bb 100644
--- a/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java
+++ b/core/src/main/java/com/predic8/membrane/core/router/DefaultMainComponents.java
@@ -47,7 +47,10 @@ public class DefaultMainComponents implements MainComponents {
private final TimerManager timerManager = new TimerManager();
private final HttpClientFactory httpClientFactory = new HttpClientFactory(timerManager);
private final KubernetesClientFactory kubernetesClientFactory = new KubernetesClientFactory(httpClientFactory);
- protected ResolverMap resolverMap;
+ private final ResolverMap resolverMap;
+
+ private final FlowController flowController;
+ private final RuleManager ruleManager;
protected final Statistics statistics = new Statistics();
@@ -57,6 +60,9 @@ public DefaultMainComponents(DefaultRouter router) {
this.router = router;
resolverMap = new ResolverMap(httpClientFactory, kubernetesClientFactory);
resolverMap.addRuleResolver(router);
+ flowController = new FlowController(router);
+ ruleManager= new RuleManager();
+ ruleManager.setRouter(router);
}
public void init() {
@@ -67,19 +73,7 @@ public void init() {
}
registry.registerIfAbsent(HttpClientConfiguration.class, HttpClientConfiguration::new);
-
- registry.registerIfAbsent(ResolverMap.class, () -> {
- ResolverMap rs = new ResolverMap(httpClientFactory, kubernetesClientFactory);
- rs.addRuleResolver(router);
- return rs;
- });
-
registry.registerIfAbsent(ExchangeStore.class, LimitedMemoryExchangeStore::new);
- registry.registerIfAbsent(RuleManager.class, () -> {
- RuleManager rm = new RuleManager();
- rm.setRouter(router);
- return rm;
- });
registry.registerIfAbsent(DNSCache.class, DNSCache::new);
// Transport last
@@ -98,11 +92,7 @@ public void setRules(Collection proxies) {
@Override
public RuleManager getRuleManager() {
- return getRegistry().registerIfAbsent(RuleManager.class, () -> {
- RuleManager rm = new RuleManager();
- rm.setRouter(router);
- return rm;
- });
+ return ruleManager;
}
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
@@ -177,7 +167,7 @@ public HttpClientFactory getHttpClientFactory() {
}
public FlowController getFlowController() {
- return getRegistry().registerIfAbsent(FlowController.class, () -> new FlowController(router));
+ return flowController;
}
public void setRegistry(BeanRegistry registry) {
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 8d6057456e..4a174ff3b2 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -22,9 +22,14 @@
- Documentation
- See JmxExporter
- Synchronization of BeanRegistry
+- BalancerHealthMonitor:
+ - @PostConstruct instead of InitializingBean, DisposableBean
+- Scripting: expose beanRegistry
+
- IfInterceptor:
- Add "else"
+
# 7.1.0
- reverseDNS