General

What about using WSDL 2.0?

JBI specification allows using both WSDL 1.1 and WSDL 2.0 and it adopts the terminology of WSDL 2.0 (where different from 1.1). This naturally leads to the assumption that WSDL 2.0 should be a better choice in new projects that do not have to deal with a backward-compatibility. However, at the time of writing this answer (11/2008), there is no adoption of WSDL 2.0 neither in JAX-WS specification nor in development tools (Netbeans IDE, wsimport, CXF wsdl2java). This forced us to use WSDL 1.1 only.


Does the platform support asynchronous communication?

No, we currently assume and support just a synchronous interaction between client application(s) and the platform.


Does the platform support transactions?

Not in any systematic way. Connectors and client applications are supposed to do their best to keep ACID properties depending on their application logic.

Development

Can I use some IDE to work with the project?

Definitely. We use Netbeans with the "Maven" plugin installed (you can download and install it using an integrated plugin-management tool). Some parts of the project are even distributed as native Netbeans projects.

Maven plugin includes a development snapshot of Maven 3.0. Although you can use it, it is officially recommended that you use external installation of a stable Maven build (3.0.2 at the time of writing).

Note that if you want to create or edit BPEL-based connectors, you have to use Netbeans version 6.7.1 + OpenESB addons (you can download it here). All other tasks, including building the BPEL-based connectors, can be done using the latest version of Netbeans.

Installation

How do I build the project?

The project consists of many subprojects. Most of them are Maven-based, but there are also some native Netbeans projects.

    Building the Maven-based subprojects is quite an easy task providing you have Maven 3 installed. Just run

    mvn install

    in the project root directory. Then it is a good idea to prepare some tea or coffee since downloading all the dependencies can take 10 minutes or more (depending on your computer configuration and Internet connection speed). The good news is that you have to wait for so long just once. Every subsequent building is much faster since the dependencies are already downloaded and stored in your local Maven repository.

    The Netbeans-based subprojects have to be built manually with the exception of connector service assemblies, which can be built at once using the "... :: SA" subprojects.


How do I run the project?
  1. Download and unpack Servicemix 3.3.2

  2. Set the SERVICEMIX_HOME system property to the root of the unpacked Servicemix distribution

  3. This step is not necessary but if you want Servicemix to start faster and use less system resources you can remove unnecessary components from the SERVICEMIX_HOME/hotdeploy directory. Only the following are needed:

    • servicemix-bean
    • servicemix-camel
    • servicemix-http
    • servicemix-saxon
    • servicemix-shared
  4. Remove the discoveryUri attribute out of the amq:transportConnector element in the SERVICEMIX_HOME/conf/activemq.xml configuration file. It allows Servicemix to start faster and - more importantly - allows it to start when the computer is not connected to a network.

  5. Use the JAR archive and the instructions from this directory to install the port of OpenESB BPEL SE into Servicemix

  6. Enable authentication, database connection and connector registration as described here

  7. Build the project (if you have not done it yet) and use the provided deploy.{bat,sh} scripts to deploy all the project's service assemblies to Servicemix.

  8. You can adjust logging in the SERVICEMIX_HOME/conf/log4j.xml configuration file if you want to

  9. Run Servicemix