ebcore-cppa message
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]
Subject: Split, join and message compression in CPA 3
- From: "Pim van der Eijk" <pvde@sonnenglanz.net>
- To: <ebcore-cppa@lists.oasis-open.org>
- Date: Tue, 7 Sep 2010 22:15:41 +0200
Hello,
Part 2 of ebMS 3.0
defines a new protocol in chapter 4 to send large messages as fragments and
reassemble them after receiving the fragments. This protocol uses a small
set of configration properties (section 4.5), and the fact that this protocol is
used at all needs to be indicated.
The proposal is to
define a new group Splitting. The logical place for this seems to be in the
sender and receiver bindings section of the DocExchange group, meaning:
messaging sent over a channel using this document exchange use this split, join,
message compression feature.
<!-- Split, join, message compression
-->
<xsd:element name="Splitting"
type="tns:SplitJoinCompressType"
substitutionGroup="tns:DocExchangeModuleHead">
</xsd:element>
<xsd:complexType
name="SplitJoinCompressType">
<xsd:complexContent>
<xsd:extension
base="tns:DocExchangeModuleBaseType">
<xsd:sequence>
<xsd:element
ref="tns:SplitProtocol" />
<xsd:element
ref="tns:SplitProtocolBinding" minOccurs="0"
/>
<xsd:element ref="tns:FragmentSize"
/>
<xsd:element
ref="tns:RoutingProperties"
/>
<xsd:element
ref="tns:CompressionAlgorithm" minOccurs="0"
/>
<xsd:element ref="tns:JoinInterval"
minOccurs="0"
/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="SplitProtocol"
type="tns:SplitProtocolType" />
<xsd:simpleType
name="SplitProtocolType" >
<xsd:union
memberTypes="tns:non-empty-string tns:CPASplitProtocolType"/>
</xsd:simpleType>
<xsd:simpleType
name="CPASplitProtocolType">
<xsd:restriction
base="xsd:normalizedString">
<xsd:enumeration
value="http://docs.oasis-open.org/ebxml-msg/v3.0/ns/mf/2010/04/"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element
name="SplitProtocolBinding" type="tns:non-empty-string"
/>
<xsd:element name="FragmentSize" type="xsd:positiveInteger"
/>
<xsd:element name="RoutingProperties"
>
<xsd:complexType>
<xsd:sequence>
<xsd:element
ref="tns:Property" maxOccurs="unbounded"
/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Property"
type="tns:non-empty-string" />
<xsd:element name="CompressionAlgorithm" type="xsd:string"
/>
<xsd:simpleType
name="CompressionAlgorithmType">
<xsd:union
memberTypes="tns:non-empty-string tns:CPACompressionAlgorithmType"/>
</xsd:simpleType>
<xsd:simpleType
name="CPACompressionAlgorithmType">
<xsd:restriction
base="tns:non-empty-string" >
<xsd:enumeration
value="gzip" />
<xsd:enumeration value="compress"
/>
<xsd:enumeration value="deflate"
/>
<xsd:enumeration value="identity"
/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element
name="JoinInterval" type="xsd:duration" />
The following
example shows how it is used. The example sets a maximum
fragment size of 1 MB. Gzip compression is used and the receiving MSH has
10 hours to reassemble all fragments.
<ebXMLSenderBinding
version="3.0">
<SenderNonRepudiation>
<NonRepudiationProtocol>wss-v1.1-spec-errata-os-X509TokenProfile</NonRepudiationProtocol>
<HashFunction>http://www.w3.org/2000/09/xmldsig#sha1</HashFunction>
<SignatureAlgorithm>http://www.w3.org/2000/09/xmldsig#rsa-sha1</SignatureAlgorithm>
<SigningCertificateRef
certId="Buyer_SigningCert"/>
</SenderNonRepudiation>
<ReliableMessaging>
<Retries>3</Retries>
<RetryInterval>PT2H</RetryInterval>
<MessageOrderSemantics>NotGuaranteed</MessageOrderSemantics>
</ReliableMessaging>
<Splitting>
<SplitProtocol>http://docs.oasis-open.org/ebxml-msg/v3.0/ns/mf/2010/04/</SplitProtocol>
<FragmentSize>1000000</FragmentSize>
<RoutingProperties>
<Property>foo</Property>
<Property>bar</Property>
</RoutingProperties>
<CompressionAlgorithm>gzip</CompressionAlgorithm>
<JoinInterval>PT10H</JoinInterval>
</Splitting>
</ebXMLSenderBinding>
In the context of a version
3.0 ebXMLSenderBinding or ebXMLReceiverBinding container, the default value
for the SplitProtocolBinding is the binding defined in section 4.4.2 of ebMS 3.0
Part 2.
In this example
the ebMS message properties
"foo" and "bar" are to be copied from the large split message to each
fragment.
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]