groovy
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的更多相关文章
- Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)
这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...
- 用Groovy构建java脚本
我是做工作流项目的,工作流中各个模板引擎都需要要执行一个动态业务,这些动态业务有多种实现方式,最常用的就是用户自己写一段脚本文件,然后工作流引擎执行到这里的时候,运行这个脚本文件. 这个运行脚本文件的 ...
- Groovy学习--基本语法了解
x项目用到gradle,学习gradle之前准备先过一遍Groovy的语法.这里参考:Groovy入门. 该博客没有系统的讲解Groovy的语法和原理,仅仅只是罗列了使用Groovy的常规方法.我照着 ...
- How to use groovy script on jenkins
1. Install groovy plugin 2. Add a step of groovy. (normal & systerm) 3. Execute groovy script im ...
- Java8-Function使用及Groovy闭包的代码示例
导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...
- Groovy中文教程(链接收藏)
学习Gradle前,需要有一个Groovy语言的基础,以免被Groovy的语法困扰,反而忽略了Gradle的知识.这里有一个Groovy的简明中文教程文档,可以快速学习Groovy的一些语法:http ...
- Groovy入门经典 随书重点
1 数值和表达式 1.1数值 整数是Integer类的实例 有小数部分的数值是BigDecimal类的实例 不同于java,没有基础数据类型 一切皆对象的概念重于java 1.2表达式 两个整数的除法 ...
- Groovy解析xml并且注入Project,TestSuite,TestCase级别的custom properties
import com.eviware.soapui.support.GroovyUtils import groovy.util.XmlParser def groovyUtils = new Gro ...
- Groovy入门教程
Groovy入门教程 kmyhy@126.com 2009-5-13 一.groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中. 作为跑在JVM ...
- 30分钟groovy快速入门并掌握(ubuntu 14.04+IntelliJ 13)
本文适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java开发人员.了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合.内置正则表达式和闭包. ...
随机推荐
- RN组件之Switch与Picker
一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...
- nosql数据库比较
- Shortcut 常用快捷键
多行注释: VS2010: / NotePad++: Ctrl Q Xcode: CMMND / 回到光标所在之前位置 VS2010: Ctrl +/- 关闭当前页: VS2010: 鼠标中 ...
- 用户提交的cookie提交时为什么传不到服务器
cookie与session跨域登陆代码(ie6,ie7,firefox)frameset里面,也就是里面的frame是来自第三方站点(不同ip或不同域名),那么默认情况下ie会自动禁用这些站点的co ...
- linux mysql服务器迁移
服务器即将过保,重新申请了一台虚机,折腾了一下数据库的迁移.以下是主要步骤: 1.在windows上用navicat把数据和结构转储成sql文件 2.在mysql官网上下载rpm的压缩包 3.使用se ...
- Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)
1. PHP 连接 Redis 访问 redis 官方网站的 client 栏目:http://www.redis.io/clients#php,可以获取 redis 的 php 扩展. 其中 php ...
- Rails--export csv
--controller def export_agent_impressions export_start_time = Time.parse(params[:es_time]) + 7.hours ...
- 20145225 实验四《Andoid开发基础》
实验内容 搭建Android环境 运行Android 修改代码,能输出学号 实验步骤 安装Android Studio 安装Android的SDK 运行Andriod Studio并在模拟手机上显示自 ...
- 20145235 《Java程序设计》第4周学习总结
代码托管截图 教材学习内容总结 继承 •继承:继承基本上就是避免多个类间重复定义共同行为. 我理解的就是:在编写程序的过程中可能会出现部分代码重复的现象,把重复的部分单独定义为一类(父类),在其他代码 ...
- 20145317彭垚《Java程序设计》第3周学习总结
20145317彭垚<Java程序设计>第3周学习总结 教材学习内容总结 第四章 4.1类与对象 4.1.1定义类: new clothes():新建一个对象. class clothes ...