微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Mule 4 中调用 groovy 方法

如何解决在 Mule 4 中调用 groovy 方法

我已经用 JPA repo 构建了一个完整的 groovy 项目,用于数据持久化操作。现在我想从 Mule 4 中的脚本中调用方法,而无需更改 groovy 项目中的任何内容

例如。 CustomerService.groovy(伪代码

import com.example.dao.CustomerDao.groovy
... other imports...

@Service
class CustomerService {
@Autowired
CustomerDao cDao

@Transactional
publid Customer createCustomer(Customer customer) {
    return cDao.save(customer)
}

... other methods...
}

CustomerDao.groovy

import spring.JPA  (the original import path may vary)

@Repository
class CustomerDao implements JPARepository<Customer,Integer> {
}

此项目在 Mule 3 中运行。在 Mule 3 中,我们有一个 Invoke 组件,可用于从 groovy 脚本调用方法。 Mule 4 的 Invoke 组件只兼容 Java,不兼容 groovy。

脚本模块的“执行”组件可以调用常规脚本,但不确定如何调用方法。在 Mule 4 中是否有解决此问题的方法

目前出现的问题

  1. 在“执行”组件中,如果我导入另一个文件,则会出现错误
Unalbe to resolve class com.example.dao.CustomerDao
@ line 3 column 1,import com.example.dao.CustomerDao.groovy
^

为类似问题 https://help.mulesoft.com/s/article/Compilation-exception-in-Mule4-x-when-using-Groovy-script-with-Import-statement 找到了解决方案,但无法实施。

在这文章中,他的开发人员遇到了一个 apache 依赖问题,他/她可以从 mvn repo 获得。我正在尝试导入我开发的 groovy 文件。因此无法将其添加到依赖项中。我尝试在我的本地存储库中添加 groovy 项目并获取它,但它没有用。此外,当这个 Mule 4 应用程序将部署在 CloudHub 上时,它会出现问题,因为它无法访问我的本地存储库。

需要一个解决方案将 spring-groovy 项目添加到 Mule 4

谢谢:)

解决方法

问题是Scripting Module执行的Groovy脚本试图导入一个不在Java类路径中的类。所以它抛出错误。该类位于另一个 Groovy 源文件中。您可以做的是将 Groovy 代码编译为实际的 Java 类。您可以使用您的 Mule 应用程序 pom.xml 文件尝试 Groovy documentation to integrate a Maven plugin 中描述的方法之一。

如果您有大量 Groovy 类,另一种选择是创建一个单独的项目来构建 Jar 库,然后使用您提到的知识库文章中的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。