扩展 org.teiid.translator.ws 以连接到返回 JSONP(其媒体类型通常是 application/javascript)的 web 服务的最佳方法是什么?现有的 ws 转换器只能读取 JSON 或 XML。一般而言,翻译器是否旨在促进转换逻辑的注入以处理任何网页结构/格式(例如,JSONP、纯文本、html 等)?
对于 JSONP,我倾向于创建自己的 org.teiid.core.types.InputStreamFactory 实现,比如 com.acme.JsonpToJsonInputStreamFactory,我在其中定义了自己的 JsonpToJsonReaderInputStream(扩展 ReaderInputStream),它跳过了前导
randomFunctionName(
和尾随
)
JSONP 有效负载,并修改 ClobInputStreamFactory.getInputStream 以返回它,而不是 ReaderInputStream。然后我替换两个实例
ds = new InputStreamFactory.ClobInputStreamFactory(...);
在translator-ws-jsonp.BinaryWSProcedureExecution(其中translator-ws-jsonp基于translator-ws)中
ds = new JsonpToJsonInputStreamFactory.ClobInputStreamFactory(...);