> Hi Gonzalo.

Hi Claus, thanks for your insight.

> > 0. First off, does it really make sense to turn my back to J(2)EE?  I
> know I would be giving up a significant amount of "baseline", but I am
> really hungry for some lean and mean architecture.  Opinions?
>
> If you feel hungry - do it. I think you can do everything without JEE in
> a smart way, too. ;)

Great.

> > 1. How do you feel about RESTful vs. SOAP?  Do you think it is a good
> idea to ignore frameworks such as CXF and go with something like jetty for
> my (RESTful) RPC endpoints?
>
> I think there is no REST vs. SOAP. They have both advantages and
> disadvantages. With camel you're free to provide both with a little more
> effort. If you only want to provide simple CRUD style services, REST
> seems a little bit easier to use. And in combination with camel and
> jetty (the jetty component) you can do great things like internally non
> blocking sync calls.

Excellent. And yes, until now all I see in my requirements are CRUD services.

One thing I have not been able to figure out is how to expose all these CRUD 
services over jetty. Just as an example, let's say I will handle account 
objects and will want to support three actions on them:

GET /account/{id} => retrieve that account
PUT /account/{id}/balance/{bal} => update that account's balance
DELETE /account/{id} => delete that account

How many end points do I need to expose with a from("jetty")? If it is only one 
endpoint for all actions (which would be great), how do I route to the proper 
bean method given the HTTP method and the set of parameters I received? If it 
is one endpoint for each action, how do I specify the endpoints so that they 
are differentiated by their HTTP method and URL parameters?

> > 2. How do I build the client part for the REST services? One (very
> common) user of these services will be a servlet, invoked from a web page,
> that will ask one or more services for data.  I don't think it makes a lot
> of sense for these clients to have a Camel instance embedded (or does
> it?).  So, how do I go about writing the equivalent to my stubs on the
> SOAP world, to make sure I am invoking the REST services with the correct
> parameters?
>
> It makes sense to have a camel context in each service. It light weight
> and extremely useful. Creating a REST interface with Jetty or RESTLET.
> It looks to me, if your services are very fine grained - so if a service
> consists of an interface and some logic to get data into or out of a db,
> you could think about writing your services completely in camel (as a
> camel route).

I am leaning more towards using pure Spring (REST / JMS templates) to invoke 
the services; it seems more natural to me and I think the developers would find 
it an easier path.

> > 3. Same question applies for a client that will invoke a service
> asynchronously.  Say a client will use a JMS endpoint to send a message to
> a service; should that client have a Camel instance embedded into it, just
> to be able to pump a JMS message?  It LOOKS much easier having Camel
> there, but I am worried about my clients becoming too fat.
>
> I don't think camel makes your client fat at all. The footprint of camel
> is very low. The only thing is - you will have some more jars in your
> classpath (which is no issue, if you're using OSGi).

OK.

> > 4. Is OSGi a good way to deploy services?  Can I really expect to be
> able to forego having a J(2)EE application server (WebSphere, gasp!) and
> replace that with lightweight OSGi containers? Are they really that
> lightweight?
>
> I think it is. They're leightweight (of course the create overhead
> compared to start a Main class). Try it out.

I definitely will. Thanks for clarifying this for me; this area is where my 
expertise is the least (close to zero), and to my newbie eyes OSGi seems "too 
good to be true".

> Best regards - Claus

Thanks again.

-- 
Gonzalo Diethelm

Reply via email to