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

  1. try {
  2. GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
  3. Class<?> clazz = groovyClassLoader.parseClass(orchestrationUnitDesc);
  4. GroovyObject unit = (GroovyObject) clazz.newInstance();
  5. result.setSuccess(true);
  6. result.setResult(unit);
  7. return result;
  8. } catch (InstantiationException e) {
  9. result.setSuccess(false);
  10. result.setErrorMsg("groovy:InstantiationException:" + e.getMessage());
  11. DataExchangeLogger.errorLog("", "", "groovy:InstantiationException", e);
  12. } catch (IllegalAccessException e) {
  13. result.setSuccess(false);
  14. result.setErrorMsg("groovy:IllegalAccessException:" + e.getMessage());
  15. DataExchangeLogger.errorLog("", "", "groovy:IllegalAccessException", e);
  16. } catch (Exception e) {
  17. result.setSuccess(false);
  18. result.setErrorMsg("groovy:Exception:" + e.getMessage());
  19. DataExchangeLogger.errorLog("", "", "groovy:Exception", e);
  20. }

2、执行

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

  1. // > 获取编排单元
  2. GroovyObject unit = (GroovyObject) ServiceOrchestrationConfigManager.getOrchestrationUnit(message.getMsgType());
  3.  
  4. if (unit == null) {
  5. result.setErrorCode(OpenErrorCode.S07.name());
  6. result.setErrorMsg("orchestrationScript is null.");
  7. result.setSuccess(false);
  8. return result;
  9. }
  10.  
  11. // > 调用服务编排
  12. try {
  13. unit.invokeMethod("setDoc", CustomXmlUtil.parseText2Doc(message.getRequestString()));
  14. result = (SendResult) unit.invokeMethod("execute", message);
  15. if (result == null) {
  16. result = new SendResult();
  17. result.setErrorCode(OpenErrorCode.S07.name());
  18. result.setErrorMsg("下发编排脚本执行,返回为空");
  19. result.setSuccess(false);
  20. }
  21. } catch (DocumentException e) {
  22. result.setErrorCode(OpenErrorCode.S07.name());
  23. result.setErrorMsg("请求报文转docment对象异常" + e.getMessage());
  24. result.setSuccess(false);
  25. DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
  26. "call service orchestration parseText2Doc error.", e);
  27. return result;
  28. } catch (Exception e) {
  29. result.setErrorCode(OpenErrorCode.S07.name());
  30. result.setErrorMsg("下发编排脚本执行异常" + e.getMessage());
  31. result.setSuccess(false);
  32. DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
  33. "call service orchestration excute script error. ", e);
  34. }

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. 看看 JDK 8 给我们带来什么(转)

    世界正在缓慢而稳步的改变.这次改变给我们带来了一个新模样的JDK7,java社区也在一直期盼着在JDK8,也许是JDK9中出现一些其他的改进.JDK8的改进目标是填补JDK7实现中的一些空白——部分计 ...

  2. filter:alpha(opacity=100,style=1)

    filter:alpha(opacity=100,style=1) 1.opacity属性:设置透明度,取值0至100之间的任意数值,100表示完全不透明: 2.style属性:设置渐变风格: 0表示 ...

  3. 深度解析开发项目之 05 - 解决textField编辑之后点击其他内容改变的问题

    深度解析开发项目之 05 - 解决textField编辑之后点击其他内容改变的问题 问题的解决:  只需要给HeadeVIew加上这句代码

  4. yoman安装和使用

    http://yeoman.io/     安装到全局 sudo npm install -g yo 判断是否安装成 yo --version 常用命令 yo doctore yo --help 安装 ...

  5. SQLLite 可以通过SQL语言来访问的文件型SQL数据库

    Web Storage分为两类: - sessionStorage:数据保存在session 对象中(临时) - localStorage:数据保存在本地硬件设备中(永久) sessionStorag ...

  6. [GE]手动截取当前活动窗口,并且按规则命名(1/2)

    Function Take-ScreenShot { <# .SYNOPSIS Used to take a screenshot of the desktop or the active wi ...

  7. 硬盘参数之TLER

    “你们根本不知道nas盘是用来干啥的,准确的说,要nas盘就是要tler技术,这样才适合用在nas上. TLER=Time-Limited Error Recovery 这么说吧,普通的硬盘(不带TL ...

  8. 在Excel中实现查询功能

    $sn = Read-Host -Prompt "请输入员工号|序列号|资产号" $xl = New-Object -ComObject "Excel.Applicati ...

  9. 在windows下使用gnu的工具

    mingw Minimalist GNU for Windows http://www.mingw.org/ 想要在Windows使用wget,之前使用的是单独的安装包,现在又想使用bash的命令提示 ...

  10. [听听音乐]when you believe [singer: mariah carey]

    movie: prince of egypt Lyrics   Many nights we prayed With no proof anyone could hear In our hearts ...