搜索

7.3. unmarshal

download PDF

unmarshal ASN.1 结构化消息的三种不同方式:(通常为二进制文件)

在本示例中,我们 unmarshal BER 文件有效负载到 OutputStream 并将其发送到 mock 端点。

from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");

在第二个示例中,我们使用 Split EIP 将 unmarshal BER 文件有效负载字节阵列。应用 Split EIP 的原因是,每个 BER 文件或(ASN.1 结构化文件)通常包含多个记录来处理和 Split EIP 有助于我们获得文件中的每个记录作为字节阵列,实际是 ASN1Primitive 的实例(通过对 Bouncy Castle 的 ASN.1 支持)。bcprov-jdk18on 库)由 中的公共静态方法(ASN1Primitive.fromByteArray)在本例中转换为 ASN1Primitive.fromByteArray)请注意 ,您需要使用Iterator=true 设置

from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");

在最后一个示例中,我们使用 Split EIP 将 unmarshal BER 文件有效负载为纯旧的 Java 对象。上例中已经提到了应用 Split EIP 的原因。请注意,请注意原因。在本例中,我们还需要设置类的完全限定名称,或 <YourObject>.class 通过数据格式引用。这里需要注意的重要事项是,您的对象应由 jasn1 编译器生成,它是一个可生成 ASN.1 结构的 java 对象表示的工具。有关使用 jasn1 编译器的参考信息,请参阅 [JASN.1 Project Page](https://www.openmuc.org/asn1/),并查看如何使用 maven 的 exec 插件调用编译器。例如,在这个数据格式的单元中测试了一个示例 ASN.1 结构(TestSMSBerCdr.asn1),在 src/test/resources/asn1_structure. jasn1 编译器被调用,并在 ${basedir}/target/generated/src/test/java The nice things 中生成 java 对象的表示。

from("direct:unmarshaldsl")
         .unmarshal()
         .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
         .split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.