Reputation: 79
I have to have a kind of mediator/routing system that should talk to several systems in the backend. It will look like this:
Client
|
|
--Mediator-
| | |
| | |
Sys A Sys B SysC .....
Now the client calls several methods on the mediator via http (http://foo/bar?id=1
) and these should be routed to a system configured somewhere (probably xml-file or sth similar)
Now i also have a requirement that the system and some methods should be capable of handling authentication, so that there will be a http://foo/login
and the mediator should return a token which can used on subsequent calls like http://foo/secretbar
. If the token is not provided the calls should return a specific error.
I want to have flexible,easy, extendable solution since the systems in the backend don't always speak the same language (some JMS, some FTP,...). Now I read about the above products and want to know if some of them fit for my use case. I know that they can speak/route messages to other systems but I didn't find any example for the authentication problem (could also be that I didn't search enough ;). Are there any systems which are not capable of this? Or into which documents should i look deeper for my requirements?
Upvotes: 0
Views: 1377
Reputation: 21015
Camel can definitely help you out with this. Servicemix as well, but its more of a container to host these services (generally written in Camel). Camel is definitely simpler and can be run standalone, embedded in an app server or OSGI container, etc.
see the camel-jetty page for more information about setting up authentication with an HTTP/Jetty endpoint in Camel
see the Camel EIPs page for a complete list of enterprise integration patterns that can help implement complex routing requirements, etc.
see the Camel Components page for a complete list of components that Camel has implemented to allow you to interface with various technologies ((jms, file, http, jdbc, ftp, etc).
Also, see this discussion for more information on comparing the different products in general...
Apache Camel and other ESB products
Upvotes: 1
Reputation: 524
Mule can certainly provide all what you're asking for and more. First, you can easily change Mule's routing via XML Spring. Secondly, Mule comes out-of-the-box with a large no. of transports, including ActiveMQ, FTP, and HTTP/s. Thirdly, operations can be exposed to your clients as RESTful services or Web Services thanks to Mule's Jersey and CXF modules. Last but not least, Mule allows you to use the same object for all client requests via the singleton-object XML element. This element would help you with your authentication needs as it could be used to store the client's security token for the duration of the client's session. Coincidently, we have recently developed a Mule demo app which is very similar to your use case. We are planning to make the code public, but in the meantime, you can find more info of this app at http://androidmulecrm.muleion.com/.
Upvotes: 0
Reputation: 2688
Camel provides both camel-http and camel-jetty but you are limited in the way you can configure those. It seems that you need some kind of session to handle your authentication, it would be more conservative to write your own servlet and pass the request forward to camel from inside the servlet. but you can also use camel-jetty session support and access the session to handle authentication inside a processor: more here: cammel-jetty
Upvotes: 0