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 的核心功能,例如本地集合.内置正则表达式和闭包. ...
随机推荐
- 【BZOJ】3039: 玉蟾宫(DP/单调栈)
http://www.lydsy.com/JudgeOnline/problem.php?id=3039 每次看到我的提交都有点淡淡的忧伤T_T.. 看到此题我想到用前缀和维护点ij向左和向上能拓展的 ...
- Leetcode | Valid Sudoku & Sudoku Solver
判断valid,没有更好的方法,只能brute force. class Solution { public: bool isValidSudoku(vector<vector<char& ...
- MVC两个必懂核心
ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与Action名称: 一个名为MvcHandler ...
- REST性能测试方案
1.REST简介 REST(代表性状态传输,Representational State Transfer)是一种Web服务设计模型.REST定义了一组体系架构原则,您可以根据这些原则设计以系统资源为 ...
- 导入maven项目后无法找到sun tools toos-15.0.jar
直接在缺失该jar包的pom中添加 以下属性和依赖即可! <java.home>D:\devtool\jdk1.6</java.home> <!-- 指定使用的JDK的安 ...
- Linux+postfix+extmail+dovecot打造基于web页面的邮件系统
原文地址:http://blog.csdn.net/deansrk/article/details/6717720 最终效果图: 准备阶段:需要手动下载的软件包: postfix-2.6.5.tar. ...
- heapsort
Introduction to Algorithms Third Edition The (binary) heap data structure is an array object that we ...
- P1090 合并果子
#include <bits/stdc++.h> using namespace std; const int maxn = 10005; int main(int argc, char ...
- Delphi指针的用法
DELPHI指针的使用 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上.因此,说指针是C语言的灵魂,一点都不为过.同时,这种说法也让很多人产生误解,似乎只有C语言的指针才 ...
- 一个很好的Delphi博客
一个很好的Delphi博客,主人叫万一 http://www.cnblogs.com/del/archive/2011/09/21/2183007.html