Atom Atom feed

Solved: The Chicken and Egg Problem

The egg comes first.

There is no sense Slashdotting Slashdot, but this problem is so important that I think a full fledged link is warranted.

Slashdot: "It seems scientists and philosophers now agree which came first. The Egg. From the CNN article: 'Put simply, the reason is down to the fact that genetic material does not change during an animal's life. Therefore the first bird that evolved into what we would call a chicken, probably in prehistoric times, must have first existed as an embryo inside an egg. Professor John Brookfield, a specialist in evolutionary genetics at the University of Nottingham, told the UK Press Association the pecking order was clear.' So, does this mean we can now show P=NP?"

Tags :

Celtix 1.0: First Impression

It says it's an ESB. But what is an ESB?

This month's OCI Java lunch is a special one, because we are fortunate enough to have secured the appearance of Dr. Weiqi Gao, who will be talking about a new open source product called Celtix.

First person is Weiqi now.

I first encountered Celtix about a month ago, and have been playing with it a little bit. I wrote a very preliminary experience report 16 days ago, mostly about some trivial stuff.

What is an ESB

An ESB is a piece of IT infrastructure that shoots (XML) messages across a message-oriented middleware core (JMS).

The term ESB was popularized by a David Chappell book of the same name. Now that it is popular, many products out there start to use the ESB buzzword to spruce up their brochures. The definition has also been broadened to include other transport protocols.

What is Celtix

Celtix is an open source (dual licensed: LGPL and Eclipse EPL) project hosted on the ObjectWeb community. It was started by IONA to drive adoption non-server centric, distributed computing architectures.

What can Celtix do

If you read the Celtix page at ObjectWeb, you will find a laundry list of internal product features that were delivered on a per milestone bases:

  • Persistence support for Reliable Messaging based on Apache Derby
  • HTTPS based security support
  • Support for Javascript based webservices.
  • Support for changing configuration dynamically
  • Management support for additional Celtix components
  • Support for wsdlvalidator commandline tool
  • Routing support for all Celtix bindings and transports
  • Enhanced routing capabilities
  • WS-Addressing support for JMS based services
  • Interoperability with .NET.
  • Support for Maven 2.0.4
  • Support for running Celtix inside Apache Tuscany
  • Support for Webservice callbacks
  • Support for JAX-WS Dispatch APIs
  • Support for JAX-WS Provider APIs
  • Support for non-wrapper Doc/Literal style
  • Celtix based javatowsdl tool
  • Celtix based wsdltojava tool
  • First cut of transport APIs
  • Enhanced binding API for better pluggability
  • Support for Protocol Handlers
  • Support for Logical Handlers
  • Support for Contexts
  • SOAP 1.1 support for doc/rpc literal
  • Support for SOAP 1.1 faults
  • Support for SOAP 1.1 headers
  • Support for JAX-WS Sync APIs
  • Support for JAX-WS One-Way APIs
  • Support for inout and out variables
  • HTTP 1.1 transport
  • HTTP servlet transport
  • JMS transport based on Active MQ
  • Support for WS-Addressing
  • Support for JAX-WS async client APIs
  • Policy based configuration
  • Support for StreamHandler APIs
  • WS-RM based support for Webservices Reliability
  • Support for JMX based management
  • XML Binding
  • New commandline tools: xsd2wsdl, wsdl2xml, wsdl2soap, wsdl2service
  • Native integration into Apache Geronimo J2EE appserver
  • Support for validating application data against XMLSchema
  • Enhanced support for deploying celtix services into a servlet container based on feedback from Jonas J2EE appserver project

Some of these makes sense to the end developer (meaning the developer who's going to use it). Some doesn't (what do I care if it's Maven 1 or Maven 2.)

Luckily, Celtix comes with a set of sample applications that showcases its capabilities:

  • callback
  • common_build.xml
  • configuration
  • dispatch_provider
  • handlers
  • hello_world
  • hello_world_async
  • hello_world_https
  • hello_world_RPCLit
  • hello_world_xml_bare
  • hello_world_xml_wrapped
  • integration
  • integration/dotnet/celtix-server-dotnet-client
  • integration/dotnet/dotnet-server-celtix-client
  • j2ee
  • jms_pubsub
  • jms_queue
  • js_provider
  • management
  • routing
  • soap_header
  • streams
  • ws_addressing
  • ws_rm

How does Celtix do it

The same as CORBA, only different:

  • SOAP messages
  • QoS: Reliability, Security, Transaction, Routing, Transformation
  • Transport: HTTP, HTTPS, JMS, TCP
  • Stuff down below
  • No app servers. But can be integrated with one.
  • Relies on Jetty for HTTP, ActiveMQ for JMS, etc.
  • Provides JAX-WS, JAXB implementations.

The development process

  • Write WSDL (basically XMS Schema for data types, composed into messages, exchanges with operations)
  • Generate Java code (or class files) for types, service proxy, service interface, server mainline, client mainline, implementation object, and an Ant build file.

  • Add business logic and run.

What others are saying about ESB

That is a piece of SOA infrastructure, which is this huge thing that many vendors are so busy to build up products for.

What others are saying about SOA

Abstract interfaces through WSDL.

Bound to implementation code.

Loosely coupled.

Top down.

It's nothing new. (Only the WSDL and SOAP part is new.)

QoS's, a.k.a. WS-*, are going to save us.

WS-Angst, WS-DeathStar.

The only thing that's different this time is that all the big vendors are on board. When was the last time you saw Microsoft and IBM coorporate at this level?

Uh, that would be OS/2.

It's a waste of time. Everything you need is in HTTP.

I visited XYZ corporation and discovered that they have been doing SOA for 20 years. It's just that they don't know it by that name yet. They are sending bare data packets using UDP

Weiqi is done. First person is me now.

(In case you haven't noticed, I am Weiqi. Since it is quite hard to do a live blog of a talk while you yourself are talking, this live blog has been prepared ahead of time, which probably should disqualify it as a live blog. However I'll keep calling it live in the same spirit NBC Sports call its Olympic coverage live.)

Tags :