栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot集成graaljs +sandbox

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot集成graaljs +sandbox


    org.javadelight
    delight-nashorn-sandbox
    0.1.31
    
        
            org.slf4j
            slf4j-api
        
    


    org.graalvm.sdk
    graal-sdk
    ${graalvm.js.version}


    org.graalvm.js
    js
    ${graalvm.js.version}


    org.graalvm.regex
    regex
    ${graalvm.js.version}


    org.graalvm.truffle
    truffle-api
    ${graalvm.js.version}


    org.graalvm.js
    js-scriptengine
    ${graalvm.js.version}


    org.javadelight
    delight-graaljs-sandbox
    0.1.2
    
        
            org.javadelight
            delight-nashorn-sandbox
        
        
            org.slf4j
            slf4j-api
        
        
            org.graalvm.sdk
            graal-sdk
        
        
                org.graalvm.js
                js
        
        
                org.graalvm.regex
                regex
        
        
                org.graalvm.truffle
                truffle-api
        
        
            org.graalvm.js
            js-scriptengine
        
        
            org.webjars.bower
            js-beautify
        
    

注意事项1:java 8只能使用delight-nashorn-sandbox的0.1.x版本,0.2.x版本适用于java 11以上,github上面有讲
注意事项2:打包成springboot fatjar时,需要unpack


    org.springframework.boot
    spring-boot-maven-plugin
    ${spring-boot.version}
    
        
            
                repackage
            
        
    
    
        
            
                org.graalvm.js
                js
            
            
                org.graalvm.js
                js-scriptengine
            
            
                org.graalvm.regex
                regex
            
            
                org.graalvm.sdk
                graal-sdk
            
            
                org.graalvm.truffle
                truffle-api
            
        
    

理由:

注意事项3:graalvm js的版本不要使用最新的,20.3.5或21.2.0是一个比较稳定的版本,在各操作系统及cpu上都可用。比如arm64
注意事项4:多线程问题,可参考以下文章或demo。
graal javascript thread safety
多线程demo
multithreading
thread issue
async demo
multi threaded java javascript in graalvm
script engine instance problem

注意事项5:graalvm js支持ScriptEngine与Polyglot模式,在delight-graaljs-sandbox沙箱的实现方案中采用的是ScriptEngine,但会面临多线程的问题。按照注意事项4中提到的内容,多线程可以共享graaljs engine,但需使用不同的Context

注意事项6:crash问题,aarch64、openjdk 1.8.0_242会有问题,升级openjdk 1.8.0_332
graalvm release notes
报错如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000fffcb1ca7ef8, pid=3561071, tid=0x0000fffca253f1e0
#
# JRE version: OpenJDK Runtime Environment (8.0_242-b08) (build 1.8.0_242-b08)
# Java VM: OpenJDK 64-Bit Server VM (25.242-b08 mixed mode linux-aarch64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x8c7ef8]  oopDesc* PSPromotionManager::copy_to_survivor_space(oopDesc*)+0xf8
#
# Core dump written. Default location: /data/dgaxoa/app-document-service/core or core.3561071
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

注意事项7:有些环境下需要使用-XX:+UseG1GC

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号