312.5. 다중 파트 메시지
Camel 2.8.1에서 사용 가능
다중 파트 Cryostat 메시지는 ServiceInterfaceStrategy에서 지원됩니다. ServiceInterfaceStrategy는 Cryostat-WS 2.2에 따라 주석이 달린 서비스 인터페이스 정의를 사용하여 초기화하고 문서 베어 스타일의 요구 사항을 충족해야 합니다. target 메서드는 다음과 같은 기준을 충족해야 합니다. 1)Even 또는
비header 매개 변수 이외의 반환 유형이 있는 경우, 3) 반환 유형이
in
/out없는
경우 3) 비 헤더 또는 비 헤더 매개변수가 있는
경우 대부분 보유해야 합니다.
매핑 전략이 요청 매개변수 또는 응답 매개변수에 적용되는지 여부를 나타내는 부울 매개변수를 사용하여 ServiceInterfaceStrategy를 초기화해야 합니다.
ServiceInterfaceStrategy strat = new ServiceInterfaceStrategy(com.example.customerservice.multipart.MultiPartCustomerService.class, true); SoapJaxbDataFormat soapDataFormat = new SoapJaxbDataFormat("com.example.customerservice.multipart", strat);
312.5.1. 다중 파트 요청
다중 파트 요청에 대한 페이로드 매개변수는 대상 작업의 서명을 반영하는 Cryostat Invocation
오브젝트를 사용하여 initiazlied됩니다. camel-soap DataFormat은 marshal()
프로세서가 호출될 때 Cryostat 헤더 및 본문의 필드에 있는 콘텐츠를 Cryostat-WS 매핑에 따라 매핑합니다.
BeanInvocation beanInvocation = new BeanInvocation(); // Identify the target method beanInvocation.setMethod(MultiPartCustomerService.class.getMethod("getCustomersByName", GetCustomersByName.class, com.example.customerservice.multipart.Product.class)); // Populate the method arguments GetCustomersByName getCustomersByName = new GetCustomersByName(); getCustomersByName.setName("Dr. Multipart"); Product product = new Product(); product.setName("Multiuse Product"); product.setDescription("Useful for lots of things."); Object[] args = new Object[] {getCustomersByName, product}; // Add the arguments to the bean invocation beanInvocation.setArgs(args); // Set the bean invocation object as the message body exchange.getIn().setBody(beanInvocation);
312.5.2. 다중 파트 응답
다중 파트 soap 응답은 soap 본문의 요소를 포함할 수 있으며 soap 헤더에 하나 이상의 요소를 가질 수 있습니다. camel-soap DataFormat은 soap 본문의 요소를 차단 해제하고(있는 경우) 교환에서 out 메시지의 본문에 배치합니다. 헤더 요소는 해당 CryostatB 매핑된 오브젝트 유형으로 마샬링되지 않습니다. 대신, 이러한 요소는 카멜 아웃 메시지 헤더 org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST
에 배치됩니다. 요소는 ignoreJAXB Cryostat 속성 설정에 따라 요소 인스턴스 값 또는 recordB
Cryostat 값으로 표시됩니다. 이 속성은 camel-jaxb에서 상속됩니다.
ignoreUnmarshalledHeaders
값을 true
로 설정하여 camel-soap DataFormate에서 헤더 콘텐츠 all-together를 무시하도록 할 수도 있습니다.
312.5.3. 홀더 오브젝트 매핑
Cryostat-WS는 In/Out
및 Out
매개변수에 대해 type-parameterized javax.xml.ws.Holder
오브젝트를 사용하도록 지정합니다. Holder
오브젝트는 Cryostat Invocation
을 빌드할 때 사용하거나 매개 변수화된 유형의 인스턴스를 직접 사용할 수 있습니다. Holder's 클래스에 대한 CryostatB 매핑에 따라 camel-soap DataFormat marshals Holder 값입니다. unmarshalled 응답의 'Holder
오브젝트에 대한 매핑이 제공되지 않습니다.