I've published another article on the developerWorks SOA and Web services
section, "Why do developers need an Enterprise Service Bus?
I hope programmers will find this pretty interesting. I've tried to avoid the hype about why ESB
s are so great, and focus on what capabilities does this really provide developers. I think the article makes several good points along these lines.
For one, it compares three different ways to invoke a service (complete with pictures!):
- Synchronous direct invocation
- Synchronous brokered invocation
- Asynchronous brokered invocation
In doing so, it shows how a lot of the complexity of direct invocation is encapsulated within the ESB when it brokers the invocation, simplifying the service consumer and keeping the service provider simple as well.
It also talks about the Four Capabilities of an ESB
and how an ESB is different from a Message Bus
So, I hope you find this article useful.
For those of you keeping track, this makes my third article published in August. The other two are the ESB for Architects Article
and the SIB Pub/Sub Article
. Those should keep you busy for a while.An asynchronous enterprise service bus
There's a new book on WAS 6
in the WebSphere Redbooks Domain
that looks pretty interesting: WebSphere Application Server V6 Network Deployment: High Availability Solutions
(SG24-6688-00; draft). The current version is a draft, so keep an eye out for updates.
The high availability capabilities of clustered J2EE app servers like WAS ND
is pretty incredible. Most applications and middleware systems don't have any built-in HA capabilities; each part is a single instance and if it fails, it fails. To get HA, you need hardware clustering like High Availability Cluster Multiprocessing
WAS ND acts like a operating system for its apps. An app deployed in a properly configured WAS ND cluster benifits from workload management
(WLM), which runs multiple instances of the app (the EAR file) and provides load balancing and failover between the instances. Even when an app server dies, what the app clients see is uninterrupted services.
High availability was good in WAS 5.0/5.1, but it's improved greatly in WAS 6. For more info, see:
This is kind of old news, but newish to me, and perhaps will give you a useful heads up. In Eclipse 3.0 (which, for example, RAD 6
is built on), the plug-in architecture has been completely rearchitected to conform to the OSGi bundle specification.
The Open Services Gateway Initiative
(OSGi) may seem like yet another darn spec about yet something else computerdom can't live without, but this one seems to be pretty important and catching on. As I understand it, the OSGi spec defines a component model with two main capabilities:
- bundles -- Equivalent to Eclipse plug-ins, a component of code with a defined API that provides specific functionality.
- services gateway architecture -- Makes the bundles accessible as services.
Here's the description
of OSGi on developerWorks:
OSGi is a set of Java-based APIs to implement a services gateway architecture. This services gateway is inserted between the external network and internal network and devices and will aid the delivery of managed broadband services to networks in homes, cars and other environments.
The OSGi FAQ
helps explain what the spec is about. The Eclipse OSGi project
helps explain how OSGi fits in with Eclise; the first two paragraphs of this book excerpt
Besides Eclipse, why is OSGi important? It sounds like a good basis for SOA. Potentially, a services provider (SOA-SP)
could use OSGi compliance to organize the services and make them available to clients/coordinators. Apparently I'm not the only one thinking along these lines: See this recent announcement from IBM in ee Product Center
and the docs
for a lightweight container called jadabs
Is OSGi the future of SOA?
I've talked about
the Apache Harmony
project, an effort to develop an open source implementation of the J2SE 5.0 spec
. Some question why computerdom
needs an open source Java when you can just download the JRE
free from Sun.
Floyd Marinescu has a good summary on his blog, Dynamic Semantics
: clear problems that having Apache Harmony will solve
. It summarizes the comments on the IBM commits a full time employee to the Harmony Project
thread on TSS
. (I commented on the same news in IBM Joins Project Harmony
An interesting point to me is that Linux folks are apparently interested in having a JRE
be part of the OS install. Back around 1990, legend has it, Sun was interested in having ParcPlace Smalltalk
built into SunOS, but the parties never worked out the licensing. Back when Oak became Java
, I thought part of the idea was that Solaris would have Java built in and therefore be able to run any Java program (without the Solaris user having to separately download and install the JRE). Now it sounds like the Linux folks may actually, finally make this happen. Cool.
IBM is announcing two new integration products in the WebSphere brand
: WebSphere Process Server and WebSphere Enterprise Service Bus.
I've talked about ESBs a couple of times:
Here are some articles announcing the new products:
Update: There's now a press release: IBM Unveils New SOA Software and Services, Expands Partner Initiative to Help Clients Manage Business Processes
Also, an additional article on DevX: IBM Beefs Up SOA Play
IBM now has a web site to explain its SOA efforts: Service Oriented Architecture (SOA) from IBM
. The site helps explain what SOA is and why it's important.
There is also an IBM SOA Self Assessment
for determining your organization's readiness for SOA. According to IBM, the SOA assessment tool enables clients to determine:
- Their level of SOA sophistication described in clear, straight-forward terms
- Advantages that are already attainable with their existing integration infrastructure and current SOA readiness
- Benefits they can accrue in the future as they evolve their integration capabilities and service-orientation
- Recommendations for achieving greater business flexibility through improved SOA readiness
There will also be an SOA webcast on Sept. 20th
by Robert LeBlanc, who is the Software Group manager in charge of all WebSphere products. You can register for the webcast now.
There's also a site for IBM Business Partners to learn more about using WebSphere products, including SOA: WebSphere Innovation Connection Online for IBM Business Partners
. There's also been a good spot on developerWorks for a while now that's good for learning about SOA, New to SOA and Web services
As you may have seen and heard, IBM made a flurry of announcements on Tuesday concerning its vision and support for SOA, ESB, and the software and services to help its clients make this conversion. I've talked about the software part, New WebSphere Integration Products
, and the overall vision, IBM's SOA Materials
All this fanfare is significant. As SYS-CON describes it
, "Never before had so many new pieces of the enterprise software jigsaw been presented by one company at one and the same time." They also say "[IBM] is not looking over its shoulder, not at Oracle, SAP, BEA, Microsoft nor anyone else" but rather IBM is looking forward to where it believes it needs to take its IT customers.
These announcements are generating a lot of industry commentary. Here are some interesting items:
Say you're trying to start a WAS server but cannot because global security is enabled and its login is no longer valid? Then what do you do?
Bill has documented a solution
to this problem. Basically, he ran wsadmin in local mode
--which lets wsadmin run without a running app server to connect to--and then disabled security
. Pretty clever.
But wait a second: Anyone can just turn off global security? That seems like a bit of a security hole! Turns out this isn't as bad as it might seem.
When you run
in local mode, you basically get a fancy editor for modifying the WAS configuration files (a glorified Notepad
). Like with a text editor, you must have OS permissions to edit the files. Normally, you install WAS as root
(on Unix/Linux), so the files are owned by root, so you have to be logged in as root to modify the files.
So to run and use
in local mode, you must be logged in as a user which has OS permissions to edit the configuration files, which basically means you must be logged in as root. And if you're root, you control the machine, including WAS. Therefore, this isn't really a security hole after all. Interesting, huh?
There's a blog by an anonymous Microsoft employee who calls himself Mini-Microsoft
. It apparently gives the inside story on what's happening at Microsoft.
It seems to be a pretty unvarnished look at what's going on in the company. "Microsoft's Company Meeting is this Friday at SafeCo Field in Seattle. To some, it's a huge waste of time and money with little benefit.
" He has a couple of postings, Troubling Exits At Microsoft - Business Week
and Microsoft Company Meeting... I'm looking for some dates!
, that discuss Business Week
's cover article on Microsoft, "Troubling Exits At Microsoft
." He also discusses Forbes
"Microsoft's Midlife Crisis
IBM has now posted product pages for its New WebSphere Integration Products
The products and their pages are:
WID is the Eclipse-based IDE
for WPS and WESB, the successor to WebSphere Studio Application Developer Integration Edition
(WSAD-IE) (analogous to RAD
's relationship to WAS
). The WESB materials include a WESB FAQ
There's also a new article on WPS: "WebSphere Process Server: IBM's New Foundation for SOA
." The lead author, Wolfgang Kulhanek, has been featured in a Meet the Experts
: Wolfgang Kulhanek on WebSphere Business Integration
Of course, all of this ties into the recent Flurry of IBM SOA Announcements
and IBM's SOA Materials
Oracle and IBM are announcing an agreement to work together so that appliations developed for the Oracle Fusion Middleware
platform will run natively in WebSphere products, including WebSphere Application Server, WebSphere Portal, and WebSphere Process Server.
Here's the press release:
Here are some articles on the announcement:
Among other things, this announcement shows the two companies--Oracle and IBM--working together, which is significant considering how much they compete against each other.
When we talk about communication between computers, we tend to use the word "protocol" a lot. But what is a protocol?
Here are some takes on the term:
- Wikipedia: A protocol is a convention or standard that controls or enables the connection, communication, and data transfer between two computing endpoints.
- Webopedia ISP Glossary: The protocol defines a common set of rules and signals that computers on the network use to communicate.
- AIX Information Center: A set of rules for handling communications at the physical or logical level.
OK, those definitions are mostly talking about wire protocols like Ethernet
. So what makes Internet Protocol (IP)
, for example, a protocol? These definitions don't really help.
I can't find a reference for this, but here's the best definition I've ever heard: A protocol is a format over a transport.
What does that mean?
- format -- The structure of the data, as represented sitting in a memory space. Examples: XML, CSV.
- transport -- The means for moving data between computers over a network.
Many (most? all?) protocols are packet-based, so the data must be divided into pieces and each piece must be put in a packet; that's the format the transport can transport.
A funny thing about protocols is that what looks like a protocol at one level merely looks like a transport at another level. IP is a protocol--its data must be IP packets that are moved over a transport like Ethernet. But when getting data over a protocol like FTP
, or SMTP
, IP looks like just a transport. In turn, each of those protocols looks like just a transport for the file, HTML document, or e-mail message you're sending across the network.
So, a protocol is a format over a transport, and a protocol at one layer is a transport for the next layer.
The September 2005 issue of IBM WebSphere Developer Technical Journal
is now available.
I wrote this month's Comment Lines (but you may want to read it anyway): "Where can I learn about WebSphere?
" These resources should already be well known by frequent readers of this blog, but now it's all gathered in one place.
And, of course, there's other good stuff:Allow me a moment to pat myself on the back:
If I may say so myself (and I guess I am), I'm kinda impressed that the topics that are coming up in these articles are topics that I'm already discussing on this blog, often several months ago. Regular readers of this blog should already be pretty in tune with what's going on of interest and better prepared to digest the material in the Tech Journal. OK, I'm done now.
So, lots of good stuff to go read. Enjoy.
WebSphere Process Server
and WebSphere Integration Developer
are now available. (WebSphere ESB
is not yet available.) See More Info on WPS, WESB, and WID
for a little recent history.
For WPS: Check out the announcement letter
) and data sheet (PDF)
for details. There is also some product documentation
For WID: There will be an announcement letter
(but it's not yet available). The data sheet (PDF)
is already available.
Last but not least, the Info Center
for both WPS and WID is now online.
There's a new article in the developerWorks WebSphere zone
, "Introducing XMS -- The IBM Message Service API
." XMS brings a JMS
-like API to non-Java clients.
XMS, the IBM Message Service API, provides a consistent messaging API across client languages and across messaging products. The messaging products currently supported are WebSphere MQ
(duh!), WBI Message Broker
, and Default Messaging
(part of the SIB
) in WAS 6
. The client languages supported are C/C++ (see IA94: IBM Message Service Client for C/C++
) and .NET (see IBM Message Service Client for .NET Beta
). So if you're using the XMS API, even as you switch languages or messaging providers, your API stays the same, helping to minimize code changes. Much like the way JMS enables Java/J2EE programs to more easily switch messaging providers.
So far, XMS is just an IBM thing. However, I think IBM hopes that other vendors will adopt it for their messaging products. Then customers will be able to develop code that is more product- and vendor-independent.
The WebSphere MQ API (called MQI) also supports C/C++ and C#/.NET clients (as well as a slew of other languages). But XMS has some advantages: The pub/sub support in XMS is better, because you have methods to subscribe and unsubscribe, whereas with MQI you have to send those requests as messages. Meanwhile, Message Broker and Default Messaging don't really support C/C++ and C#/.NET at all, but now they do via XMS, and in a way such that the client doesn't really care which provider it's using.
So if you're using C++ or .NET and want to use the IBM messaging products, check out XMS, it'll make your job easier.