2.44. JSLT


使用 JSLT 查询或转换 JSON 有效负载。

2.44.1. 内部是什么

有关使用和配置详情,请参阅上述链接。

2.44.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建一个新项目

或者将协调添加到现有项目中:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-jslt</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.44.3. 原生模式中的 allowContextMapAll 选项

原生模式下不支持 allowContextMapAll 选项,因为它需要对安全敏感 camel 内核类(如 CamelContextExchange )进行反映访问。这被视为安全风险,因此默认不提供对该功能的访问。

2.44.4. 其他 Camel Quarkus 配置

2.44.4.1. 从原生模式的类路径加载 JSLT 模板

此组件通常从 classpath 加载模板。要使它也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性将模板文件明确嵌入到原生可执行文件中。

例如,以下路由将从名为 transformation.json 的类路径资源加载 JSLT 模式:

from("direct:start").to("jslt:transformation.json");
Copy to Clipboard Toggle word wrap

要在原生镜像中包含它(可能存储在 .json 文件中的其他模板),您必须将类似如下的内容添加到 application.properties 文件中:

quarkus.native.resources.includes = *.json
Copy to Clipboard Toggle word wrap

2.44.4.2. 在原生模式中使用 JSLT 功能

当在原生模式下使用 camel-quarkus 中的 JSLT 功能时,需要 注册托管函数的类来反映。当无法注册目标功能时,可能会最终编写 stub,如下所示。

@RegisterForReflection
public class MathFunctionStub {
    public static double pow(double a, double b) {
        return java.lang.Math.pow(a, b);
    }
}
Copy to Clipboard Toggle word wrap

目标功能 Math.pow (…​) 现在可以通过 MathFunctionStub 类访问,这些类可以在组件中注册,如下所示:

@Named
JsltComponent jsltWithFunction() throws ClassNotFoundException {
    JsltComponent component = new JsltComponent();
    component.setFunctions(singleton(wrapStaticMethod("power", "org.apache.cq.example.MathFunctionStub", "pow")));
    return component;
}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat