Monday May 28, 2007

JBI/SOA Tips: For Asynchronous, Peer-to-Peer Collaborations Use Multiple MEPs

For long-running, conversational, peer-to-peer collaborations, where there is an asynchronous lag between a request and a response with shared state use multiple Message Exchange Patterns (MEPs) with correlations ...


[Read More]

Sunday May 27, 2007

JBI/SOA Tips: Prefer Use of Document/Literal Rather than RPC

Prefer ‘document’ encoding and ‘literal’ use over other types for interoperability - Here's why ...


[Read More]

Friday May 25, 2007

JBI/SOA Tips: Favor Contract First Development (a.k.a. Top-Down approach)

This approach forces the designer to focus on messages and contracts as the key concepts in designing a service contract ...

Design By Contract

[Read More]

Thursday May 24, 2007

JBI/SOA Tips: The Wire Always Goes Forward never Back

Think of the Collaboration as an entity that relentlessly pushes forward - it may change but it never ‘goes back’ to a previous state ...

Compensation for Business Processes

[Read More]

Wednesday May 23, 2007

JBI/SOA Tips: Use Separate MEPs for Business Responses

Often the business response is not available quick enough to place the acknowledgment into the response ...


[Read More]

Tuesday May 22, 2007

JBI/SOA Tips: Message Exchange Patterns (MEPs) are the units of 'wire' collaboration

Message Exchange Patterns (MEPs) are the units of 'wire' collaboration and are the basic building-blocks  ...

Message Exchange Patterns are the units of wire collaboration

[Read More]

Monday May 21, 2007

JBI/SOA Tips: Use Correlation Values to Reference Shared State

Share conversational state on the wire using self-defined correlations in the message ...

Identifiers in the Message Property of WSDL

[Read More]

Sunday May 20, 2007

JBI/SOA Tips: Identify Shared Conversational State Upfront

Identify element(s) in the message that can serve as a shared state-holder ...

Identify Shared Conversational State

[Read More]

JBI/SOA Tips: What is a Conversation in a collaboration wire-design

The conversation is a new computing context that you will have to think about and handle in wire design ...


[Read More]

Saturday May 19, 2007

JBI/SOA Tips: Protocol Is Not Part of the Business Message

Do not place information that you will need to reuse to process a collaboration in the Message header ...

Message body has to stand alone 


[Read More]

Thursday May 17, 2007

JBI/SOA Tips: Evolving Global Collaborations - Version Number Message Wrappers

Explicitly add a version number attribute to the first element of both the request and the response message...

Version Number message wrappers 


[Read More]

Wednesday May 16, 2007

JBI/SOA Tips: For Large Messages Use MTOM

Use multi-part MIME to physically carry the message so at any point, you don’t have to parse the entire message at once...

Multipart MIME

[Read More]

Tuesday May 15, 2007

JBI/SOA Tips: Use Unique Element to ‘Wrap’ Each Business Message

When designing global collaborations for wire-centric integration, ensure that the container of wrapped messages has a unique top-level element name...

Wrap Message with Unique Element Name

[Read More]

Monday May 14, 2007

JBI/SOA Tips: Collaboration Design for 'Wire' Centric Integration

Look into the individual pieces that make up the collaboration and discuss how to handle:
  • Information Exchange
  • Evolution
  • Compensation
  • Identity
  • Access/security

[Read More]

Saturday May 05, 2007

JBI/SOA Tips: Consider using a StaX-based parser to process huge XML datasets

Choose the right XML parser for your implementation. You have a choice of using either a DOM-based, SAX-based or a StaX-based XML parser.


[Read More]

Thursday May 03, 2007

JBI/SOA Tips: Separation of Concerns

The Abstract WSDL documents business-specific information. The Concrete WSDL however is technical in nature and may have nothing to do with business-specific information.

The WSDL Model

[Read More]

Wednesday May 02, 2007

JBI/SOA Tips: Cache wherever possible

Repeated calls over the network can degrade the performance of your system. For read intensive type services that provide relatively static content like historic data or catalog information, cache as much data as you can ...


[Read More]

Tuesday May 01, 2007

JBI/SOA Tips: Security/Performance Tradeoffs

If multiple short messages are being exchanged between the client and the service, setting up security either through SSL over HTTPS or WS-Security may not be optimal because of the handshake overhead involved in setting it up.


[Read More]

Monday Apr 30, 2007

JBI/SOA Tips: Stateless vs Stateful

WSDL-based Web Services define a stateless model and an unordered set of operations. WSDL and therefore WSDL-based web services do not have the concept of state  ...

[Read More]

Sunday Apr 29, 2007

JBI/SOA Tips: Do not use the SOAP action header for message routing purposes

Do not rely on the SOAP action header for message routing purposes. The HTTP binding SOAP action field is not available in the SOAP 1.2 specification and has already been deprecated in the WS-I basic profile specification too.


[Read More]

Saturday Apr 28, 2007

JBI/SOA Tips: Be aware of SOAP Verbosity (Message size overhead)

Depending on the nesting levels of the parameter types, XML and SOAP message overhead can grow significantly.


[Read More]

Friday Apr 27, 2007

JBI/SOA Tips: As much as possible, avoid using Base64 Encoded/Raw bytes in the message Body

At times an XML could contain characters or declarations that are not supported by SOAP or the runtime - examples are, DTD declarations, binary data, locale specific character encoding, etc. In such cases you may have to use Base64 encoding of the raw bytes into the message payload. You just have to be aware of these when you do so.


[Read More]

Thursday Apr 26, 2007

JBI/SOA Tips: Use strongly typed messages - Avoid use of xsd:any to represent the entire message Body

You have to stay away from the tendency to use an xsd:any element to represent your whole message body. 


[Read More]

Wednesday Apr 25, 2007

JBI/SOA Tips: Use strongly typed messages - Avoid use of xsd:string to represent the entire message Body

You have to stay away from the tendency to use an xsd:string element to represent your whole message body. 


[Read More]

Tuesday Apr 24, 2007

JBI/SOA Tips: Do not mix style/use in the same service

In the same service either expose all your operations with document/literal or as rpc/literal. Do not mix the style/use alternatives in the same Service.


[Read More]

Monday Apr 23, 2007

JBI/SOA Tips: Expose Coarse-Grained Service Interfaces to external Clients

Expose Coarse-Grained Service Interfaces to external Clients. Do not expose service interfaces that are fine-grained. Fine-grained service interfaces will kill system performance.


[Read More]

Sunday Apr 22, 2007

JBI/SOA Tips: Expose Request/Response Message Exchange Patterns to external Clients

When exposing a service interface to external clients, always expose Request/Response Message Exchange Patterns (MEPs) as much as possible since they work best with HTTP transports and provide interoperability.


[Read More]

Gopalan Suresh Raj, a Senior Software Architect, Published Author, and a Public Speaker, is a member of Sun Microsystems, Inc.'s Research and Architecture team. For the past several years he has been designing solutions using Java and C++.

Contact him at  or

His personal public profile is available at:


« July 2016