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. COJ979 WZJ的数据结构(负二十一)

    试题描述 请你实现一个数据结构,完成这样的功能: 给你一个N个点的图,初始状态无边. 每次加入一条双向边(u,v,w),若加入后没有构成一棵生成树,输出“Not Yet”,否则输出当前最小生成树的权值 ...

  2. Android 并行自动化测试系统 实现总结

    一:    总体架构 系统工程架构源码:https://github.com/UDLD/UIAUTOMATORTEST 整个系统基于: UiAutomator + 自编Python交互库 + Robo ...

  3. C# DateTime 日期加1天 减一天 加一月 减一月 等方法(转)

    //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStrin ...

  4. ThinkPHP 中M方法和D方法详解----转载

    转载的地址,http://blog.163.com/litianyichuanqi@126/blog/static/115979441201223043452383/ 自己学到这里的时候,不能清除的分 ...

  5. workerman使用编译安装workerman的php环境

    提示 workerman只是一个代码包,如果php环境满足要求,下载后即可使用,实际上没有安装过程. workerman对php环境的要求是: 1.php>=5.3.3,可以运行命令php-v查 ...

  6. Network | TCP congestion control

    拥塞控制算法:1. 加性增.乘性减:2. 慢启动:3. 对超时事件作出反应: 整体过程如下: 慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗 ...

  7. dig理解dns主备 - 阿权的书房

    dns的解析一般都授权两个以上,防止单点故障. 比如阿权的书房的域名 www.aslibra.com,授权两台ns.aslibra.com 和 ns2.aslibra.com,如果单点故障会怎么样呢? ...

  8. gridview header增加排序图标

    /* add sorting icons to gridview sort links */a.asc:after, a.desc:after { position: relative; top: 1 ...

  9. Hrbustoj 1429 二分+计算几何

    http://www.bubuko.com/infodetail-1121744.html 在这个上面学习了方法 如果要判断巨量的点 就应该使用二分法 思路是先从a[1] a[n] a[2]来判断是否 ...

  10. mysql insert一条记录后怎样返回创建记录的主键id,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...