7.3. unmarshal
해상 ASN.1 구조화된 메시지를 압축 해제하는 방법에는 세 가지가 있습니다. (일반적으로 바이너리 파일)
이 첫 번째 예제에서는 OutputStream에 대한marshal BER 파일 페이로드를 생략하고 mock 엔드포인트로 보냅니다.
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
두 번째 예제에서는 Split EIP를 사용하여 바이트 배열에 대한marshal BER 파일 페이로드를 해제합니다. Split EIP를 적용하는 이유는 일반적으로 각 BER 파일 또는 (ASN.1 구조화된 파일)에 처리 할 여러 레코드가 포함되어 있으며 Split EIP는 실제로 ASN1Primitive의 인스턴스 (Bunastle의 ASN 사용)인 바이트 배열로 파일의 각 레코드를 가져오는 데 도움이 되기 때문입니다. 1 bcprov-jdk15on 라이브러리의 지원) Byte 배열은 (ASN1Primitive.fromByteArray)의 공용 정적 메서드의 도움으로 ASN1Primitive로 변환될 수 있습니다. Iter ator=true를 사용하여
설정해야 합니다.
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
마지막 예제에서는 Split EIP를 사용하는 기존 Java 객체에 대한marshal BER 파일 페이로드를 해제합니다. Split EIP를 적용하는 이유는 이미 이전 예제에서 언급되어 있습니다. 그 이유를 염두에 두십시오. 이 예제에서는 또한 클래스의 정규화된 이름 또는 데이터 형식을 통해 <YourObject>.class 참조를 설정해야 합니다. 여기서 주의해야 할 중요한 사항은 ASN.1 구조의 Java 개체 표현을 생성하는 유용한 도구인 jasn1 컴파일러에 의해 개체가 생성되어야 한다는 것입니다. jasn1 컴파일러의 참조 사용은 [JASN.1 Project Page](https://www.openmuc.org/asn1/)를 참조하고 maven의 exec 플러그인과 함께 컴파일러를 호출하는 방법도 참조하십시오. 예를 들어, 이 데이터 형식의 단위에서는 예제 ASN.1 구조(TestSMSBerCdr.asn1)가 src/test/resources/asn1_structure
. jasn1 컴파일러에 추가되고 java 오브젝트의 표현이 호출되고 java 오브젝트의 표현은 ${basedir}/target/generated/src/src/test/java
에 생성됩니다.
from("direct:unmarshaldsl") .unmarshal() .asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr") .split(body(Iterator.class)).streaming() .to("mock:unmarshaldsl");