• java 执行JavaScript 以及容器化的问题


    1. 可选方案
     
      a. jdk 6 开始内置的Rhino 引擎
      b. jdk8 替换的nashorn (性能高,对于ECMA 支持更好)
      c. java 版的nodejs vertx.io
     
    2. 实践操作
    public static void main(String[] args) {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("nashorn");
            try {
                int value=2;
                SimpleBindings bind=new SimpleBindings();
                SimpleBindings bind2=new SimpleBindings();
                SimpleBindings bind3=new SimpleBindings();
                bind.put("点数", value);
                bind2.put("a", value);
                bind2.put("b", value);
                bind3.put("a1", value+1);
                bind3.put("b1", value+2);
                 System.out.println(engine.eval("点数<50?50:Math.ceil(56/50)*50",bind));
                System.out.println(engine.eval("demosum=function(a,b){return a+b}; demosum(a,b);",bind2));    // 定义方法,并调用支持参数绑定
                System.out.println(engine.eval("(function(a1,b1){function demosub(a,b){ return a+b;}return demosub(a1,b1)})(a1,b1)",bind3));    // 使用js 立即执行函数
              } catch (ScriptException e) {
                e.printStackTrace();
            }
        }
     
    3. docker 容器处理
     
     docker 容器实践有一个原则就是容器的镜像要尽可能的小
    一般大家会选择使用 alpine linux 发行版本
    对于Dockerfile 如下:
    FROM frolvlad/alpine-oraclejdk8:full
    VOLUME /tmp
    ADD demo.class demo.class
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","app"]
     
    注意镜像的tag 选择使用 full 
    执行结果
     



  • 相关阅读:
    AJAX注册
    文件上传加水印
    邮箱
    AJAX完整操作
    跨窗体操作
    容器布局
    EF异常类
    SQL查出字段横向拼接,如:1,2,3,4
    asp.net三层结构中,SQL助手类DbHelperSQL
    正则抓取页面信息
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/7290013.html
Copyright © 2020-2023  润新知