diff --git a/jetlinks-components/network-component/tcp-component/pom.xml b/jetlinks-components/network-component/tcp-component/pom.xml
index c654146c..69b24451 100644
--- a/jetlinks-components/network-component/tcp-component/pom.xml
+++ b/jetlinks-components/network-component/tcp-component/pom.xml
@@ -36,6 +36,13 @@
1.9
+
+ org.jetlinks.community
+ script-component
+ ${project.version}
+ compile
+
+
\ No newline at end of file
diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java
index 71dd5f6b..0188df0a 100755
--- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java
+++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java
@@ -8,6 +8,9 @@ import org.jetlinks.community.ValueObject;
import org.jetlinks.community.network.tcp.parser.PayloadParser;
import org.jetlinks.community.network.tcp.parser.PayloadParserBuilderStrategy;
import org.jetlinks.community.network.tcp.parser.PayloadParserType;
+import org.jetlinks.community.script.CompiledScript;
+import org.jetlinks.community.script.Script;
+import org.jetlinks.community.script.Scripts;
import java.util.HashMap;
import java.util.Map;
@@ -47,24 +50,20 @@ public class ScriptPayloadParserBuilder implements PayloadParserBuilderStrategy
String lang = config.getString("lang")
.orElseThrow(() -> new IllegalArgumentException("lang不能为空"));
- DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang);
- if (engine == null) {
- throw new IllegalArgumentException("不支持的脚本:" + lang);
- }
- String id = DigestUtils.md5Hex(script);
- if (!engine.compiled(id)) {
- engine.compile(id, script);
- }
- doCreateParser(id,engine);
- return ()-> doCreateParser(id, engine);
+ CompiledScript compiledScript = Scripts
+ .getFactory(lang)
+ .compile(Script.of("tcp-network-payload-parser", script));
+
+ return () -> {
+ PipePayloadParser parser = new PipePayloadParser();
+
+ Map ctx = new HashMap<>();
+ ctx.put("parser", parser);
+
+ compiledScript.call(ctx);
+ return parser;
+ };
}
- @SneakyThrows
- private PipePayloadParser doCreateParser(String id,DynamicScriptEngine engine){
- PipePayloadParser parser = new PipePayloadParser();
- Map ctx = new HashMap<>();
- ctx.put("parser", parser);
- engine.execute(id, ctx).getIfSuccess();
- return parser;
- }
+
}