Мое приложение настраивает и развертывает механизм esper, который анализирует модуль epl, хранящийся в базе данных MySQL, в виде строки. Все работает, кроме случаев, когда я пытаюсь вызвать статический метод из модуля epl. Я получаю следующую ошибку при развертывании механизма: DeploymentActionException: Развертывание не удалось в модуле «MyModule» в выражении «select ...»: Ошибка запуска оператора: Неверный тип возврата для статического метода «myMethod» класса «MyClass», ожидая Java Класс.
Вот метод:
public static String myMethod() {
String symbol = "GOOG";
logger.info("Hello From EPL");
return symbol;
}
Вот конфигурация двигателя и развертывание модуля:
Configuration configuration = new Configuration();
configuration.addEventType("MyEvent", MyEvent.class);
configuration.addImport(com.tp.main.MyClass.class);
epService = EPServiceProviderManager.getProvider("Service", configuration);
EPDeploymentAdmin deploymentAdmin = epService.getEPAdministrator().getDeploymentAdmin();
Module module = deploymentAdmin.parse(epl);
String moduleId = deploymentAdmin.add(module);
deploymentAdmin.deploy(moduleId, null);
Вот модуль epl:
module MyModule; select propertyA, propertyB from MyEvent as propertyA unidirectional, method:MyClass.myMethod as propertyB
В MyEvent есть метод get для propertyA, который возвращает String.
Я прочитал и перечитал документацию вперед и назад. Похоже, все должно работать. Я нашел примеры онлайн, которые далее предполагают, что все хорошо. Но я не могу обойти эту ошибку.
Я пытался перенести импорт в модуль epl. Я пытался перейти от событий POJO к событиям Map и обратно. Я попытался создать схему в модуле epl и использовать API времени выполнения для настройки типов событий и обратно.
Если я уберу этот вызов метода, все будет работать так же, как другие операторы (не показаны) в модуле epl.
Чего мне не хватает?