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 的核心功能,例如本地集合.内置正则表达式和闭包. ...
随机推荐
- QAction QActionGroup QMenu 使用方法
在Qt中,QAction,QActionGroup 和 QMenu类用用来操作软件的菜单栏的,比如很多软件都有文件菜单,里面有打开,保存,另存为之类的选项,在Qt中就是通过这几个类来实现的.或者是在菜 ...
- git客户端初始化
安装git客户端:[root@super67 ~]# yum install -y git 配置git信息:[root@super67 ~]# git config --global user.nam ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- 导航栏下a标签失效的原因
前天我一直没找到失效的结果,就在刚才,我用不同的浏览器打开我编写的网页,有一个浏览器的图片循环播放效果错位了,我觉得就是它上边的div把他挤下来了.正如前天网上看到的高手的们的说法.我用firebug ...
- PHP获取当前时间、时间戳的各种格式写法汇总[日期时间](转)
今天写下PHP中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通.1.获取当前时间方法date()很简单,这就是获取时间的方法,格式为:date($format, $ti ...
- HTTP 笔记与总结(6)referer 头与防盗链
在百度贴吧(或 QQ 空间等)中找到一张图片,复制图片地址,在站外通过 img src 引用,会发现: 此外,在一些统计软件中,统计访客的来路(直接访问.外部链接.搜索引擎),都用到了 HTTP 协议 ...
- redis缓存怎么存储对象
2.把对象Object存储到redis中,怎么存?memcache存取对象是序列化和反序列化 使用通用的序列化.反序列化(频繁的会很消耗cpu,使用Google Protocol Buffer,将对象 ...
- 不再以讹传讹,GET和POST的真正区别
不再以讹传讹,GET和POST的真正区别 网上的多数答案都是错的 在 2012年05月03日 那天写的 已经有 19940 次阅读了 感谢 参考或原文 www.cnblogs.com 服务 ...
- MVC4发布到IIS7报404错误
在MVC根目录的web.config中添加 <system.webServer> <modules runAllManagedModulesForAllRequests=" ...
- Rails--content_for和yield
--使用: (1)layout中使用<%=yield(:js)%> (2)html中使用<% content_for :js do %>[XXX]<% end %>