diff --git a/docker/runner/config/application.tmpl b/docker/runner/config/application.tmpl index b31eb71f92592257a250e62af349883ac0017309..6e5eb6791010e1d62c8d64c56a8cfba113ee7257 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 95258a4b9c5e955142aa066b9255ea15d9650e0d..1181417d529c3c53a2928ec6e02798a9b53c73b8 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 f5bb666c7e3853ec240e78e6468e60bd1320ec94..597cca20da8dff7e28ab4e3d5d48f2f07846e8ad 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 3e5981047ebf7781dfba222c2b24e50079b25ac1..5e5a70cfa4c8866a928c7ec2ccb81951cecf7354 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 63a5905bfe60e969f1d983511d732ca08c68b73b..67320795a5d9790c04d9381f9171dbaca20e7187 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 24793c3d91855552e8d74a9ce1591f0b050d740a..097d9ef8ac744809faa1e3e88edfd4f1c99deeee 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 8c6522166b5435319970d7ffcdcab50d5104e7c7..b627b77013802c873a5b3a88872ed48ebe662337 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