BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News IONA Announces Celtix Enterprise

IONA Announces Celtix Enterprise

Bookmarks

IONA has announced the availability of Celtix Enterprise 1.0, its open source ESB built upon a collection of open source projects, including the Tomcat service container, ActiveMQ, Celtix Advanced Messaging (built on Qpid, an open source implementation of AMQP) and — at the core — the Celtix Advanced Service Engine (ASE), which is based on Apache CXF. Both Celtix Advanced Messaging and Advanced Service Engine can also be downloaded separately.

InfoQ talked to IONA's CTO, Eric Newcomer, about the release.

According to Eric, the move away from licensing revenues towards a service & support model is an inevitable trend not only for IONA, but for the entire industry. He also acknowledges that this process will take its time:

For the foreseeable future we will continue to pursue a dual strategy, in which we will continue with our license revenue business and start a new line of business around open source service and support. At the moment it looks like most customers have a mixture of open source and commercially licensed software so we expect to continue with a mixture of the two as well. Of course we also expect both will continue to grow as the need for incremental and distributed SOA infrastructure grows, and that we will be able to continue to add value across both.

Questioned how Celtix compares to Apache Axis2, he noted that while there are a lot of similarities, Axis2 has taken a different view of Web services:

While Celtix Enterprise is more focused on the requirement Java developers have for JAX-WS APIs and JAXB data bindings, Axis2 centers around its own data model, Axiom, and anything you do with Axis2 has to deal with that. This is probably very good in theory but it is our experience that developers want to use the JCP standards, which are more widely adopted. Celtix Enterprise also includes support for AMQP and for the Eclipse SOA Tools, which aren't in Axis2 either.

Eric also pointed out that Celtix ASE provides for both SOAP-based and REST-based services (the latter "in a true REST style by supporting POST, PUT, GET, and DELETE as well as mapping arbitrary URIs".) Also supported are JavaScript and ECMAScript for XML (E4X) for both client and server development.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • What license are these products released under?

    by Weiqi Gao,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Do we know exactly which open source license (or licenses) are these products released under? Is it (are they) one of the OSI approved licenses?

  • Re: What license are these products released under?

    by Adi Sakala,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Do we know exactly which open source license (or licenses) are these products released under? Is it (are they) one of the OSI approved licenses?


    The license for these products are based on Apache 2.0 license agreement. Please feel free to download the product to see the license, obviously its free and you can even get free 30day support from IONA.

  • Re: What license are these products released under?

    by Stefan Tilkov,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Here's the info from the license agreement (I'm cutting out the actual license texts):




    • The following Third Party Components are licensed under the Apache Software License, Version 2.0 license copied below: Complete CXF Package (Incubating) from the Apache Software Foundation; Springframework (spring module) 2.0 from Spring Framework; Springframework (spring-beans module) from Spring Framework; Springframework (spring-core module) 2.0 from Spring Framework; jetty 5.1.11 from Sourceforge; stax-api 1.0.1 from Codehaus; XmlSchema 1.1 from the Apache Software Foundation, velocity 1.4 from the Apache Software Foundation; wstx-asl 3.0.2 from Codehaus; Geronimo JMS 1.0 from the Apache Software Foundation; Jakarta Commons CLI 1.0 from the Apache Software Foundation; Jakarta Commons Collections 3.1 from the Apache Software Foundation; Jakarta Commons Configuration 1.2 from the Apache Software Foundation; Jakarta Commons Lang 2.1 from the Apache Software Foundation; Jakarta Commons Logging 1.0.4 from the Apache Software Foundation; Mina 1.1.0 from the Apache Software Foundation; Log4J 1.2.12 from the Apache Software Foundation; Tomcat 5.5.17 from the Apache Software Foundation; ActiveMQ 4.0.2 rc5 from the Apache Software Foundation; ServiceMix 3.0 from the Apache Software Foundation; XBean 2.1 from the Apache Software Foundation.


    • The following Third Party Components are licensed under the Common Public License, Version 1.0 license copied below: The Services Framework feature of Celtix Enterprise 1.0 incorporates WSDL4j 1.6.1 from Codehause; The Advanced Messaging feature of Celtix Enterprise 1.0 incorporates JUnit 4.0 from Junit.org.


    • The following Third Party Components are licensed under the Common Development and Distribution License (CDDL), Version 1.0 license copied below: The Services Framework feature of Celtix Enterprise 1.0 incorporates: Javamail 1.4 from Sun Microsystems; JavaBeans Activation 1.1 from Sun Microsystems; jsr181 API 1.0 from Sun Microsystems; jsr250 API 1.0 from Sun Microsystems; jaxb api 2.0 from Sun Microsystems; jaxb RI 2.0.3 from Sun Microsystems; SAAJ API 1.3 from Sun Microsystems; SAAJ RI 1.3 from Sun Microsystems; servlet-api 2.4 from Sun Microsystems.


    • The following Third Party Component is licensed under the Mozilla Public License, Version 1.0 license copied below: The Advanced Messaging feature of Celtix Enterprise 1.0 incorporates Saxon 8.7 from Saxonica.


    • The following Third Party Component is licensed under the Public Domain license copied below: The Advanced Messaging feature of Celtix Enterprise 1.0 incorporates backport-util-concurrent (JSR 166) 2.2 from Emory University.


    • The following Third Party Component is licensed under the Eclipse Public License - v 1.0 copied below: The UI tools feature of Celtix Enterprise 1.0 incorporates STP Plugins M2 from the Eclipse Foundation.


    • he STP Plugins M2 from the Eclipse Foundation referred to above incorporate the following plug-in technology also from the Eclipse Foundation: Eclipse SDK 3.2.1; EMF 2.2.1; GEF 3.2.1; JEM 1.2.1; DTP 0.9.1; WTP 1.5.2. Such technology is subject to the Eclipse Public License - v 1.0 set out above.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: geronimo-jaxrpc_1.1_spec 1.0.1 from the Apache Software Foundation; geronimo-qname_1.1_spec1.0.1 from the Apache Software Foundation; geronimo-j2ee-connector_1.5_spec 1.0.1 from the Apache Software Foundation; geronimo-activation_1.0.2_spec 1.1 from the Apache Software Foundation; geronimo-jta_1.0.1B_spec 1.0.1 from the Apache Software Foundation; commons-beanutils 1.7.0; commons-collections 3.2 from the Apache Software Foundation; commons-discovery 0.2 from the Apache Software Foundation; commons-io 1.2 from the Apache Software Foundation; commons-lang 2.1 from the Apache Software Foundation; commons-logging 1.0.4 from the Apache Software Foundation; commons-pool 1.3 from the Apache Software Foundation; org.safehaus.jug 2.0.0 from Safehaus; wstx-asl 2.9.3 from Codehaus; commons-pool 1.3 from the Apache Software Foundation; log4j 1.2.13 from the Apache Software Foundation; XMLSchema 1.1 from W3C. Such technology is subject to the Apache Software License, Version 2.0 license set out above.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: backport-util-concurrent 2.2 from Emory University and Sun Microsystems. The software comprising backport-util-concurrent is based in large part on the code from JSR166, and the package dl.util.concurrent. The software has been released to the public domain and is licensed under the Public Domain license copied at (1) below excepting portions of the class edu.emory.mathcs.backport.java.util.concurrent which were adapted from class java.util written by Sun Microsystems, Inc, which are used with kind permission, and subject to the license terms at (2) below.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: xstream 1.1.3 from Joe Walnes. Such technology is subject to the BSD Style license set out below:


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: xpp3_min 1.1.3.4.0 from Indiana University. Such technology is subject to the Indiana University Extreme! Lab Software License Version 1.1.1set out below.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: xml-apis 1.3.03 from the Apache Software Foundation; xercesImpl 2.8.0 from the Apache Software Foundation; commons-digester 1.7 from the Apache Software Foundation; Geronimo-servlet_2.4_spec 1.0.1 from the Apache Software Foundation. Such technology is subject to the Apache Software License, Version 2.0 license set out above.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: xml-apis 1.3.03 from the Apache Software Foundation; xercesImpl 2.8.0 from the Apache Software Foundation; commons-jxpath 1.2 from the Apache Software Foundation; commons-collections 3.2 from the Apache Software Foundation. Such technology is subject to the Apache Software License, Version 2.0 license set out above.


    • The routing feature of Celtix Enterprise 1.0 incorporates the following technology: dom4j 1.4 from MetaStuff, Ltd. Such technology is subject to the BSD Style license set out below:


  • Re: What license are these products released under?

    by Debbie Moynihan,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Hi,
    I wanted to add a bit more clarification here.

    Below is the link to the Opensource Software Initiative website. The OSI Approved Licenses appear in the License Index on the left hand side of the page.

    www.opensource.org/licenses/apachepl.php

    The Celtix Enterprise 1.0 product contains third party components licensed under the following licenses (all of which are OSI approved licenses):

    - Apache Software License V2.0;
    - Common Public License V1.0;
    - Common Development and Distribution License (CDDL) V1.0;
    - Mozilla Public License V1.0;
    - Eclipse Public License V1.0;
    - BSD License;
    - MIT;
    - Netscape Public License V1.1.

    There are a number of other components that are licensed under types of Public Domain License or Public Domain Certification which are not specifically approved on the OSI website. But since they are public domain licenses, they are subject to even less restrictions.

    Hope that helps.

    Deb

  • comparison with axis2

    by Sanjiva Weerawarana,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Eric Newcomer, CTO of IONA, says: "While Celtix Enterprise is more focused on the requirement Java developers have for JAX-WS APIs and JAXB data bindings, Axis2 centers around its own data model, Axiom, and anything you do with Axis2 has to deal with that."

    Come on Eric, you know that's an outright lie. Axis2 uses Axiom as its internal XML data model and application authors can program any way they want ..including with the same programming model that Celtix offers: JAX-B. We of course will be happy for people to use Axiom directly but we offer multiple data binding technologies for people to choose from: ADB (Axis Data Binding, similar to JAXB2), XMLBeans and JAXB2. Anyone can plug in their own data binding very trivially in Axis2.

    For JAX-WS APIs- we are working on them, just as much as Celtix is right now. To the best of my knowledge neither has passed the JAX-WS TCK yet.

    Should I mention that Axis2 is much faster than Celtix even with having this crappy Axiom stuff inside?

    Sanjiva.

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Hi Sanjiva,

    Wow that is kind of impolite. I did not expect that from you.

    I notice you did not say that these APIs and data models are supported directly in Axis2. Unless something has changed, don't they all have to be mapped into and out of Axiom? In other words, they use Axiom indirectly, which to me still means "having to deal with it."

    I don't mind if you suggest I should have put it better but I don't see that it's a "lie."

    Eric

  • Re: comparison with axis2

    by Sanjiva Weerawarana,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    My apologies for coming across impolitely .. but whoever is giving you this info is simply clueless.

    Yes, those are supported "directly" .. not sure why that word makes such a difference. Axiom is what the middleware implementor (us or someone else who's adding a data binding) uses to access StAX to do the data binding. The user has nothing to do with it if they write a service using a POJO or a JAX-WS binding. Its no different from the user experience of CXF/XFire/Celtix.

    That's why I replied strongly- its a total mischaracterization of Axis2 to say that Axis2 forces Axiom on users.

    Sanjiva.

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Sanjiva,

    Thanks - no problem. But I do think it's important to stick to the issues rather than assume that I am deliberately trying to say something wrong.

    For me the fact that Axiom is there means that you have to deal with it. You have to understand what's going on inside Axis2 in order to use it correctly - that's what I meant by "dealing with it" - understanding the impact of it.

    I understand what you're saying - that the developer doesn't have to program to it, and that may be good or bad, depending on how transparent it is. In my experience whenever there's a conversion or mapping of this type it is never 100%. If Axiom is always there then the developer needs to be aware of it - even if it's implicit - to make sure it's used correctly.

    This is a difference between CXF and Axis - CXF does not have its own specific data format. It does not use Axiom. Whether it's implicit or not, this is a difference.

    Eric

  • Re: comparison with axis2

    by Sanjiva Weerawarana,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Hi Eric,

    Sorry but you're still mischaracterizing Axis2. Does CXF have a model for a message? Yes. Does that means its shoved into users? No.

    Its the same thing in Axis2; the system needs a way to represent the data .. CXF uses (I believe) DOM or StAX or a stream but in Axis2 we always use Axiom, which is a way to reach the underlying pull stream (StAX; which is what most of the data bindings are directly based off of). Does that mean that CXF users need to be aware that their favorite java objects were populated using DOM or StAX? No. Same with Axis2.

    You wrote:
    "This is a difference between CXF and Axis - CXF does not have its own specific data format. It does not use Axiom. Whether it's implicit or not, this is a difference."

    There is no such difference. CXF has a message model. Axis2 has a message model. They're of course different; and that's the fundamental difference between axis2 and cxf.

    This is not a case of layering and leaky abstractions as you appear to imply by the comment about transparency.

    Sanjiva.

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Ok, thanks, but I'm still not sure I understand correctly. Axiom is the core of Axis2, isn't it? And many of the benefits of Axis2 come from using Axiom, don't they? And also some of the limitations and current issues with Axis2 (stuff you guys are working on) are related to Axiom, aren't they?

    So how is the core of Axis2 not something developers have to be aware of? (Maybe "deal with" was too strong?)

    I mean, I thought the strength of Axis2 was that it provides a programming language neutral data binding and set of APIs, more of a "native" XML model than a Java-centric model.

    And this is a strength in a multi-language environment. But in a Java envrionment, support for JAXB is what developers expect, isn't it?

    My understanding is that the Axis2 core is Axiom, meaning other supported data formats need to be transformed or mapped into and out of it. I am not talking about the message model but the way in which the system works - the way in which the runtime deals with data.

    CXF uses a pluggable data binding model, in which no specific data binding is core, and the data bindings (like the communication protocols) can be swapped via configuration changes.

    This seems to me to be a difference, and something users need to be aware of to use the system correctly.

    (I am not trying to argue right or wrong here, I think there are pros and cons to each approach, but I do think they are different approaches.)

    Eric

  • Re: comparison with axis2

    by Davanum Srinivas,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Eric,

    I think you need to review the Axis2 architecture a bit more :) Let's start with the basics. Let's dispense with the FUD ("limitations and current issues") and deal with the technical details of Axis2.

    AXIOM is not a data binding. AXIOM is the internal representation of the XML Infoset when components (say handlers) need to work with the message. ADB (Axis2 Data Binding) is *A* data binding we support. No, ADB is not baked into the core. In fact our Quick start guide shows how you can write the service in 5 different ways [1] with different data bindings. So we do have a pluggable data binding model and no specific data binding is core. JAXB2 is supported in the 1.1 branch and we will be cutting Axis2 1.1.1 shortly to fix a problem that cropped up with our JAXB2-RI support.

    Let's talk about the "the way in which the runtime deals with data". If you take a look at any of the code generated by our WSDL2Java. We have generate classes that implements what we call our OMDataSource [2]. For JAXB2, this class wraps the JAXB2 object and has ways to generate stax events for the data in the JAXB2 object and for letting the JAXB2 object write itself to the stream if none of the handlers need to touch the payload (say no WS-Security, no WS-RM etc, No Logging). So by default Axis2 hands over stax events pertaining to the payload to JAXB2 and lets it build the objects and also lets JAXB2 write itself to the stream. AXIOM based Infoset is not built at all. However if one of the handlers do need to do something with the payload, say sign it. Then AXIOM pulls the stax events and builds the tree. From then on everyone works with the AXIOM Infoset representation. This mechanism is same for ADB, JAXB2-RI, JIBX etc..Am quite sure that in your case if you need to say sign the payload, you would have to build a DOM/SAAJ tree just like we built our AXIOM tree. I'd be really really surprised you or SUN (since you are using JAXB-RI) work with java objects and do xml-enc/xml-dsig operations on it directly. Am quite sure, you/sun don't do that.

    Lastly, Now getting to the support of standards. Have you run the TCK's for SAAJ, JAX-WS 2.0 and JSR 181 on either the commercial products or the "open source" one? Am quite sure that CXF folks don't have access to the TCK's yet, since we have requests pending in the pipeline for both Axis2 and CXF's access to the TCK's. How can you claim compliance to JCP standards if you haven't run the TCK's?

    [1] ws.apache.org/axis2/1_1/quickstartguide.html
    [2] ws.apache.org/commons/axiom/apidocs/org/apache/...

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Sanjiva,

    I'm sorry, but I am still confused.

    What is the advantage of using Axiom? I was thinking Axiom was there for a good reason, that it would provide some advantage.

    I was thinking that this must be a key difference between CXF and Axis2, which was the question I responded to, but you are saying it is not, and in fact the two are the same. Is that right? So Axis2 doesn't need Axiom at all, or benefit from it?

    This is what I really don't understand. Is Axiom an advantage for Axis2 or a disadvantage? Is it a significant difference between CXF and Axis2 or not?

    Thanks,

    Eric

  • Re: comparison with axis2

    by Davanum Srinivas,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Eric,

    AXIOM is a great asset for Axis2. To get a sense of the power of AXIOM, please see this email [1] and the blog entry link from the email. Note that the app in question is not Axis2, not even remotely anything to do with SOAP or WS-*. The advantage can be harnessed by anyone who wants to work directly with AXIOM without being straitjacket-ed by data bindings.

    [1] www.mail-archive.com/abdera-dev@incubator.apach...
    [2] robubu.com/?p=11

    thanks,
    dims

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Hi Dims,

    Sorry for not noticing you posted the previous reply BTW.

    Ok, so somehow this was the original point - that Axis2 is different from CXF because of Axiom - or that to put it another way Axiom is one difference between CXF and Axis2.

    So I think from this it seems like you agree with that?

    My apologies if I did not state it the way you would have.

    Best,

    Eric

  • Re: comparison with axis2

    by Eric Newcomer,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    ps Sometime when you get a chance perhaps you could explain the relationship between Axiom and Axis2 in more detail? As you noticed I had the impression that Axiom was required for Axis2 - or at least for some parts of it that someone might want to use.

    Thanks,

    Eric

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT