2.63. JSLT


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

2.63.1. 什么是内部

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

2.63.2. Maven 协调

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

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

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

2.63.3. 原生模式中的 allowContextMapAll 选项

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

2.63.4. 其他 Camel Quarkus 配置

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

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

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

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

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

quarkus.native.resources.includes = *.json
Copy to Clipboard

有关选择包含在原生可执行文件中的资源的更多信息,请参阅 原生可执行文件 中的 组合资源

2.63.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

目标功能 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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat