Well done.  Loving the profiles and static compilation mechanics.

After pulling in Camel/CXF, my bundles and a karaf 4.0.5 through the
profiles I ended up with a nice zip file of 40MB. It runs and works
perfectly.  This is going to open a whole new world.  New EIPs.  I was
thinking of how nice this would be for isolating a legacy database, for
example.  Set up a gateway with security and web services in an appliance
and then decompose the individual service calls into separate applications
that run locally on local ports or JMS or whatever. If a particular query
or set of queries was nasty and might benefit from caching, a new appliance
could be created for it.  The gateway might send 80% of calls to the old
appliance and 20% of calls to the new appliance during an initial phase for
comparison purposes.  If the new one didn't work properly, just change the
gateway configuration and switch all traffic back or if it worked great,
switch all the traffic to the new one.  Each service appliance could be
tweaked for its own individual performance needs.  I can SSH into each one
if I want and look at what's going on.

Felix/Karaf or Equinox/Karaf are perfect little containers for that sort of
approach.

Ironically part of the beauty of that isn't about the technology itself but
about organizations.  If you touch the code in production you trigger all
kinds of procedures and paperwork.  Configuration less so.  And new code
can be even less problematic for highly constrained problems.

It really is what I've been wanting.

One thing I'd like to discover or suggest is how to run tests with the
assembled code before zipping or after zipping but from an unzipped copy.
So I run the profiles and create my appliance and now I want to fire it up
from the build.  Personally I have a couple of fluent builders I put
together for JAXWS and JAXRS client that I run from
CamelBlueprintTestSupport.  But if I could run the profiles to completion,
fork the container, and then fire up web service tests against it that
would be ideal.  Plain ol' JUnit would be best.  I'm not really testing
Camel at that point.  All the Camel routes and transforms and logic are
tucked neatly inside the black box of the appliance.

Great work guys!

Brad

Reply via email to