diff --git a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
index 8c649c4fb47be4f7824f26b93758d4a7d58a1028..0c4900df464e839ab1ea3108cc82eecfc697549e 100644
--- a/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
+++ b/ragconnect.base/src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
@@ -227,6 +227,7 @@ public class Compiler extends AbstractCompiler {
     ASTNode.loggingEnabledForReads = optionLogReads.value();
     ASTNode.loggingEnabledForWrites = optionLogWrites.value();
     ASTNode.usesMqtt = optionProtocols.hasValue(OPTION_PROTOCOL_MQTT);
+    ASTNode.usesJava = optionProtocols.hasValue(OPTION_PROTOCOL_JAVA);
     ASTNode.usesRest = optionProtocols.hasValue(OPTION_PROTOCOL_REST);
     return ragConnect;
   }
diff --git a/ragconnect.base/src/main/resources/JavaHandler.jadd b/ragconnect.base/src/main/resources/JavaHandler.jadd
index 217ae63bce14a4cfe64e97aa3d5212fc82d783cb..60f43b8d0fe7c6a8692d8b33878f380b4c83ba85 100644
--- a/ragconnect.base/src/main/resources/JavaHandler.jadd
+++ b/ragconnect.base/src/main/resources/JavaHandler.jadd
@@ -29,7 +29,7 @@ aspect JavaHandler {
             return JAVA_HANDLER_INSTANCE;
         }
 
-        public void registerCallback(String topic, Consumer<byte[]> callback) {
+        public boolean registerCallback(String topic, Consumer<byte[]> callback) {
 
             logger.debug("[JAVA_HANDLER] Registering new callback.");
 
@@ -42,8 +42,12 @@ aspect JavaHandler {
             } else {
                 registeredCallbacks.add(callback);
             }
+
+            return true;
         }
 
+        public void close(){};
+
         public boolean push(String topic, byte[] data) {
 
             logger.debug("[JAVA_HANDLER] Pushing a message.");
diff --git a/ragconnect.base/src/main/resources/receiveDefinition.mustache b/ragconnect.base/src/main/resources/receiveDefinition.mustache
index 86523f5c74a03f009c98ae5abb796af42e1823af..95340e5446baeab28564747076c4178b06d55ee6 100644
--- a/ragconnect.base/src/main/resources/receiveDefinition.mustache
+++ b/ragconnect.base/src/main/resources/receiveDefinition.mustache
@@ -12,10 +12,10 @@ public boolean {{parentTypeName}}.{{connectMethod}}(String {{connectParameterNam
     case "mqtt": return {{mqttHandlerAttribute}}().newConnection(uri, consumer);
   {{/usesMqtt}}
   {{#usesJava}}
-    case "mqtt": return {{javaHandlerAttribute}}().registerCallback(uri, consumer);
+    case "java": return {{javaHandlerAttribute}}().registerCallback(path, consumer);
   {{/usesJava}}
   {{#usesRest}}
-    case "java": return {{restHandlerAttribute}}().newPUTConnection(uri, input -> {
+    case "rest": return {{restHandlerAttribute}}().newPUTConnection(uri, input -> {
       consumer.accept(input.getBytes());
     });
   {{/usesRest}}
diff --git a/ragconnect.base/src/main/resources/sendDefinition.mustache b/ragconnect.base/src/main/resources/sendDefinition.mustache
index a91371020903b8f146bb3453d39abec877855e6a..248ea2db939f1da946e62ce7ce2034457adaf4cb 100644
--- a/ragconnect.base/src/main/resources/sendDefinition.mustache
+++ b/ragconnect.base/src/main/resources/sendDefinition.mustache
@@ -22,13 +22,10 @@ public boolean {{parentTypeName}}.{{connectMethod}}(String {{connectParameterNam
   {{/usesMqtt}}
   {{#usesJava}}
       case "java":
-      final JavaHandler handler = {{javaHandlerAttribute}}().resolveHandler(uri);
-      final String topic = {{javaHandlerAttribute}}().extractTopic(uri);
+      final JavaHandler handler = {{javaHandlerAttribute}}().getInstance();
+
       {{sender}} = () -> {
-        {{#loggingEnabledForWrites}}
-        System.out.println("[Send] {{tokenName}} = " + get{{tokenName}}() + " -> " + {{connectParameterName}});
-        {{/loggingEnabledForWrites}}
-        handler.publish(topic, {{lastValue}});
+        handler.push(path, {{lastValue}});
       };
     {{updateMethod}}();
     if (writeCurrentValue) {