[REEF-1529] Fixing reef-webserver for multi runtime
This addressed the issue by
* Making the http-server available to the actual rutnimes hosted by the RuntimesHost
* Fixing style issues and logging exception
JIRA: [REEF-1529](https://issues.apache.org/jira/browse/REEF-1529) close
Pull Request:
Closes #1100
diff --git a/lang/java/reef-runtime-multi/src/main/java/org/apache/reef/runtime/multi/driver/RuntimesHost.java b/lang/java/reef-runtime-multi/src/main/java/org/apache/reef/runtime/multi/driver/RuntimesHost.java
index bfbc037..62646d2 100644
--- a/lang/java/reef-runtime-multi/src/main/java/org/apache/reef/runtime/multi/driver/RuntimesHost.java
+++ b/lang/java/reef-runtime-multi/src/main/java/org/apache/reef/runtime/multi/driver/RuntimesHost.java
@@ -40,16 +40,20 @@
import org.apache.reef.wake.EventHandler;
import org.apache.reef.wake.time.runtime.event.RuntimeStart;
import org.apache.reef.wake.time.runtime.event.RuntimeStop;
+import org.apache.reef.webserver.HttpServer;
import javax.inject.Inject;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* Hosts the actual runtime implementations and delegates invocations to them.
*/
final class RuntimesHost {
+ private static final Logger LOG = Logger.getLogger(RuntimesHost.class.getName());
private final AvroMultiRuntimeDefinition runtimeDefinition;
private final Injector originalInjector;
private final String defaultRuntimeName;
@@ -127,12 +131,23 @@
runtimeInjector.bindVolatileParameter(
RuntimeParameters.RuntimeStatusHandler.class,
runtimeStatusEventHandler);
+ HttpServer httpServer = null;
+ try {
+ httpServer = this.originalInjector.getInstance(HttpServer.class);
+ } catch (final InjectionException e) {
+ LOG.log(Level.INFO, "Http Server is not configured for the runtime", e);
+ }
+
+ if (httpServer != null) {
+ runtimeInjector.bindVolatileInstance(HttpServer.class, httpServer);
+ LOG.log(Level.INFO, "Binding http server for the runtime implementation");
+ }
}
/**
* Retrieves requested runtime, if requested name is empty a default runtime will be used.
* @param requestedRuntimeName the requested runtime name
- * @return
+ * @return The runtime
*/
private Runtime getRuntime(final String requestedRuntimeName) {
String runtimeName = requestedRuntimeName;