Re: IRC sessions on ServiceMix 4.0 design (was Re: ServiceMix 4.0)

2007-08-25 Thread Nodet Guillaume

Ok, sounds like we have enough people.
So we just need to find a data and an hour.
What about Friday 3 pm GMT,  11 am EST, 8 am PST
Adrian, I'm not sure how to find a time that would suits you...
Other propositions are welcome...

Cheers,
Guillaume Nodet

On Aug 24, 2007, at 11:04 AM, Nodet Guillaume wrote:


Any other people interested ?

Cheers,
Guillaume Nodet

On Aug 23, 2007, at 3:37 PM, Kit Plummer wrote:


I'd be up for a few chat sessions!

On 8/23/07, Nodet Guillaume [EMAIL PROTECTED] wrote:


Btw, if there is sufficient interest, we could organize irc meetings
to discuss these topics and post the log to the dev list for  
archiving

and later discussion.

Cheers,
Guillaume Nodet

On Aug 22, 2007, at 4:59 PM, Nodet Guillaume wrote:


As I explained in the other thread, I've been working on a new API
for ServiceMix 4.0.
Hopefully this will serve as an input for JBI 2.0.
This API is available at  https://svn.apache.org/repos/asf/
incubator/servicemix/branches/servicemix-4.0/api

So here a few key changes:
  * clean integration with OSGi
  * the NormalizedMessage can contain not only XML
  * no more components
  * no more JBI packaging (just use OSGi bundles)
  * move the Channel to the Endpoint
  * use push delivery instead of pulling exchanges
  * introduce a single interface for identifying the Target of an
Exchange

As we remove components, everything goes down to the endpoint which
become a key feature.

The endpoint must implement the Endpoint interface.  In OSGi, the
NMR would listen to endpoints
registered in the OSGi registry and call the registry to register /
unregister the endpoints.
As part of the endpoint registration, the NMR would inject a
Channel into them, thus actually activating the
endpoint.  I guess I could write a sequence diagram for that
(anybody knows a good tool for uml ?).
In a non OSGI environment, the Endpoint will be registered in the
Registry by calling the register method
somehow.

The Endpoint receives Exchange to be processed on the process  
method.

I think we should keep the JBI 1.0 semantics and the endpoint use
the same process as for JBI 1.0, which is
send the exchange back using the Channel (with the response /
fault / error / done).  This will put the threading,
transactions and security burden on the container itself.  Which
means it is easier to write JBI apps :-)

Exchanges can be created using the Channel#createExchange method.
The only change I'd like to
integrate in the messaging API is to allow for non xml payloads and
maybe untyped attachments.  The body
could be converted automatically to a given type if supported (I
think Camel does it nicely, so I'm thinking of
shamelessly copying the converter layer).  I have added a few
helper methods on the exchanges and
messages (copy, copyFrom, ensureReReadable, display) to ease
message management.

For the deployment part, there is no packaging anymore.  One would
deploy an OSGi bundle that would
register the needed endpoints in the OSGi registry.  For certain
types of endpoints, we may need an external
activation process (such as creating a server socket for listening
to HTTP requests) that may need to be shared
across endpoints of a given type.  In such a case, you would deploy
a component that listens to new
endpoints implementing HttpEndpoint for example.  When a new
endpoint is registered, the listener would
activate a server socket that could be shared across all http
endpoints.   In a different way, if we have  a BPEL
engine, the bpel component  would listen for new bundles and look
for a specific file containing deployment
information. The component would register new endpoints in the OSGi
registry as needed (we could do that
for jaxws pojos using cxf for example).
So I said there is no more components, because this feature is not
in the api anymore, but we will certainly need
these components for some use cases.   For simple endpoints, you
would not need any component at all.
Another benefit is that you can easily deploy a whole application
inside a single OSGi bundle.  Using spring-osgi,
the bundle would just consist in a spring configuration file
containing the endpoints declaration and expose them
as OSGi services.

Of course, we need to write a JBI 1.0 compatibility layer, and we
could have an intermediate layer where SAs and
JBI components could be OSGi bundles directly, thus leveraging the
OSGi classloading mechanism.

The thing I'm not completely sure about if the Target interface
which aims to identify the target of an exchange.
I'm thinking that some metadata are associated with endpoints (like
service name, interface name, wsdl
location, etc..).   These metadatas could be used to retrieve
targets using the Registry.  We could plug in different
mechanisms to query the metadata (simple lookup per id, policy
based, etc...).  And the result itself could be
not only a single Endpoint, but could include some policies like:
load balance between all the endpoint implementing
the given interface, 

Re: IRC sessions on ServiceMix 4.0 design (was Re: ServiceMix 4.0)

2007-08-25 Thread Brian O'Neill
works for me.
-brian

On 8/25/07, Nodet Guillaume [EMAIL PROTECTED] wrote:
 Ok, sounds like we have enough people.
 So we just need to find a data and an hour.
 What about Friday 3 pm GMT,  11 am EST, 8 am PST
 Adrian, I'm not sure how to find a time that would suits you...
 Other propositions are welcome...

 Cheers,
 Guillaume Nodet

 On Aug 24, 2007, at 11:04 AM, Nodet Guillaume wrote:

  Any other people interested ?
 
  Cheers,
  Guillaume Nodet
 
  On Aug 23, 2007, at 3:37 PM, Kit Plummer wrote:
 
  I'd be up for a few chat sessions!
 
  On 8/23/07, Nodet Guillaume [EMAIL PROTECTED] wrote:
 
  Btw, if there is sufficient interest, we could organize irc meetings
  to discuss these topics and post the log to the dev list for
  archiving
  and later discussion.
 
  Cheers,
  Guillaume Nodet
 
  On Aug 22, 2007, at 4:59 PM, Nodet Guillaume wrote:
 
  As I explained in the other thread, I've been working on a new API
  for ServiceMix 4.0.
  Hopefully this will serve as an input for JBI 2.0.
  This API is available at  https://svn.apache.org/repos/asf/
  incubator/servicemix/branches/servicemix-4.0/api
 
  So here a few key changes:
* clean integration with OSGi
* the NormalizedMessage can contain not only XML
* no more components
* no more JBI packaging (just use OSGi bundles)
* move the Channel to the Endpoint
* use push delivery instead of pulling exchanges
* introduce a single interface for identifying the Target of an
  Exchange
 
  As we remove components, everything goes down to the endpoint which
  become a key feature.
 
  The endpoint must implement the Endpoint interface.  In OSGi, the
  NMR would listen to endpoints
  registered in the OSGi registry and call the registry to register /
  unregister the endpoints.
  As part of the endpoint registration, the NMR would inject a
  Channel into them, thus actually activating the
  endpoint.  I guess I could write a sequence diagram for that
  (anybody knows a good tool for uml ?).
  In a non OSGI environment, the Endpoint will be registered in the
  Registry by calling the register method
  somehow.
 
  The Endpoint receives Exchange to be processed on the process
  method.
  I think we should keep the JBI 1.0 semantics and the endpoint use
  the same process as for JBI 1.0, which is
  send the exchange back using the Channel (with the response /
  fault / error / done).  This will put the threading,
  transactions and security burden on the container itself.  Which
  means it is easier to write JBI apps :-)
 
  Exchanges can be created using the Channel#createExchange method.
  The only change I'd like to
  integrate in the messaging API is to allow for non xml payloads and
  maybe untyped attachments.  The body
  could be converted automatically to a given type if supported (I
  think Camel does it nicely, so I'm thinking of
  shamelessly copying the converter layer).  I have added a few
  helper methods on the exchanges and
  messages (copy, copyFrom, ensureReReadable, display) to ease
  message management.
 
  For the deployment part, there is no packaging anymore.  One would
  deploy an OSGi bundle that would
  register the needed endpoints in the OSGi registry.  For certain
  types of endpoints, we may need an external
  activation process (such as creating a server socket for listening
  to HTTP requests) that may need to be shared
  across endpoints of a given type.  In such a case, you would deploy
  a component that listens to new
  endpoints implementing HttpEndpoint for example.  When a new
  endpoint is registered, the listener would
  activate a server socket that could be shared across all http
  endpoints.   In a different way, if we have  a BPEL
  engine, the bpel component  would listen for new bundles and look
  for a specific file containing deployment
  information. The component would register new endpoints in the OSGi
  registry as needed (we could do that
  for jaxws pojos using cxf for example).
  So I said there is no more components, because this feature is not
  in the api anymore, but we will certainly need
  these components for some use cases.   For simple endpoints, you
  would not need any component at all.
  Another benefit is that you can easily deploy a whole application
  inside a single OSGi bundle.  Using spring-osgi,
  the bundle would just consist in a spring configuration file
  containing the endpoints declaration and expose them
  as OSGi services.
 
  Of course, we need to write a JBI 1.0 compatibility layer, and we
  could have an intermediate layer where SAs and
  JBI components could be OSGi bundles directly, thus leveraging the
  OSGi classloading mechanism.
 
  The thing I'm not completely sure about if the Target interface
  which aims to identify the target of an exchange.
  I'm thinking that some metadata are associated with endpoints (like
  service name, interface name, wsdl
  location, etc..).   These metadatas could be used to retrieve
  targets using the Registry.  

Re: IRC sessions on ServiceMix 4.0 design (was Re: ServiceMix 4.0)

2007-08-25 Thread Kit Plummer
Me too.  I think.
-- 
Kit Plummer
Nobody-in-Charge @ Black:Hole:Logic
http://www.blackholelogic.com