2.41. JSLT


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

2.41.1. 内部内容

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

2.41.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.41.3. 在原生模式中允许ContextMapAll 选项

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

2.41.4. 其他 Camel Quarkus 配置

2.41.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.41.4.2. 在原生模式中使用 JSLT 功能

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

@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