Enterprise Integration
Sep 23 2010
Practical Applications of BizTalk Server, Windows Workflow and SQL Server Integration Services
In an effort to maintain control over the proliferation of application servers and data, many organizations have undertaken projects to consolidate and integrate systems. One of the first hurdles in undertaking an integration project is determining the most efficient integration technology. Unfortunately, just within the Microsoft stack, there are technologies that consistently cause confusion and are often misused. For example, the lines are continuing to blur when comparing BizTalk Server to Windows Workflow especially now that hosting Workflows using Windows Server AppFabric can provide functionality that appears similar to BizTalk. However, there are still quite a few giveaways when you need one versus the other. Underneath most applications, we commonly find a data platform and for many organizations, their platform of choice is SQL Server. The intersection of just these 3 technologies leads many to ask the question, "if I want to integrate System A with System B, which technology should I use?" Many times there are no hard and fast rules, but with some careful thought and consideration of organization demands and technological capabilities, the fog will lift and a clear answer will emerge. This post will by no means provide the definitive answer, but I will provide a few common scenarios that might help illuminate the path.
Jul 22 2010
HelloWorld Using JSF 2 And CDI
In this blog I'm going to go over the steps to get a simple HelloWorld web-app up and running on JBoss 6 using JSF 2 and CDI. Background information and full documentation for the technologies used can be found at the Java EE 6 home page and Weld documentation site.
Jul 21 2010
Transactions, Part 2 - Writing Data Reliably
Programming With Transactional Systems
Commit and Rollback
Transactions either commit or rollback. Until a transaction is committed, it is assumed none of the work it has done is saved. Once a commit signal is issued by the application (either through an API call, or by a container), this work is actually performed by the transaction processing engine that's being used. If for some reason the commit fails due to an error scenario, or some other runtime exception occurs, we assume that the integrity of the transaction has been compromised and the transaction rolls back, removing any work done up to that point. When a rollback occurs, the transaction must be resubmitted.
Jul 06 2010
Transactions, Part 1
Preface
This work came out of an lack of consistent, cohesive documentation for beginners on transactions. Similar material does exist, but much of it suffers from either being hard to find, scattered and spotty, or not written at a basic enough level where requisite knowledge is not required in order to understand the material covered. Over the course of this series of articles, we'll talk about what concepts you need to know in order to effectively and correctly make use of transactions in your applications. This series of articles is written as a set of core concepts to understanding the basics of transactions, and is intended for junior to intermediate level developers, but my hope is that others will benefit from this series as well. As always, feedback is greatly appreciated.What is a transaction?
Etymology
The word transaction comes from the Latin word transactionem meaning "an agreement, accomplishment," which itself comes from the past participle of the verb transigere, transactus, meaning "drove or carried through."
Transactions defined
The word's definition is typically related to business or economics, meaning a single business deal, or an exchange of goods between two parties. Most introductions to transactions use an example of debiting one bank account and crediting another. When we remove funds from one account, we need to make sure that they are deposited into the other. If something fails (sufficient funds do not exist in the account being debited, or the account being credited has been closed) then both accounts need to be returned to their original state before the exchange began. This is actually a very good example, but how does that apply to software?
Let's back up for a second. If we focus on what's going on, we begin to see there are two distinct activities in play:
- Grouping a set of multiple changes together that all have been applied successfully, or, in the event of a single failure, that all need to be undone.
- Managing (or coordinating) the execution of these changes, when their interactions might interfere with one another.
Examples of Transactional Systems
Like many other terms in the software lexicon such as "class", "object", "system" and "code", the definition of the word "transaction" suffers a bit from the word's inherent over-abstraction;
Jan 06 2010
A "First Look" at ServiceMix 4
I spent some time recently getting myself oriented with the open source offerings in the Enterprise Service Bus area. My intent was specifically to focus on the recently released Version 4 of ServiceMix. However, the latest release is only a milestone release and is incomplete in many respects. Nonetheless, I attempted to identify and evaluate the value of this release, at least as it is intended by the authors. This necessarily involved reviewing release 3 and making some assumptions about their inclusion in release 4.
Overview
ServiceMix is intended to be a robust, enterprise service bus which offers tools and frameworks to allow diverse enterprise systems to be integrated to solve business problems or take advantage of business opportunities. Its value comes in providing an easier way to integrate systems of different architectures, languages, and protocols in a consistent, repeatable, and manageable way. While there are diffe