1、加载和卸载(每次都新建一个GroovyClassLoader 实例,然后使用新建的classloader去加载)

try {
            GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
            Class<?> clazz = groovyClassLoader.parseClass(orchestrationUnitDesc);
            GroovyObject unit = (GroovyObject) clazz.newInstance();
            result.setSuccess(true);
            result.setResult(unit);
            return result;
        } catch (InstantiationException e) {
            result.setSuccess(false);
            result.setErrorMsg("groovy:InstantiationException:" + e.getMessage());
            DataExchangeLogger.errorLog("", "", "groovy:InstantiationException", e);
        } catch (IllegalAccessException e) {
            result.setSuccess(false);
            result.setErrorMsg("groovy:IllegalAccessException:" + e.getMessage());
            DataExchangeLogger.errorLog("", "", "groovy:IllegalAccessException", e);
        } catch (Exception e) {
            result.setSuccess(false);
            result.setErrorMsg("groovy:Exception:" + e.getMessage());
            DataExchangeLogger.errorLog("", "", "groovy:Exception", e);
        }

2、执行

上面得到一个GroovyObject对象,执行方法就是调用GroovyObject的invokeMethod方法

// > 获取编排单元
        GroovyObject unit = (GroovyObject) ServiceOrchestrationConfigManager.getOrchestrationUnit(message.getMsgType());

        if (unit == null) {
            result.setErrorCode(OpenErrorCode.S07.name());
            result.setErrorMsg("orchestrationScript is null.");
            result.setSuccess(false);
            return result;
        }

        // > 调用服务编排
        try {
            unit.invokeMethod("setDoc", CustomXmlUtil.parseText2Doc(message.getRequestString()));
            result = (SendResult) unit.invokeMethod("execute", message);
            if (result == null) {
                result = new SendResult();
                result.setErrorCode(OpenErrorCode.S07.name());
                result.setErrorMsg("下发编排脚本执行,返回为空");
                result.setSuccess(false);
            }
        } catch (DocumentException e) {
            result.setErrorCode(OpenErrorCode.S07.name());
            result.setErrorMsg("请求报文转docment对象异常" + e.getMessage());
            result.setSuccess(false);
            DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
                    "call service orchestration parseText2Doc error.", e);
            return result;
        } catch (Exception e) {
            result.setErrorCode(OpenErrorCode.S07.name());
            result.setErrorMsg("下发编排脚本执行异常" + e.getMessage());
            result.setSuccess(false);
            DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
                    "call service orchestration excute script error. ", e);
        }

groovy的更多相关文章

  1. Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)

    这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...

  2. 用Groovy构建java脚本

    我是做工作流项目的,工作流中各个模板引擎都需要要执行一个动态业务,这些动态业务有多种实现方式,最常用的就是用户自己写一段脚本文件,然后工作流引擎执行到这里的时候,运行这个脚本文件. 这个运行脚本文件的 ...

  3. Groovy学习--基本语法了解

    x项目用到gradle,学习gradle之前准备先过一遍Groovy的语法.这里参考:Groovy入门. 该博客没有系统的讲解Groovy的语法和原理,仅仅只是罗列了使用Groovy的常规方法.我照着 ...

  4. How to use groovy script on jenkins

    1. Install groovy plugin 2. Add a step of groovy. (normal & systerm) 3. Execute groovy script im ...

  5. Java8-Function使用及Groovy闭包的代码示例

    导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...

  6. Groovy中文教程(链接收藏)

    学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识.这里有一个Groovy的简明中文教程文档,可以快速学习Groovy的一些语法:http ...

  7. Groovy入门经典 随书重点

    1 数值和表达式 1.1数值 整数是Integer类的实例 有小数部分的数值是BigDecimal类的实例 不同于java,没有基础数据类型 一切皆对象的概念重于java 1.2表达式 两个整数的除法 ...

  8. Groovy解析xml并且注入Project,TestSuite,TestCase级别的custom properties

    import com.eviware.soapui.support.GroovyUtils import groovy.util.XmlParser def groovyUtils = new Gro ...

  9. Groovy入门教程

    Groovy入门教程 kmyhy@126.com  2009-5-13 一.groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中. 作为跑在JVM ...

  10. 30分钟groovy快速入门并掌握(ubuntu 14.04+IntelliJ 13)

    本文适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java开发人员.了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合.内置正则表达式和闭包. ...

随机推荐

  1. spring中的bean

    环境准备 Eclipse上新建一个简单的maven工程,Artifact Id选择maven-archetype-quickstart: 添加spring-context依赖: <depende ...

  2. CF 405C Unusual Product(想法题)

    题目链接: 传送门 Domino Effect time limit per test:1 second     memory limit per test:256 megabytes Descrip ...

  3. Android Menu 主菜单是使用

    在Android里面每个Activity都绑定了一个Menu(菜单)有些时候我们需要使用到菜单.用法很简单,我们只需要重写onCreateOptionsMenu和onOptionsItemSelect ...

  4. 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题

    在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...

  5. 【leetcode❤python】 19. Remove Nth Node From End of List

    #-*- coding: UTF-8 -*-#双指针思想,两个指针相隔n-1,每次两个指针向后一步,当后面一个指针没有后继了,前面一个指针的后继就是要删除的节点# Definition for sin ...

  6. features recreate的含义

    就是从数据库里导出这个features的代码块.

  7. 解决关于打开plist文件乱码问题,plist转换为xml文件的txt文件!

    自己是程序员,干嘛不自己写代码完成?下载工具还不一定管用!具体解决方案如下: 1,获得内容 NSArray *dictionary = [NSArray arrayWithContentsOfFile ...

  8. 查看ORACLE执行计划的几种常用方法

    SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向. 执行计划的定义:执行目 ...

  9. DTCMS视频模版更改,

    1.去掉style.css中视频的高度 .video-box{ position:relative; width:100%; height:473px; _clear:both; _display:i ...

  10. Django模板引擎的研究

    Django模板引擎的研究 原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not f ...