<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://luminoussheep.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Connectivity_Overview</id>
	<title>Connectivity Overview - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://luminoussheep.net/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Connectivity_Overview"/>
	<link rel="alternate" type="text/html" href="https://luminoussheep.net/mediawiki/index.php?title=Connectivity_Overview&amp;action=history"/>
	<updated>2026-04-16T20:37:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://luminoussheep.net/mediawiki/index.php?title=Connectivity_Overview&amp;diff=52&amp;oldid=prev</id>
		<title>Martin: Created page with &quot;= Integration = Ref: Enterprise Integration Patterns  Typical ways to integrate: # File transfer - bulk transfer - infrequent changes # Shared DB - data sharing # RPC - functi...&quot;</title>
		<link rel="alternate" type="text/html" href="https://luminoussheep.net/mediawiki/index.php?title=Connectivity_Overview&amp;diff=52&amp;oldid=prev"/>
		<updated>2021-09-14T21:24:13Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Integration = Ref: Enterprise Integration Patterns  Typical ways to integrate: # File transfer - bulk transfer - infrequent changes # Shared DB - data sharing # RPC - functi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Integration =&lt;br /&gt;
Ref: Enterprise Integration Patterns&lt;br /&gt;
&lt;br /&gt;
Typical ways to integrate:&lt;br /&gt;
# File transfer - bulk transfer - infrequent changes&lt;br /&gt;
# Shared DB - data sharing&lt;br /&gt;
# RPC - functionality sharing&lt;br /&gt;
# Messaging - frequent small data exchange&lt;br /&gt;
&lt;br /&gt;
= What to use when =&lt;br /&gt;
* JDBC - connector for relational databases&lt;br /&gt;
* Asynchronous messaging - loosely coupled integration - JMS or JCA&lt;br /&gt;
** JMS also supports quality of service, higher throughput, guaranteed delivery&lt;br /&gt;
** Asynchronous model more complex&lt;br /&gt;
* Synchronous - tightly coupled integrations - JCA/RPC - SOAP/CORBA/RMI&lt;br /&gt;
** JCA for high quality request processing and error handling&lt;br /&gt;
* Legacy communication - JCA&lt;br /&gt;
&lt;br /&gt;
== Loosely coupled requirements ==&lt;br /&gt;
* data encapsulation/encoding&lt;br /&gt;
* allow transformations inside channel&lt;br /&gt;
* queue requests - don&amp;#039;t depend on availability&lt;br /&gt;
* location - logical address - configurable outside code&lt;br /&gt;
&lt;br /&gt;
== RPC ==&lt;br /&gt;
=== Advantages ===&lt;br /&gt;
* synchronous&lt;br /&gt;
* data encapsulated&lt;br /&gt;
&lt;br /&gt;
=== Disadvanates ===&lt;br /&gt;
* tight coupling - parameters, availability&lt;br /&gt;
* latency&lt;br /&gt;
&lt;br /&gt;
== Shared DB ==&lt;br /&gt;
=== Advantages of a shared DB ===&lt;br /&gt;
* data always current&lt;br /&gt;
* no need to resolve inconsistent data from different sources&lt;br /&gt;
* enforced data quality - DB constraints&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages of a shared DB ===&lt;br /&gt;
* tightly coupled&lt;br /&gt;
* difficult to define a shared schema that works for all systems&lt;br /&gt;
* semantic dissonance&lt;br /&gt;
* performance bottleneck - all applications fight for one resource&lt;br /&gt;
* distribution/location&lt;br /&gt;
&lt;br /&gt;
== JMS ==&lt;br /&gt;
=== Advantages of JMS ===&lt;br /&gt;
* better encapsulation than shared DB&lt;br /&gt;
* more reliable than RPC&lt;br /&gt;
** automatic retries for sending and receiving messages&lt;br /&gt;
* background processing - scalability&lt;br /&gt;
* allows both sender and receiver to operate at maximum pace- variable timing&lt;br /&gt;
** control over rate of processing independent on external load&lt;br /&gt;
* ideal for disconnected systems - PDAs and laptops&lt;br /&gt;
* mediator pattern - messaging system can provide high availability, load balancing, QoS, performance tuning&lt;br /&gt;
* may be asynchronous or synchronous - request-reply&lt;br /&gt;
* asynchronous - reduces impact of latency - remote calls&lt;br /&gt;
* supports different topologies: broadcast/point to point/routing&lt;br /&gt;
&lt;br /&gt;
=== Disadvantages of JMS ===&lt;br /&gt;
* Difficult programming model to understand and debug&lt;br /&gt;
** logic spread around event handlers&lt;br /&gt;
** concurrency&lt;br /&gt;
** may need to track context on callbacks&lt;br /&gt;
** Out of sequence issues&lt;br /&gt;
* Many systems require synchronous responses&lt;br /&gt;
* Performance - overhead of sending large messages or lots of small messages&lt;br /&gt;
* Availability&lt;br /&gt;
* Vendor specific&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Synchronous JMS ===&lt;br /&gt;
Typically done with a temporary queue&lt;br /&gt;
* see QueueRequester/TopicRequester&lt;br /&gt;
* problems&lt;br /&gt;
** queue deleted when context goes - lost on crash (temporary queues and messages deleted on connection closing)&lt;br /&gt;
* consider asynchronous callback instead&lt;br /&gt;
&lt;br /&gt;
= Role of the Resource Manager =&lt;br /&gt;
http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/transactions/transactions9.html&lt;br /&gt;
&lt;br /&gt;
Three types:&lt;br /&gt;
== JDBC ==&lt;br /&gt;
* Manage transactions across multiple components (possibly different tiers)&lt;br /&gt;
* Multiple JDBC resources may not be portable&lt;br /&gt;
&lt;br /&gt;
== JMS ==&lt;br /&gt;
* Manage transactions across multiple components (possibly different tiers)&lt;br /&gt;
* Multiple JMS providers may not be portable&lt;br /&gt;
* Messages not transmitted until transaction committed - transaction rollback = message discarded&lt;br /&gt;
* Messages not consumed until transaction committed - transactions roll back = put back on queue&lt;br /&gt;
* Sending and waiting for an acknowledgment can not be done within the same transcation&lt;br /&gt;
&lt;br /&gt;
== JCA ==&lt;br /&gt;
* RA can choose level of transaction support&lt;br /&gt;
# NoTransaction&lt;br /&gt;
# LocalTransaction - only one resource can participate in transaction&lt;br /&gt;
# XATransaction ( must also support LocalTransaction) - Two phase commit - multiple resources can participate.&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
</feed>