From 2ace2260292830b517c6c160d0f8a58c570aaf24 Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Wed, 7 Dec 2016 16:49:29 +0100 Subject: [PATCH] akka connection works --- docker/runner/config/application.tmpl | 5 +- pom.xml | 23 ++++----- .../java/eu/hbp/mip/akka/ExperimentActor.java | 2 +- .../java/eu/hbp/mip/akka/SimpleActor.java | 2 +- .../mip/configuration/AkkaConfiguration.java | 14 ++++++ .../eu/hbp/mip/controllers/ExperimentApi.java | 48 +++---------------- src/main/resources/application.conf | 8 ++-- 7 files changed, 41 insertions(+), 61 deletions(-) diff --git a/docker/runner/config/application.tmpl b/docker/runner/config/application.tmpl index b31eb71f9..6e5eb6791 100644 --- a/docker/runner/config/application.tmpl +++ b/docker/runner/config/application.tmpl @@ -84,4 +84,7 @@ services: miningExaremeUrl: {{ default .Env.EXAREME_URL "http://hbps2.chuv.ch:9090" }}/mining/query akka: - woken-path: {{ default .Env.WOKEN_PATH "akka.tcp://woken@127.0.0.1:8088/user/entrypoint" }} + woken: + host: {{ default .Env.WOKEN_HOST "woken" }} + port: {{ default .Env.WOKEN_PORT "8088" }} + path: {{ default .Env.WOKEN_PATH "/user/entrypoint" }} diff --git a/pom.xml b/pom.xml index 95258a4b9..1181417d5 100644 --- a/pom.xml +++ b/pom.xml @@ -33,8 +33,7 @@ <bootstrap.version>3.3.7</bootstrap.version> <h2.version>1.4.192</h2.version> <postgresql.version>9.4-1206-jdbc42</postgresql.version> - <springfox-swagger2.version>2.5.0</springfox-swagger2.version> - <springfox-swagger-ui.version>2.5.0</springfox-swagger-ui.version> + <springfox-swagger.version>2.5.0</springfox-swagger.version> <gson.version>2.7</gson.version> <slugify.version>2.1.5</slugify.version> <maven-resources-plugin.version>3.0.1</maven-resources-plugin.version> @@ -44,15 +43,13 @@ <hibernate4-maven-plugin.version>1.1.0</hibernate4-maven-plugin.version> <flyway-core.version>4.0.3</flyway-core.version> <hibernate-jpa-2.1-api.version>1.0.0.Final</hibernate-jpa-2.1-api.version> - <hibernate-core.version>4.3.8.Final</hibernate-core.version> - <hibernate-entitymanager.version>4.3.8.Final</hibernate-entitymanager.version> + <hibernate.version>4.3.8.Final</hibernate.version> <spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version> <spring-boot-starter-actuator.version>1.4.0.RELEASE</spring-boot-starter-actuator.version> <aspectjweaver.version>1.8.9</aspectjweaver.version> - <woken-messages.version>d455fa0</woken-messages.version> + <woken-messages.version>76f49ed</woken-messages.version> <javax-inject.version>1</javax-inject.version> - <akka-actor.version>2.4.11</akka-actor.version> - <akka-remote.version>2.4.11</akka-remote.version> + <akka.version>2.3.14</akka.version> <spring-context.version>4.3.4.RELEASE</spring-context.version> <protobuf-java.version>3.1.0</protobuf-java.version> </properties> @@ -124,12 +121,12 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> - <version>${hibernate-core.version}</version> + <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> - <version>${hibernate-entitymanager.version}</version> + <version>${hibernate.version}</version> </dependency> <dependency> <groupId>com.h2database</groupId> @@ -144,12 +141,12 @@ <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> - <version>${springfox-swagger2.version}</version> + <version>${springfox-swagger.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> - <version>${springfox-swagger-ui.version}</version> + <version>${springfox-swagger.version}</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> @@ -193,12 +190,12 @@ <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor_2.11</artifactId> - <version>${akka-actor.version}</version> + <version>${akka.version}</version> </dependency> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-remote_2.11</artifactId> - <version>${akka-remote.version}</version> + <version>${akka.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> diff --git a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java index f5bb666c7..597cca20d 100644 --- a/src/main/java/eu/hbp/mip/akka/ExperimentActor.java +++ b/src/main/java/eu/hbp/mip/akka/ExperimentActor.java @@ -30,7 +30,7 @@ public class ExperimentActor extends UntypedActor { @Override - public void onReceive(Object message) throws Throwable { + public void onReceive(Object message) { UUID uuid = UUID.fromString(this.getSelf().path().name()); if (message instanceof QueryResult) { QueryResult queryResult = (QueryResult) message; diff --git a/src/main/java/eu/hbp/mip/akka/SimpleActor.java b/src/main/java/eu/hbp/mip/akka/SimpleActor.java index 3e5981047..5e5a70cfa 100644 --- a/src/main/java/eu/hbp/mip/akka/SimpleActor.java +++ b/src/main/java/eu/hbp/mip/akka/SimpleActor.java @@ -19,7 +19,7 @@ public class SimpleActor extends UntypedActor { LoggingAdapter log = Logging.getLogger(getContext().system(), this); @Override - public void onReceive(Object message) throws Throwable { + public void onReceive(Object message) { if (message instanceof Methods) { Methods methods = (Methods) message; log.info("received methods"); diff --git a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java index 63a5905bf..67320795a 100644 --- a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java @@ -2,6 +2,7 @@ package eu.hbp.mip.configuration; import akka.actor.ActorSystem; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -20,6 +21,15 @@ class AkkaConfiguration { @Autowired private ApplicationContext applicationContext; + @Value("#{'${akka.woken.host:woken}'}") + private String wokenHost; + + @Value("#{'${akka.woken.port:8088}'}") + private String wokenPort; + + @Value("#{'${akka.woken.path:/user/entrypoint}'}") + private String wokenPath; + @Bean public ActorSystem actorSystem() { ActorSystem system = ActorSystem.create("AkkaActorSystem"); @@ -27,4 +37,8 @@ class AkkaConfiguration { return system; } + @Bean String wokenRefPath() { + return "akka.tcp://woken@"+wokenHost+":"+wokenPort+wokenPath; + } + } \ No newline at end of file diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java index 24793c3d9..097d9ef8a 100644 --- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java @@ -19,8 +19,6 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.Cacheable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -55,15 +53,6 @@ public class ExperimentApi { private static final String EXAREME_LR_ALGO = "WP_LINEAR_REGRESSION"; - @Value("#{'${services.woken.experimentUrl:http://dockerhost:8087/experiment}'}") - private String experimentUrl; - - @Value("#{'${services.woken.listMethodsUrl:http://dockerhost:8087/list-methods}'}") - private String listMethodsUrl; - - @Value("#{'${services.exareme.miningExaremeUrl:http://hbps2.chuv.ch:9090/mining/query}'}") - private String miningExaremeQueryUrl; - @Autowired private SecurityConfiguration securityConfiguration; @@ -76,8 +65,8 @@ public class ExperimentApi { @Autowired public ActorSystem actorSystem; - @Value("#{'${akka.woken-path:akka.tcp://woken@127.0.0.1:8088/user/entrypoint}'}") - private String wokenPath; + @Autowired + public String wokenRefPath; @ApiOperation(value = "Send a request to the workflow to run an experiment", response = Experiment.class) @@ -205,13 +194,13 @@ public class ExperimentApi { } @ApiOperation(value = "List available methods and validations", response = String.class) - @Cacheable("methods") + // @Cacheable("methods") @RequestMapping(path = "/methods", method = RequestMethod.GET) public ResponseEntity listAvailableMethodsAndValidations() throws IOException { LOGGER.info("List available methods and validations"); - LOGGER.info("Akka is trying to reach remote " + wokenPath); - ActorSelection wokenActor = actorSystem.actorSelection(wokenPath); + LOGGER.info("Akka is trying to reach remote " + wokenRefPath); + ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath); ActorRef methodsManager = actorSystem.actorOf(SpringExtension.SPRING_EXTENSION_PROVIDER.get(actorSystem) .props("simpleActor")); wokenActor.tell(new MethodsQuery(), methodsManager); @@ -280,8 +269,8 @@ public class ExperimentApi { // this runs in the background. For future optimization: use a thread pool final eu.hbp.mip.messages.external.ExperimentQuery experimentQuery = experiment.computeQuery(); - LOGGER.info("Akka is trying to reach remote " + wokenPath); - ActorSelection wokenActor = actorSystem.actorSelection(wokenPath); + LOGGER.info("Akka is trying to reach remote " + wokenRefPath); + ActorSelection wokenActor = actorSystem.actorSelection(wokenRefPath); ActorRef experimentsManager = actorSystem.actorOf(SpringExtension.SPRING_EXTENSION_PROVIDER.get(actorSystem) .props("experimentActor"), experiment.getUuid().toString()); wokenActor.tell(experimentQuery, experimentsManager); @@ -289,29 +278,6 @@ public class ExperimentApi { private void sendExaremeExperiment(Experiment experiment) { // TODO: integrate Exareme - // this runs in the background. For future optimization: use a thread pool -// new Thread() { -// @Override -// public void run() { -// String query = experiment.computeExaremeQuery(); -// String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO; -// -// // Results are stored in the experiment object -// try { -// executeExperiment(url, query, experiment); -// } catch (IOException e) { -// LOGGER.trace(e); -// LOGGER.warn("Exareme experiment failed to run properly !"); -// setExperimentError(e, experiment); -// } -// -// if(!JSONUtil.isJSONValid(experiment.getResult())) -// { -// experiment.setResult("Unsupported variables !"); -// } -// finishExpermient(experiment); -// } -// }.start(); } private void finishExpermient(Experiment experiment) diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 8c6522166..b627b7701 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -16,11 +16,11 @@ akka { log-received-messages = on enabled-transports = ["akka.remote.netty.tcp"] netty.tcp { - hostname = 127.0.0.1 # external (logical) hostname - port = 8089 # external (logical) port + hostname = 127.0.0.1 # external (logical) hostname + port = 8089 # external (logical) port - bind-hostname = 127.0.0.1 # internal (bind) hostname - bind-port = 8088 # internal (bind) port + bind-hostname = 0.0.0.0 # internal (bind) hostname + bind-port = 8089 # internal (bind) port } } } \ No newline at end of file -- GitLab