【问题标题】:Teiid User Defined Java Functions not visibleTeiid 用户定义的 Java 函数不可见
【发布时间】:2021-01-07 14:00:48
【问题描述】:

我正在使用 teiid-wildfly 服务器。我遵循了 teiid 文档中提供的用户定义函数示例。下面是我的 vdb 文件。如果我需要导入任何其他属性来查看/访问用户定义的函数,请告诉我。元数据 URL(http://localhost:8080/odata4/UDFTest/JavaCall/$metadata) 没有列出用户定义的函数并且在服务器日志中没有错误。我创建了包含 TempConv 文件实现的 jar 文件,并在模块目录下完成了设置。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="UDFTest" version="1">
<property name ="lib" value ="org.test"></property>
<model visible="true" name="JavaCall" type="VIRTUAL">
<metadata   type="DDL">
<![CDATA[
CREATE VIRTUAL FUNCTION celsiusToFahrenheit(celsius double) RETURNS double OPTIONS (JAVA_CLASS 'org.test.TempConv',  JAVA_METHOD 'celsiusToFahrenheit');
]]> </metadata>
</model>
</vdb>
     

【问题讨论】:

    标签: odata wildfly teiid


    【解决方案1】:

    OData 存在公开函数的已知问题:请参阅 https://issues.redhat.com/browse/TEIID-5736

    解决方法是改用过程。

    【讨论】:

    • 感谢史蒂文霍金斯。如果我使用过程,则需要过程主体的实现。 java文件中的实际实现,所以请指教在程序体中要实现什么。创建虚拟程序 celsiusToFahrenheit(celsius double) RETURNS double OPTIONS (JAVA_CLASS 'org.test.TempConv', JAVA_METHOD 'celsiusToFahrenheit'); Server.log 错误 TEIID31081 虚拟过程 JavaCall.celsiusToFahrenheit 未由模型 JavaCall.celsiusToFahrenheit 中的过程主体定义
    • 您只需让过程调用函数:创建虚拟过程 celsiusToFahenheit(celsius double) return double return functions.celsiusToFahrenheit(celsius);;
    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2020-01-21
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多