繁体   English   中英

在 Mule 4 中调用 groovy 方法

[英]Invoking groovy method in Mule 4

我已经使用 JPA 存储库构建了一个完整的 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 兼容。

脚本模块的“执行”组件可以调用 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 上时,它会出现问题,因为它无法访问我的本地存储库。

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

谢谢:)

问题是脚本模块执行的 Groovy 脚本试图导入不在 Java 的类路径中的 class。 所以它会抛出错误。 class 位于另一个 Groovy 源文件中。 您可以做的是将 Groovy 代码编译成实际的 Java class。 您可以尝试Groovy 文档中描述的方法之一,将 Maven 插件与您的 Mule 应用程序 pom.xml 文件集成

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM