<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Weiqi Gao&#039;s Observations - celtix tag</title>
  <link>http://www.weiqigao.com/blog/tags/celtix/</link>
  <description>Sharing My Experience...</description>
  <language>en</language>
  <copyright>Weiqi Gao</copyright>
  <lastBuildDate>Fri, 11 May 2012 12:48:36 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  <image>
    <url>http://pebble.sourceforge.net/common/images/powered-by-pebble.gif</url>
    <title>Weiqi Gao&#039;s Observations</title>
    <link>http://www.weiqigao.com/blog/</link>
  </image>
  
  
  <item>
    <title>Celtix 1.0: First Impression</title>
    <link>http://www.weiqigao.com/blog/2006/05/26/celtix_1_0_first_impression.html</link>
    
      
        <description>
          &lt;p&gt;This month&#039;s OCI Java lunch is a special one, because we are fortunate enough to have secured the appearance of &lt;a href= &#034;http://www.weiqigao.com/blog/&#034; &gt;Dr. Weiqi Gao&lt;/a&gt;, who will be talking about a new open source product called &lt;a href= &#034;http://celtix.objectweb.org/&#034; &gt;Celtix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;First person is Weiqi now.&lt;/p&gt;

&lt;p&gt;I first encountered Celtix about a month ago, and have been playing with it a little bit.  I wrote a &lt;a href= &#034;http://www.weiqigao.com/blog/2006/05/10/playing_with_celtix_1_0_pre_first_impressions.html&#034; &gt;very preliminary experience&lt;/a&gt; report 16 days ago, mostly about some trivial stuff.&lt;/p&gt;

&lt;h4&gt;What is an ESB&lt;/h4&gt;

&lt;p&gt;An ESB is a piece of IT infrastructure that shoots (XML) messages across a message-oriented middleware core (JMS).&lt;/p&gt;

&lt;p&gt;The term ESB was popularized by a David Chappell &lt;a href= &#034;http://www.oreilly.com/catalog/esb/&#034; &gt;book of the same name&lt;/a&gt;.  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.&lt;/p&gt;

&lt;h4&gt;What is Celtix&lt;/h4&gt;

&lt;p&gt;Celtix is an open source (dual licensed: LGPL and Eclipse EPL) project hosted on the &lt;a href= &#034;http://objectweb.org/&#034; &gt;ObjectWeb&lt;/a&gt; community.  It was started by &lt;a href= &#034;http://www.iona.com/opensource/celtix/&#034; &gt;IONA&lt;/a&gt; to drive adoption non-server centric, distributed computing architectures.&lt;/p&gt;

&lt;h4&gt;What can Celtix do&lt;/h4&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Persistence support for Reliable Messaging based on Apache Derby&lt;/li&gt;
  &lt;li&gt;HTTPS based security support&lt;/li&gt;
  &lt;li&gt;Support for Javascript based webservices.&lt;/li&gt;
  &lt;li&gt;Support for changing configuration dynamically&lt;/li&gt;
  &lt;li&gt;Management support for additional Celtix components&lt;/li&gt;

  &lt;li&gt;Support for wsdlvalidator commandline tool&lt;/li&gt;
  &lt;li&gt;Routing support for all Celtix bindings and transports&lt;/li&gt;
  &lt;li&gt;Enhanced routing capabilities&lt;/li&gt;
  &lt;li&gt;WS-Addressing support for JMS based services&lt;/li&gt;
  &lt;li&gt;Interoperability with .NET.&lt;/li&gt;
  &lt;li&gt;Support for Maven 2.0.4&lt;/li&gt;

  &lt;li&gt;Support for running Celtix inside Apache Tuscany&lt;/li&gt;
  &lt;li&gt;Support for Webservice callbacks&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;Support for JAX-WS Dispatch APIs&lt;/li&gt;
  &lt;li&gt;Support for JAX-WS Provider APIs&lt;/li&gt;
  &lt;li&gt;Support for non-wrapper Doc/Literal style&lt;/li&gt;
  &lt;li&gt;Celtix based javatowsdl tool&lt;/li&gt;
  &lt;li&gt;Celtix based wsdltojava tool&lt;/li&gt;

  &lt;li&gt;First cut of transport APIs&lt;/li&gt;
  &lt;li&gt;Enhanced binding API for better pluggability&lt;/li&gt;
  &lt;li&gt;Support for Protocol Handlers&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;Support for Logical Handlers&lt;/li&gt;
  &lt;li&gt;Support for Contexts&lt;/li&gt;
  &lt;li&gt;SOAP 1.1 support for doc/rpc literal&lt;/li&gt;
  &lt;li&gt;Support for SOAP 1.1 faults&lt;/li&gt;
  &lt;li&gt;Support for SOAP 1.1 headers&lt;/li&gt;

  &lt;li&gt;Support for JAX-WS Sync APIs&lt;/li&gt;
  &lt;li&gt;Support for JAX-WS One-Way APIs&lt;/li&gt;
  &lt;li&gt;Support for inout and out variables&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;HTTP 1.1 transport&lt;/li&gt;
  &lt;li&gt;HTTP servlet transport&lt;/li&gt;
  &lt;li&gt;JMS transport based on Active MQ&lt;/li&gt;
  &lt;li&gt;Support for WS-Addressing&lt;/li&gt;
  &lt;li&gt;Support for JAX-WS async client APIs&lt;/li&gt;

  &lt;li&gt;Policy based configuration&lt;/li&gt;
  &lt;li&gt;Support for StreamHandler APIs&lt;/li&gt;
  &lt;li&gt;WS-RM based support for Webservices Reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
  &lt;li&gt;Support for JMX based management&lt;/li&gt;
  &lt;li&gt;XML Binding&lt;/li&gt;
  &lt;li&gt;New commandline tools: xsd2wsdl, wsdl2xml, wsdl2soap, wsdl2service&lt;/li&gt;
  &lt;li&gt;Native integration into Apache Geronimo J2EE appserver&lt;/li&gt;
  &lt;li&gt;Support for validating application data against XMLSchema&lt;/li&gt;

  &lt;li&gt;Enhanced support for deploying celtix services into a servlet container based on feedback from Jonas J2EE appserver project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of these makes sense to the end developer (meaning the developer who&#039;s going to use it).  Some doesn&#039;t (what do I care if it&#039;s Maven 1 or Maven 2.)&lt;/p&gt;

&lt;p&gt;Luckily, Celtix comes with a set of sample applications that showcases its capabilities:&lt;/p&gt;

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

&lt;h4&gt;How does Celtix do it&lt;/h4&gt;

&lt;p&gt;The same as CORBA, only different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOAP messages&lt;/li&gt;
&lt;li&gt;QoS: Reliability, Security, Transaction, Routing, Transformation&lt;/li&gt;
&lt;li&gt;Transport: HTTP, HTTPS, JMS, TCP&lt;/li&gt;
&lt;li&gt;Stuff down below&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;No app servers.  But can be integrated with one.&lt;/li&gt;
&lt;li&gt;Relies on Jetty for HTTP, ActiveMQ for JMS, etc.&lt;/li&gt;
&lt;li&gt;Provides JAX-WS, JAXB implementations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;The development process&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Write WSDL (basically XMS Schema for data types, composed into messages, exchanges with operations)&lt;/li&gt;
&lt;li&gt;Generate Java code (or class files) for types, service proxy, service interface, server mainline, client mainline, implementation object, and an Ant build file.&lt;/p&gt;
&lt;li&gt;Add business logic and run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;What others are saying about ESB&lt;/h4&gt;

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

&lt;h4&gt;What others are saying about SOA&lt;/h4&gt;

&lt;p&gt;Abstract interfaces through WSDL.&lt;/p&gt;
&lt;p&gt;Bound to implementation code.&lt;/p&gt;
&lt;p&gt;Loosely coupled.&lt;/p&gt;
&lt;p&gt;Top down.&lt;/p&gt;
&lt;p&gt;It&#039;s nothing new. (Only the &lt;a href= &#034;http://groups.google.com/group/comp.object.corba/browse_frm/thread/55cd6ee5a7010ee8/88edd36684354ede?tvc=1&amp;q=comp.object.corba+Don+Box#88edd36684354ede&#034; &gt;WSDL and SOAP part is new&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;QoS&#039;s, a.k.a. WS-*, are going to save us.&lt;/p&gt;
&lt;p&gt;WS-Angst, &lt;a href= &#034;http://www.loudthinking.com/arc/000585.html&#034; &gt;WS-DeathStar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The only thing that&#039;s different this time is that &lt;a href= &#034;http://atmanes.blogspot.com/2006/05/unrest-over-ws-and-other-enterprisey_09.html&#034; &gt;all the big vendors are on board&lt;/a&gt;.  When was the last time you saw Microsoft and IBM coorporate at this level?&lt;/p&gt;
&lt;p&gt;Uh, that would be OS/2.&lt;/p&gt;
&lt;p&gt;It&#039;s a waste of time.  Everything you need is in HTTP.&lt;/p&gt;
&lt;p&gt;I visited XYZ corporation and discovered that they have been doing SOA for 20 years.  It&#039;s just that they don&#039;t know it by that name yet.  They are sending bare data packets using UDP&lt;/p&gt;

&lt;p&gt;Weiqi is done.  First person is me now.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(In case you haven&#039;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&#039;ll keep calling it live in the same spirit NBC Sports call its Olympic coverage live.)&lt;/em&gt;&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2006/05/26/celtix_1_0_first_impression.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2006/05/26/celtix_1_0_first_impression.html</guid>
    <pubDate>Fri, 26 May 2006 17:15:07 GMT</pubDate>
  </item>
  
  <item>
    <title>Playing With Celtix 1.0---Pre-first Impressions</title>
    <link>http://www.weiqigao.com/blog/2006/05/10/playing_with_celtix_1_0_pre_first_impressions.html</link>
    
      
        <description>
          &lt;p&gt;I&#039;m doing some research into &lt;a href= &#034;http://en.wikipedia.org/wiki/Service-Oriented_Architecture&#034; &gt;SOA&lt;/a&gt; now.  And yesterday&#039;s release of &lt;A href= &#034;http://celtix.objectweb.org/&#034; &gt;Celtix 1.0&lt;/a&gt; is just in time for me to have a hands on look at an &lt;a href= &#034;http://en.wikipedia.org/wiki/Enterprise_Service_Bus&#034; &gt;ESB&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have yet come to any conclusions about the topics at hand.  However, I do want to praise the Celtix folks for the manner in which they packaged their product and the way in which they wrote the documentations.&lt;/p&gt;

&lt;p&gt;I know this is all peripheral, however I have seen enough Java projects that are badly packaged and documented that seeing one Java project packaged right makes me want to write about it.  I wish more Java open source projects are like this.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First of all, the download comes in a jar file, which, when run, extracts its content into a &lt;span style=&#034;color:red&#034;&gt;single&lt;/span&gt; directory named after the project.&lt;/li&gt;
&lt;li&gt;The content of the directory has a sane structure that&#039;s familiar to many developers:
&lt;pre style=&#034;margin-left:3em&#034;&gt;[weiqi@gao] $ &lt;b&gt;ls celtix&lt;/b&gt;
&lt;span style=&#034;color:green&#034;&gt;3party-licenses.txt&lt;/span&gt;*  &lt;span style=&#034;color:green&#034;&gt;NOTICE&lt;/span&gt;*      &lt;span style=&#034;color:blue&#034;&gt;bin&lt;/span&gt;/   &lt;span style=&#034;color:blue&#034;&gt;etc&lt;/span&gt;/  &lt;span style=&#034;color:blue&#034;&gt;resources&lt;/span&gt;/
&lt;span style=&#034;color:green&#034;&gt;LICENSE-EPL.txt&lt;/span&gt;*      &lt;span style=&#034;color:green&#034;&gt;README.txt&lt;/span&gt;*  &lt;span style=&#034;color:blue&#034;&gt;docs&lt;/span&gt;/  &lt;span style=&#034;color:blue&#034;&gt;lib&lt;/span&gt;/  &lt;span style=&#034;color:blue&#034;&gt;samples&lt;/span&gt;/&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;The documentation matches the product.  When it says to go to such-and-such directory and execute such-and-such command, the directory is there and the command executes fine mostly with expected results.  I can&#039;t tell you how many times this is not the case with other open source products (makes me want to pull my hairs out).&lt;/li&gt;
&lt;li&gt;The environment variable settings are spelled out and no guess work is required.&lt;/li&gt;
&lt;li&gt;There is a prerequisite section in the installation guide that is actually &lt;span style=&#034;color:red&#034;&gt;accurate&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;There are only two prerequisites: the JDK and optionally Ant.&lt;/li&gt;
&lt;li&gt;The tools are provided in both command line versions and Ant tasks.&lt;/li&gt;
&lt;li&gt;An abundance of many independent sample programs, each with a build.xml file with a few sensible targets.  There is a README.txt in each sample program directory with no-nonsense instructions.  For example
&lt;pre style=&#034;margin-left:3em&#034;&gt;From the samples/hello_world directory, the ant build script
can be used to build and run the demo.

Using either UNIX or Windows:

  ant build
  ant server
  ant client
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;And  most of the samples (all but the one that demonstrates .NET integration) &lt;span style=&#034;color:red&#034;&gt;work out of the box&lt;/span&gt; as one would expect.  To top it off, the Ant scripts work under Cygwin, which is something that I can&#039;t say about the also recently released &lt;a href= &#034;http://jboss.org/jbossBlog/blog/tdiesler/&#034; &gt;JBoss WS 1.0.0 GA&lt;/a&gt;, which I&#039;m also looking at.  (I usually don&#039;t make too big a noise if something doesn&#039;t work in Cygwin.  I just open a Windows command shell and go on.  The JBoss WS samples do compile fine there.)&lt;/li&gt;
&lt;/ol&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2006/05/10/playing_with_celtix_1_0_pre_first_impressions.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2006/05/10/playing_with_celtix_1_0_pre_first_impressions.html</guid>
    <pubDate>Wed, 10 May 2006 16:38:10 GMT</pubDate>
  </item>
  
  </channel>
</rss>

