#groovy #mule4
#заводной #mule4
Вопрос:
Я создал полный проект groovy с использованием JPA repo для операций сохранения данных. Теперь я хочу вызвать методы из скрипта в 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. Мул 4 компонент Invoke совместим только с Java, а не с groovy.
Компонент «Execute» модуля сценариев может вызывать сценарий groovy, но не уверен, как вызвать этот метод. Есть ли какие-либо обходные пути для этого в Mule 4?
На данный момент возникли проблемы
- В компоненте ‘Execute‘, если я импортирую другой файл, я получаю сообщение об ошибке следующим образом
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. Я пытаюсь импортировать файл groovy, который я разработал. Поэтому невозможно добавить его в зависимость. Я попытался добавить проект groovy в свой локальный репозиторий и извлечь его, но это не сработало. Более того, когда это приложение Mule 4 будет развернуто на CloudHub, у него возникнет проблема, поскольку оно не сможет получить доступ к моему локальному репозиторию.
Нужно решение для добавления проекта spring-groovy в Mule 4
Спасибо 🙂
Комментарии:
1. Если у вас это работает в mule3, я думаю, было бы более полезно, если бы вы добавили это к вопросу, а также то, что вы пробовали с mule4 и как это не удалось.
2. @cfrick обновили вопрос. Пожалуйста, изучите это.
3. Почему вы не можете реализовать решение, описанное в статье KB? Вы не предоставили никаких подробностей об этом.
4. @aled В статье у разработчика возникла проблема с зависимостью от apache, которую он / она мог получить из репозитория mvn. Я пытаюсь импортировать файл groovy, который я разработал. Поэтому невозможно добавить его в зависимость.
5. Импортируемый скрипт Groovy находится в том же приложении? Используете ли вы какой-либо плагин Groovy Maven?
Ответ №1:
Проблема в том, что сценарий Groovy, выполняемый модулем сценариев, пытается импортировать класс, которого нет в пути к классу Java. Таким образом, он выдает ошибку. Класс находится в другом исходном файле Groovy. Что вы можете сделать, так это скомпилировать Groovy-код в реальный Java-класс. Вы можете попробовать один из методов, описанных в документации Groovy, для интеграции плагина Maven с вашим приложением Mule pom.xml досье.
Другой альтернативой, если у вас большое количество классов Groovy, является создание отдельного проекта для создания библиотеки Jar, затем используйте решение из упомянутой вами статьи KB.