Reading Time: 7 minutes

I went to Devoxx last week to present “iBeans – dead simple integration for the web”. Since the slides are pretty readable I figured I’d post them here for folks that missed it. I jotted down the questions and answers from the session below.


The following are questions I got during and after the session. They are not in any particular order. I’ll post these up with my slides on the blog today.

Q. [During the discussion about transforms and bindings]. I saw the recent announcement about Mule Data Integrator (MDI), can that be used with iBeans?
A. Currently, MDI has been tested exclusively with Mule ESB, but there is no reason why transforms (maps in MDI-speak) defined in MDI cannot be used with iBeans, I just haven’t tested it yet.
Q. Is the client API referring to the JavaScript AJAX client or something else?
A. The client API is referring to the annotations used to create an iBean. Called so because they are annotaitons that describe how to consume an external service (hence being a client of that service). After talking about this a bit I’m going to call these client annotations “iBean annotaitons”. The slides have already been updated to reflect this.
Q. Can I embed iBeans into my application, what are the benefits of the container-based approach?
A. iBeans was designed around a container-based approach – iBeans is install as part of the container, not your application – for a couple of reasons.

  1. iBeans was designed with the cloud in mind where a PaaS would embed iBeans rather than applications deploy everything. This is so that the container has some control over what features to enable of its applications and to make it easier and faster for developers to upload applications on the fly. Also memory usage is greatly improved when there are lots of iBeans instances running, this is a good thing for cloud environments where you are paying for memory by the hour.
  2. It is simpler for the developer to create a project without having to think about how to deploy all the iBeans dependencies. Many developers end up just bundling everything which just isn’t necessary.
  3. The iBeans console provides an easy way to configure the iBeans instance. Right now this means you can add and remove modules and you can browse iBeans Central and download new ibeans into your container. In future we’ll be adding support for managing application configuration, such as channels, passwords and API keys.

Q. What’s the difference between the application and client annotations?
A. The application annotations can be added to your application objects such as POJOs Spring beans, Struts actions, etc. The annotations then allow these objects to send and receive messages of any iBeans channel and well as schedule requests.
The client annotations (read iBean annotations) are used to define an iBean that talks to an external service, such as Twitter, Facebook or internal services such as a message queue or web service.

Q. How do I get involved with the project?
A. Help in any form is very welcome and there is a lot to do. The forums are a good place to start to ask questions. The Issue tracker has plenty of outstanding issues that need attention.

Q. How does the JavaScript client support work?
A. Right now it uses json-rpc over Cometd. This feature is still in prototype stage in that it works well but has not been optimized. For example, we’re currently using long polling with Cometd but we should be looking at offering web socket support and/or continuations.