Java Business Integration: A Foundation for SOA (TS-7765)
Enterprise Integration:
In the past, largely point-to-point. When more than 2 applications emerge, it become difficult to solve. Introduced technical coupling. Messaging is preferred since it leads to a decoupled approach. Brokers reduce connections.
ESB introduces better management solutions. XML-based messaging provides a cheaper solution with better standardization of message formats.
SOA is a system structuring principle. Function are available as services: defined interface, maximize decoupling, encourage reuse, enable changes. Increases the likelihood of reuse since they are fewer dependencies. Services are accessed through common protocols. Internet protocols led to web services. SOA implementations can use a variety of protocols.
Business functions as services decouples those services in terms of their technologies. Functions are re-composable through re-use.
JBI (JSR 208) was recently finalized, reference implementation is available as open-source software. JBI is a standard meta-container for integrated services. Plug-ins for engines (provide business logic and functions) and bindings (handle communication protocol details). A Normalize Message Router handles communication between engines and bindings. Works with J2SE & J2EE.
JBI core services include orchestration (BPEL), transformation (XSLT), J2EE features, JMS, etc. JBI providers describe their services through messages, which are primarily XML. Second, providers must describe operations and their dependencies. Operations and services are aggregated and published using WSDL.
Provide local services: transformation (XSLT), business logic (EJBs), business processes (BPEL). The consumption of services is represented by orchestration functions.
Bindings components, like engines, are pluggable and can be both consumers and producers. They must not contain business logic. This means that messaging formats are driven by engine service configuration, even though it is handled by bindings. WSDL is used strictly from the producer perspective. XML bindings allow for non-XML message payloads (i.e. images, binary content).
All communication between the components is conducted through the "normalized message router." Normalized Messages is a WSDL abstract message )WSDL interface operation message definition). It's also composed of properties (metadata): protocol-supplied context information, security tokens, transaction information, and data other components may recognize.
Message exchanges are based on WSDL 2.0 message exchange patterns. There are two node types: service provider, and service consumer. Almost exclusive an in-out message exchange pattern. There is a lifecycle for each message exchange. Others: one-way, reliable one-way, request-response, and request-optional-response (only return value can be false, indicating invalid input; otherwise, no return value).
A service engine can be moved to another container or implementation by simply introducing a new binding configuration registered with the Normalize Message Router (NMR). This is the Enterprise Service Bus (ESB).
Component life cycle leaverages JMX for installation, starting and stopping. Packaging schema is portable, so it can simplify use for all parties.