Celtix Enterprise 1.1 Release Notes

06 Mar 2007

Table of Contents

Getting Started
New Features
Celtix Enterprise
Celtix Router
Celtix Container
Celtix Advanced Service Engine
Celtix Advanced Messaging
Documentation Updates
Known Issues
Celtix Enterprise Router
GUI Tools
Apache Incubator ServiceMix
Fixed Bugs
Celtix Advanced Messaging
Celtix Advanced Service Engine
Celtix Router
Celtix Advanced Messaging
Celtix Advanced Service Engine
Celtix Router

Celtix Enterprise is a certified open source ESB offered by IONA Technologies. It provides best of breed components to offer a complete SOA solution. For information on getting support for Celtix Enterprise go to http://www.iona.com/products/celtix.

Getting Started

The first step to running any of the tools shipped with Celtix Enterprise is to run the celtix_env script.

New Features

Celtix Enterprise

Celtix Enterprise has the following new features in 1.1:

  • Improved binary installers

    There are now binary installers for each of the products in the Celtix family. The installers are smaller and present the installer with only the options available for the product they have downloaded.

  • Improved source installer

    The source installer has been updated to use Maven 2.0. It provides a single target for building all of the projects incorporated into Celtix Enterprise. In addition, the individual projects can be built separately.

Celtix Router

The Celtix Enterprise router has the following new features in 1.1:

  • Operation-based routing

    You can define routes that use specific operations of an endpoint as a source or target. This facilitates the construction of routes that are more fine grained than routes that have fully defined endpoints as sources or targets.

  • Recipient List Routing Pattern

    You can define a list of recipients for messages. The messages are routed to one of more of the recipients on the list based on a specified set of criteria.

  • Routing Slip Routing Pattern

    You can define routes that pass messages through a series of endpoints based on a specified set of criteria. This is a simplified form of service orchestration.

  • Load Balancing

    You can define routes that distribute requests across a number of endpoints that implement the same service. The default load balancing algorithm is round-robin. However, you can implement your own load balancing algorithm and plug it into the router.

Celtix Container

The Celtix Enterprise container has the following enhancements in 1.1:

  • Application naming

    Applications deployed into the container now use the name of the WAR as their application name.

  • Multiple Spring bean deployment

    A user can now deploy multiple Spring beans to be deployed as a part of an application. Spring bean files must be placed in the META-INF/spring folder of the WAR.

  • Drag and drop deployment

    The Celtix Enterprise container now scans the container repository for newly added WARs. When a new WAR is found, the application it defines is automatically deployed into the container.

  • Application monitoring

    Using the Web Service management interface or the JMX management interface, you can get the state of an application in the Celtix Enterprise container. Applications are either STARTED, STOPPED, or FAILED.

Celtix Advanced Service Engine

The Celtix Advanced Service Engine has the following new features in 1.1:

  • Configuration

    The configuration model used by Celtix Advanced Service Engine has been simplified. You no longer need to use the bean/property/value nesting. Instead configuraiton is specified using elements.

  • Support for mixed style WSDL interfaces.

  • Apache Incubator Qpid can now be used an alternative JMS transport.

    For information on setting this up see Chapter 4, Using Celtix Advanced Messaging as a JMS Replacement in Using the Celtix Enterprise JMS Transport.

  • Support for JAX-WS Handlers when using Dispatch/Provider API's.

  • Performance improvements.

  • Bug fixes and other enhancements.

Celtix Advanced Messaging

Celtix Advanced Messaging has the following new features in 1.1:

Documentation Updates

Known Issues


The installation procedure has the following known issues:

  • Welcome Page on *NIX

    On *NIX systems where Mozilla or Netscape is not present, the Welcome Page will not display when the installer finishes running. You can manually load the Welcome page from the docs folder of the installation.

  • Linux Installations with GCJ

    There is a known problem with running the Linux installer (.bin extension) on a system with GCJ (GNU Compiler for Java) installed. It has been identified as an InstallAnywhere bug. When running the installer you may see the following output:

    "Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
    Stack Trace:
    java.lang.NoClassDefFoundError: while resolving class: ZeroGe
      at java.lang.VMClassLoader.resolveClass(java.lang.Class)

    The solution is to install a Sun JVM and put that on your path. For example, on a machine with a JRE installed at /opt/jdk1.5.0_03_64/jre run the following:

    export PATH=/opt/jdk1.5.0_03_64/jre/bin:$PATH

Celtix Enterprise Router

The Celtix Enterprise router has the following known issues:

  • Mule Download

    You must download a number of the Mule runtime libraries from www.mulesource.com before using the router. A script, download_mule is provided with the installation. You must type yes when asked to accept the MuleSource Public License.

  • POJO Mode

    The following features are not supported:

    • Proxification of WS-A EndpointReference objects passing through the router.

    • Asynchronous operations.

  • PAYLOAD Mode

    The following features are not supported:

    • SOAP message attachments

    • Asynchronous operations.

  • MESSAGE Mode

    The following features are not supported:

    • Asynchronous operations.

  • REST Support

    The router does not support services that use REST style interfaces. There is currently no way for the router to pass the HTTP verbs to endpoints.

GUI Tools

The version of Eclipse SOA Tools Platform included with Celtix Enterprise has the following known issues:

  • Code Generation

    Do not generate more than one server, implementation, or client per project. Support for multiple code generations in a single project will be made available via the update site in the near future.

  • Annotations

    Using non-default attribute values when adding JAX-WS annotations can cause problems with the generated code and WSDL. We recommend using only the default values when creating annotations.

  • Path Names

    The GUI tools do not work properly when there are spaces in the workspace's path name.


The samples included with Celtix Enterprise have the following known issues:

  • Top-level README

    The README in the samples folder contains instructions for setting a number of environment variables. These should be ignored. Celtix Enterprise includes a script, celtix_env, that properly sets your environment.

  • Building on Linux

    On versions of Linux with a system wide Ant configuration file installed (/etc/ant.conf) you may see the following error when building the samples:

    	"Exception in thread main java.lang.ClassDefNotFoundError org/apache/tools/ant/Launch/Launcher"

    If you get this error, use the --noconfig option when running Ant. This will bypass the system's ant configuration and ensure that the version of Ant installed with Celtix Enterprise is called.

    	ant --noconfig
  • WS-RM Samples

    The WS-Reliable Messaging demo in service_creation/ws_rm fails if the client is run a second time against the same server. This is due to a bug in the demo code whereby the MessageLossSimulator interceptor is installed on both the client and server side and results in loss of partial responses originated from the server.

    To workaround, apply the following changes:

    1. In ws_rm.xml, remove line 39:

      <bean id="messageLoss" class="demo.ws_rm.common.MessageLossSimulator"/>
    2. In ws_rm.xml, remove line 60:

      <ref bean="messageLoss"/>
    3. Insert the following line in Client.java, after line 42:

      bus.getOutInterceptors().add(new demo.ws_rm.common.MessageLossSimulator());
  • Service Creation HTTP Demos

    Only some of the samples have been updated to reflect the new configuration system. For example, the ws_addressing sample has been updated, but not the hello_world_https sample. However, all demos continue to work as before.

Apache Incubator ServiceMix

The version of Apache Incubator ServiceMix included with Celtix Enterprise has the following known issues:

  • Start Script & SunOS

    The Apache Incubator ServiceMix start script located in $SERVICEMIX_HOME/bin/servicemix is not compatible with SunOS /bin/sh, to workaround this issue we launch Apache Incubator ServiceMix using Bash in $CELTIX_HOME/bin/servicemix_start.sh. This requires that a Unix/Linux system have bash installed in /bin.

    When CELTIX_HOME/bin/servicemix_start.sh is launched on a system without bash present in /bin the following warning will be displayed:

    "The ServiceMix executable requires bash installed in /bin."

    The script will then exit.

  • Unpacking Files

    Apache Incubator ServiceMix has a known issue with unpacking files placed in its deploy and install folders, this is documented in Apache Incubator ServiceMix's bug tracking system under SM-607. This issue may be observed when CELTIX_HOME/bin/servicemix_deploy_sa and/or CELTIX_HOME/bin/servicemix_install_ca scripts are executed. If this issue occurs the user may retry the script or they may edit the 'monitorInterval' value in SERVICEMIX_HOME/conf/servicemix.xml to a larger value.

Fixed Bugs

Celtix Advanced Messaging

JIRA #Description
QPID-323Message reference count not being incremented when message added to UnacknowledgeMap
QPID-321Simplify logic to deal with setting MessageListener only after connection start has been called
QPID-317Remove dependency on JMS from common and broker modules
QPID-315JMSMessageProperties not all set when converting messages
QPID-313Call to attainState in makeBrokerConnection can miss the notification of state change.
QPID-311Dispatcher pause logic is not thread safe.
QPID-300FailoverException is throw to clients
QPID-299Messages not being correctly requeued when transacted session closed
QPID-294Race condition in establishing client connection
QPID-293Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery queue
QPID-282AMQConnection does not support IP addresses
QPID-276Potential race condition in AMQChannel
QPID-273Remove unnecessary Map creation for each server side message
QPID-267AMQConnection#Stop throws NotImplementedException
QPID-266PropertiesFileInitialContextFactory doesn't lookup PROVIDER_URL correctly
QPID-233IllegalMonitorStateException in ConcurrentSelectorDeliveryManager
QPID-231QueueSession.createSender() should allow a null Queue name.
QPID-225Queue Browser implementation: acknowledgements not handled properly for CLIENT_ACKNOWLEDGEMENT
QPID-222Ensure pre-fetched messages received when in a transaction are correctly requeued
QPID-214Calling recover in onMessage() should stop Auto-ACK being sent for current message
QPID-212Calling close() on a connection or session, any pending receive() should retrun null
QPID-211NullPointerException in broker when message sent with no routingKey
QPID-209Message.acknowledge() should only acknowledge messages consumed by the application
QPID-207Message.acknowledge() should acknowledge received
QPID-206Sending same TextMessage more than once causes text to be lost on second send
QPID-205Do not allow subscription to temporary topic created on different session
QPID-202QueueSender: incorrectly throwing NullPointerException when queue supplied to send()
QPID-201MapMessage: wrong exception thrown when getting null as char
QPID-193AMQSession.createConsumer() must be synchronous to avoid timing problems
QPID-192MapMessage.clearBody() impl doesn't clear the map properly
QPID-189producer.sendMessage() must not assume the Message argument is a Qpid implementation class
QPID-186AMQConnection does not set error code when constructing a JMSException
QPID-181Message properties do not support JMS type conversion rules
QPID-179TextMessage needs to be able to distinguish between a null payload and an empty string
QPID-177TopicSessionAdapter.createTextMessage(String) ignores its argument
QPID-176TopicSession.createPublisher does not handle null argument correctly

Celtix Advanced Service Engine

JIRA #Description
CXF-6jaxws-api, jsr181-api should be optional in cxf-common pom
CXF-19getPort(Class) throws exception
CXF-29DatatypeProvider not set
CXF-119Empty request elements causes NPE
CXF-179Move Holder code from JAXWSMethodInvoker to interceptors
CXF-184parameter order should be take care of in runtime
CXF-188invalid wsdl generated by java2wsdl tool
CXF-236NPE thrown by XmlStreamWriter when calling StaxUtils.copy()
CXF-237Problem with checkstyle organisation of imports
CXF-253Server can not start when the port number is missing
CXF-255js_provider sample problem
CXF-258Server can not start when SEI has no wsdlLocation in the WebService annotation
CXF-263SOAPBinding annotation can not placed on method with RPC style
CXF-265Java2WSDL NEP when the SEI is DOC-LIT Wrapped style
CXF-269CXF can not handle an empty reponse when using oneway operation.
CXF-289Adding of Root Node in XMLBinding is done without a prefix.
CXF-290wsdl space in path name problem on Windows
CXF-292CXFServlet does not pass the wsdl packaged in war to the EndpointImpl
CXF-293Defining a XML Binding with a rootNode results in Fault Response at the Client end.
CXF-295Service Model can't support import PortType with different name-space
CXF-296Create BindingFactory failure when the first ext element in wsdl binding part is not the protocol element
CXF-297Checking in-bound message format should based on content-type, not by mtom-setting, content-id should be decoded by URLDecoder first
CXF-320If add a user interceptor into pre_stream and addBefore to SoapPreProtocolOutInterceptor, CXF will throw an "Invalid ordering" exception
CXF-323Improper synchronization of getDefaultBus(), setDefaultBus()
CXF-324Dynamically generated WSDL for JAX-WS service is invalid
CXF-327"Wrong number of arguments" exception if change hello_world samples wsdl
CXF-336JAX-WS Handler on client side not working
CXF-354Printing Extension Elements in the wsdl doesn't have the proper indentation level.
CXF-355WrapperClassInInterceptor throws NPE when handling a oneway operator
CXF-359wsdl2java using wrong type (should use wrapper type, but use primitive type) for holder parameter when generating SEI class
CXF-370ResourceInjector passes incorrect resource names
CXF-382Java package to wsdl namespace mapping incorrect
CXF-390Endpoint Bean provided configuration values do not override wsdl model
CXF-393All JMS message properties are always copied from source to destination
CXF-394HTTP binding expects '/' on each side of the brackets
CXF-398XMLBinding Provider<Source> implementations can not receive Multipart/Related messages
CXF-405ws_addressing sample fails
CXF-409samples/streamInterceptor server fails to start
CXF-415Decoupled Endpoint Observer should not insert HttpRequest and HttpResponse instances into the Message.
CXF-416ws_rm and streamInterceptor samples fail
CXF-350Add SSL{Client|Server}Policy CiphersuitesFilter element

Celtix Router

JIRA #Description
TAN-140Implement PAYLOAD mode routing for RPC-Lit style WSDL.
TAN-156Support faults in PAYLOAD mode.


Celtix Advanced Messaging

JIRA #Description
QPID-320Improve performance by remembering protocol version
QPID-271Fanout Exchange not implemented
QPID-216Implement no_local
QPID-215Implement Custom JMSX Properties
QPID-200set/get Destination not implemented in JMSMessage impl
QPID-180PropertyFieldTable could be optimised

Celtix Advanced Service Engine

JIRA #Description
CXF-193Support jax-ws handlers for dispatch/provider
CXF-147support the wrapped and bare message at the same time
CXF-204Remove Stream handlers
CXF-229Lazy loading for attachments
CXF-231Complete Simple Frontend
CXF-245SOAPHandlerInterceptor.handleMessage() should be a no-op if no protocol handlers are registered.
CXF-249Performance improvment by using DOMXMLWriter
CXF-261Soap headers only work in doc/literal mode
CXF-266Let servlet control can return list of services which are published by servlet for browsing
CXF-299README should have links to bug tracking system
CXF-300Create a demo to demonstrate stream interceptor
CXF-301Refactor restful sample: remove the presence of wsdl from sample's client mode
CXF-319Support for accessing message payload from logical handler when dispatch is used
CXF-332Logical handler stops processing
CXF-333Logical handler throws ProtocolException
CXF-334Logical handler's close() method is not properly called after completion
CXF-385XMLFaultOutInterceptor does some redundant JAX-WS related fault detail processing.
CXF-389Make org.apache.cxf.jaxws.EndpointImpl constructor generic

Celtix Router

JIRA #Description
TAN-97Implement operation based routing.
TAN-181Implement recipient list routing pattern.
TAN-182Implement load balancing.
TAN-183Routing management support
TAN-184Container support
TAN-190Implement message filter based routing.
TAN-263Implement routing slip routing pattern.