views:

483

answers:

3

I have to choose a technology to connect my Application/Presentation Layer (Java Based) with the Service Layer (Java Based). Basically looking up appropriate Spring Service from the Business Delegate Object.

There are so many options out there that it is confusing me. Here are the options I've narrowed down to but not sure..

  • Spring RMI

  • Apache Camel

  • Apache ServiceMix (ESB)

  • Iona FUSE (ESB)

Here is what I want to know

  1. If you have worked on (or evaluated) any of these, which choice do You think is more appropriate? (and it wouldn't hurt to tell me why :)
  2. Are there other technologies that I should be looking at as well?
  3. As of now I do not see Application and Service layer being distributed but I do not want to rule out this possibility in future. Is this a good idea to design to provide this flexibility?

Any help would be useful. Thanks!

+2  A: 

It mostly boils down to do you want to use Spring Remoting (which Spring RMI and Apache Camel are implementations of) - or do you want to use JAX-WS for web services (which CXF or Metro implement). i.e. do you want automatic remoting for your POJOs - or do you want WS with WSDL contracts and so forth.

Once you've decided on the remoting technology; your next decision is do you want to bundle it inside your application as a library (e.g. Spring RMI or Camel) - or do you want to deploy it in an ESB container like ServiceMix to be able to hot-redeploy modules and so forth.

If the latter is your choice then use Apache ServiceMix - or use the FUSE ESB if you want a commercial distribution with more documentation, frequent releases, commercial support and so forth.

James Strachan
+2  A: 

Spring Remoting would seem like the simplest approach. It also would leave you open to more complex approaches in the future if that is the direction you want to take.

From the limited view of your requirements, I would stick with a simple solution with a lower learning curve, and leave the ESB till you determine you actually need it.

The KISS principle is a wonderful thing.

Robin
+1  A: 

Here you can find a simple solution to integrate Metro and Camel together: http://www.everit.biz/web/guest/everit-blog/-/blogs/calling-a-camel-route-from-web-service-using-metro-and-tomcat?_33_redirect=/web/guest/everit-blog

cortexiphan