7.3. unmarshal


unmarshal ASN.1 结构化消息有 3 种不同的方法。(通常是二进制文件)

在第一个示例中,我们 unmarshal BER 文件有效负载发送到 OutputStream,并将其发送到模拟端点。

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)中的公共静态方法(ASN1Primitive)转换为 ASN1Primitive。例如, 请注意,您需要使用 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 编译器生成,它是一个 nice 工具,用于生成 ASN.1 结构的 java 对象表示。有关 jasn1 编译器的参考使用情况,请参阅 [JASN.1 Project Page](https://www.openmuc.org/asn1/),并参阅 maven's exec 插件帮助调用编译器。例如,在这个数据格式的单元中,测试一个 ASN.1 结构(TestSMSBerCdr.asn1)在 src/test/resources/asn1_structure 1_structure 中被调用。Jasn1 编译器在 ${basedir}/target/generated/src/test/java nice thing 中生成了一个 ASN.1 结构(TestSMSBerCdrn1_structure。jasn1 编译器被调用,并在 ${basedir}/target/generated/src/test/java nice thing 中生成了 POJO。

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.