Not logged in | Login
Using Normalized Message Properties With HTTP Binding Component
Normalized Message properties are commonly used to specify metadata that is associated with message content. javax.jbi.security.subject and javax.jbi.message.protocol.type are two examples of standard normalized Message properties defined in the JBI Specification.
Normalized Message properties are used to provide additional capabilities in Open ESB, such as:
Some of the use cases mentioned above require protocol/binding specific properties, typically used by a particular binding component. Other properties are considered common or general purpose properties that all participating JBI components make use of, for example, the message ID property, which can be utilized to uniquely identify or track a given message in the integration.
The Normalized Message properties are accessed from the BPEL Designer Mapper view. When you expand a variable's Properties folder it exposes the variable's predefined NM properties, as well as the regular BPEL specific WSDL properties used in correlation sets, assigns, and to build expressions . If the specific NM property you need is not currently listed, additional NM properties can be added.
Predefined Normalized Message properties are ready for use, from a variable's Properties file.
To use predefined normalized message properties in a BPEL process:
If the specific NM Property you want is not listed, you can add additional NM properties.
There are two options available when adding NM Properties:
To add a Normalized Message Property Shortcut to a BPEL process:
Data copied from an NM property or an NM property shortcut generates code that is similar to the following:
<from variable="inputVar" sxnmp:nmProperty="org.glassfish.openesb.file .outbound.dcom.username"/>
Data copied from WSDL properties based on NM property generates code that is similar to the following:
<from variable="inputVar" property="ns3:DemoNMProperty"/>
When properties and NM properties are used to build an expression, code similar to the following code is generated:
<from>concat(bpws:getVariableProperty('inputVar', 'ns3:DemoNMProperty'), sxnmp:getVariableNMProperty('inputVar','org.glassfish.openesb.file.outbound.dcom. username'))</from>
An NM property used in a condition generates code that is similar to the following:
Normalized Message properties are either General, available to all participating JBI components, or protocol/binding specific, used by a particular binding component.
Table 19 General Normalized Message Properties
|Property Name||Type||Description and Use|
|org.glassfish.openesb.messaging.groupid||java.lang.String||Uniquely identifies a message with the group to which a message belongs. For example, it applies the RM sequence group number for SOAP messages, or a time stamped file name (where the file record message comes from).This property is optional.|
|org.glassfish.openesb.messaging.messageid||java.lang.String||Uniquely identifies a message. For batch processing this might be a record number (for example, a particular record in a file), or a GUID.This property is mandatory.|
|org.glassfish.openesb.messaging.lastrecord||java.lang.String||The value is a string representation of boolean ("true" or "false"). This property can be used to signal the last record in a group, e.g. the last record in a RM sequence for SOAP messages, or the last record in a file when multiple record processing is turned on for File BC.This property is mandatory.|
|org.glassfish.openesb.exchange.endpointname||java.lang.String||The value a string representation of the endpoint name set on the exchange. This represents the endpoint name of the "owner" of the message, and could be made available by JBI runtime.|
The following properties are specific to the HTTP (SOAP) Binding Component.
Table 20 SOAP HTTP Binding Component NM Properties
|Property Name||Type||Description and Use|
|org.glassfish.openesb.headers.soap||java.util.Map||The map contains a list of SOAP header elements. The key is the QName of the SOAP header.The value is a DocumentFragment object. The DocumentFragment has one node in it, the header element itself.|
|org.glassfish.openesb.inbound.http.headers||java.util.Map||The map contains a list of HTTP headers. The key is the HTTP header name.The value is the string representation of the HTTP header value.This property provides all of the HTTP headers that the HTTP BC receives in the incoming message. The map also includes two additional properties that the HTTP Binding Component populates based on the transport context: ClientHostName and ClientPortNumber, which provide the information about the client's host IP address and port number|
|org.glassfish.openesb.outbound.http.headers||java.util.Map||The map contains a list of HTTP headers. The key being the HTTP header name.The value is the string representation of the HTTP header value. This property is used to allow any custom HTTP headers to be propagated to the outgoing service invocations.|
|org.glassfish.openesb.outbound.custom.properties||java.util.Map||The map contains a list of custom properties*. The map key is a string.The map value can be any Object.|
|org.glassfish.openesb.inbound.address.url||java.lang.String||On the receiving (server) side, this property is populated by the HTTP Binding Component with the server address URL (for example, address URL on soap:address)|
|org.glassfish.openesb.outbound.address.url||java.lang.String||On the sending (client) side, this property is used to dynamically overwrite the default address defined in the SOAP or HTTP binding WSDL. The HTTP Binding Component does a basic URL validation on the address set on the property before using it to invoke an external service. If it is an invalid URL, the HTTP BC proceeds with the service invocation using the statically configured address URL.|
|org.glassfish.openesb.outbound.basicauth.username||java.lang.String||This is a sender (client) side property only. When set, the user name will be set on the HTTP basic authentication header.|
|org.glassfish.openesb.outbound.basicauth.password||java.lang.String||This is a sender (client) side property only. When set, the user name will be set on the HTTP basic authentication header.|