Я попытался использовать пример быстрого запуска интеграции drools (который мне удалось построить и успешно развернуть), чтобы создать шаблон для простой функции, которая принимает объект и возвращает объект.
Object foo(Object p) {
return p;
}
Когда я пытаюсь развернуть соответствующий файл vdb.xml, я получаю следующее сообщение об ошибке:
ERROR [stderr] (teiid-async-threads - 2) Exception in thread "teiid-async-threads - 2" java.lang.NoClassDefFoundError: org/teiid/query/util/CommandContext
.
.
ERROR [stderr] (teiid-async-threads - 2) Caused by: java.lang.ClassNotFoundException: org.teiid.query.util.CommandContext from [Module "com.acme:main" from local module loader ...
Есть идеи, что заставляет JDV не находить CommandContext?
Обновление: После перезапуска JDV (и перезагрузки всех модулей) я получаю сообщение
WARN [org.teiid.PLANNER.RESOLVER] (teiid-async-threads - 4) TEIID31080 myView.MyView validation error: TEIID30070 The Function 'JSONTOXML('foo, MYFUNC(w.result))' is a valid function form, but the arguments do not match a known type signature and cannot be converted using implicit type conversions.
WARN [org.teiid.PLANNER.RESOLVER] (teiid-async-threads - 4) TEIID31073 Invalid functions; Translator metadata load myView []
Это менее загадочно и предполагает, что виновником является Object, используемый для параметров и возвращаемых типов, в отличие от Blob или Clob (или BloblType или ClobType, основанный на коде в XMLSystemFunctions для логики JSON-to-XML). Тем не менее, приведенные выше результаты показывают, что перезагрузка или перезапуск JDV может устранить ошибочные ложные срабатывания при устранении неполадок развертывания модуля / vdb.
Обновление: Решением было предоставить две (перегруженные) версии моей UDF, одну для Clob и одну для Blob.