Re: GShell

2007-10-04 Thread Nodet Guillaume

Yeah agreed, I discovered this one too.
I've played a bit with pax-runner too this week while integrating  
GShell.


Anyway, from a gshell perspective, i have been able to have a local  
console running.  However, it is quite heavy as you need to bring  
plexus, xstream, classworlds and gshell itself.I really like the  
fact that GShell has a nice ansi console, a nice command line  
management and remoting.  However, I'll try to have it delegate to  
the felix shell instead as it is much more OSGi friendly (commands  
are registered in the osgi registry).


On Oct 3, 2007, at 6:57 AM, Kit Plummer wrote:


Im using the pax-logging stuff on a project.  Very nice.

Kit

On Oct 2, 2007, at 5:28 PM, Guillaume Nodet [EMAIL PROTECTED]  
wrote:



Btw, the pax project has lots of interesting things.
See http://wiki.ops4j.org/confluence/display/ops4j/Pax+RadMan and  
much more.


On 10/3/07, Guillaume Nodet [EMAIL PROTECTED] wrote:

Forwarding to the dev list...

FYI, Gshell is a subproject of Geronimo providing an extensible  
console

(local and remote), kinda like bash.

-- Forwarded Message
From: Guillaume Nodet [EMAIL PROTECTED]
Date: Wed, 03 Oct 2007 02:11:44 +0200
To: Bruce Snyder [EMAIL PROTECTED]
Conversation: On duplicating effort
Subject: Re: On duplicating effort




On 3/10/07 2:02, Bruce Snyder [EMAIL PROTECTED] wrote:

On 10/2/07 5:59 PM, Guillaume Nodet [EMAIL PROTECTED]  
wrote:


https://issues.apache.org/activemq/secure/IssueNavigator.jspa? 
reset=truemod
e=hidesorter/order=DESCsorter/ 
field=priorityresolution=-1pid=10950fixfo

r=11845


So are you using GShell for SM-1074?


Not really.  Imho, gshell is just an interface to access features  
provided
by other mechanism.  Lifecycle is really tied to OSGi lifecycle,  
but yeah,
we need to create Gshell commands for OSGi related stuff (start /  
stop
bundles, etc...), but we could also have a web console for that,  
or a JMX
one...  What I mean is that Gshell should remain a mean of  
accessing these

features.



We also need to add a JIRA issue for the 1.0 compatibility layer.


Done, SM-1083.

Btw, we should have this discussion on the dev list ;-)

Guillaume

-- End of Forwarded Message



IONA Technologies SARL
Identification: 415 295 930 R.C.S. Nanterre
Siège: Immeuble Elysées La Défense, 7C place du Dôme, 92056 La  
Défense Cedex, France






--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



Re: question about servicemix 3.1.2 release

2007-09-12 Thread Nodet Guillaume


On Sep 12, 2007, at 8:46 AM, Freeman Fang wrote:


Hi all,

When are we going to release servicemix 3.1.2? As a new commiter in  
servicemix team, I'd like to know how is the release process looks  
like.

If possible, shall I be release manager of this time?  :-)


Yeah of course you can :-)
There are some instructions available at http://incubator.apache.org/ 
servicemix/release-guide.html
but these are a bit outdated, so we'll have to update those (and  
maven can not really be used for

creating the release)...
Let me have a breakfast and write something more accurate...


Any suggestion is appreciated.

Best Regards


Freeman


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



Re: Do you know the probable Release Date ServiceMix 4.0?

2007-09-07 Thread Nodet Guillaume

Well, not yet as it's still a bit fuzzy...
In 2008 for sure...
Do you want to help on that ?

On Sep 7, 2007, at 3:52 PM, Simon Sekat wrote:


We are counting on using it because it supports OSGI deployment model.

Thank you,

--

Simon S.


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



Re: IRC session

2007-09-03 Thread Nodet Guillaume

It sounds like there is an agreement on the following hour:

On Sep 3, 2007, at 10:10 AM, rs d wrote:


3 pm GMT,  11 am EST, 8 am PST


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



ServiceMix graduation postponed

2007-08-31 Thread Nodet Guillaume
Just FYI, ServiceMix graduation approval by the ASF board is  
postponed a bit.
It has simply been forgotten during the last meeting.  The next  
meeting should be on september the 19th...


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



Re: daily snapshot cleanup

2007-08-29 Thread Nodet Guillaume

Maybe we should use 30 days instead of 7 in case something wrong happen.
It may be safer...

On Aug 29, 2007, at 9:35 AM, James Strachan wrote:


I've added a crontab to clean up old snapshots from the m2 snapshot
repo for ActiveMQ, Camel and ServiceMix.

If anyone needs to tinker with the script its here...
https://svn.apache.org/repos/asf/activemq/scripts/activemq- 
snapshots-clean.sh


This should hopefully keep the disk usage of our snapshots down (as
they were in the 22Gb range!)

--
James
---
http://macstrac.blogspot.com/


--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/



Re: ServiceMix 4.0 api

2007-08-28 Thread Nodet Guillaume
Btw, I have uploaded the site for the whole project which is easier  
to manage.

   http://people.apache.org/~gnodet/servicemix-4.0-SNAPSHOT/

Cheers,
Guillaume Nodet

On Aug 28, 2007, at 12:11 AM, Nodet Guillaume wrote:

I've refactored a few things in the api and introduced back the  
listeners and flows.

For those who prefer to read javadoc, take a look at:
 http://people.apache.org/~gnodet/servicemix-4.0/site/apidocs/

The javadoc is quite low on comments right now, so if any area  
appears to be unclear,

ask for comments and I will improve the doc asap.
Although any ideas, feedback, patches are always welcome.

To test the API, I have started a really dumb implementation of it  
in the branch,

but don't expect much at this point ;-)
http://svn.apache.org/repos/asf/incubator/servicemix/branches/ 
servicemix-4.0/


Cheers,
Guillaume Nodet




Re: ServiceMix 4.0 api

2007-08-28 Thread Nodet Guillaume

I have committed a simple test showing how to expose an endpoint and
how to communicate with it.
See http://svn.apache.org/repos/asf/incubator/servicemix/branches/ 
servicemix-4.0/core/src/test/java/org/apache/servicemix/core/ 
IntegrationTest.java


How does it sounds ?

Cheers,
Guillaume Nodet

On Aug 28, 2007, at 12:11 AM, Nodet Guillaume wrote:

I've refactored a few things in the api and introduced back the  
listeners and flows.

For those who prefer to read javadoc, take a look at:
 http://people.apache.org/~gnodet/servicemix-4.0/site/apidocs/

The javadoc is quite low on comments right now, so if any area  
appears to be unclear,

ask for comments and I will improve the doc asap.
Although any ideas, feedback, patches are always welcome.

To test the API, I have started a really dumb implementation of it  
in the branch,

but don't expect much at this point ;-)
http://svn.apache.org/repos/asf/incubator/servicemix/branches/ 
servicemix-4.0/


Cheers,
Guillaume Nodet




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

2007-08-28 Thread Nodet Guillaume


On Aug 28, 2007, at 2:48 PM, Piotr Bzdyl wrote:


Hi,

I would also like to participate in this session. When are you going
to send data about the location of the IRC session?


See http://www.nabble.com/forum/ViewPost.jtp? 
post=12323536framed=yskin=12049

We will use the standard IRC channel:
  see http://incubator.apache.org/servicemix/irc.html



I have also another question: could you recommend any easy in use IRC
client (for Windows preferably)? I haven't been using IRC (except one
or two times).


Before switching to mac, I was using xchat.
See http://www.xchat.org/

Cheers,
Guillaume Nodet



Best regards,
Piotr

On 8/24/07, Nodet Guillaume [EMAIL PROTECTED] 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

Re: ServiceMix 4.0 api

2007-08-28 Thread Nodet Guillaume

Yeah, i moved it.  Try
   http://people.apache.org/~gnodet/servicemix-4.0-SNAPSHOT/
The direct link to the api is:
   http://people.apache.org/~gnodet/servicemix-4.0-SNAPSHOT/ 
org.apache.servicemix.api/apidocs/index.html


Cheers,
Guillaume Nodet

On Aug 28, 2007, at 3:02 PM, Gordon Dickens wrote:


Hello Guillaume,

I am getting a page not found with the javadoc site.

Regards,
Gordon

Nodet Guillaume wrote:

I've refactored a few things in the api and introduced back the
listeners and flows.
For those who prefer to read javadoc, take a look at:
  http://people.apache.org/~gnodet/servicemix-4.0/site/apidocs/

The javadoc is quite low on comments right now, so if any area
appears to be unclear,
ask for comments and I will improve the doc asap.
Although any ideas, feedback, patches are always welcome.

To test the API, I have started a really dumb implementation of it in
the branch,
but don't expect much at this point ;-)
 http://svn.apache.org/repos/asf/incubator/servicemix/branches/
servicemix-4.0/

Cheers,
Guillaume Nodet

.








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

2007-08-28 Thread Nodet Guillaume

I'm using Colloquy (http://colloquy.info/)

Cheers,
Guillaume Nodet


On Aug 28, 2007, at 11:57 PM, Daryl Richter wrote:


On Aug 28, 2007, at 8:53 AM, Nodet Guillaume wrote:



On Aug 28, 2007, at 2:48 PM, Piotr Bzdyl wrote:


Hi,

I would also like to participate in this session. When are you going
to send data about the location of the IRC session?


See http://www.nabble.com/forum/ViewPost.jtp? 
post=12323536framed=yskin=12049

We will use the standard IRC channel:
  see http://incubator.apache.org/servicemix/irc.html



I have also another question: could you recommend any easy in use  
IRC
client (for Windows preferably)? I haven't been using IRC (except  
one

or two times).


Before switching to mac, I was using xchat.
See http://www.xchat.org/


So, now that you are on mac, what do you use?  ;)  (Another IRC  
newbie)




Cheers,
Guillaume Nodet





--
Daryl
Email *my = [ daryl at: @eddl dot: @us ];
Weblog *blog = @”http://itsallsemantics.com”;







IRC session

2007-08-28 Thread Nodet Guillaume

Unfortunately I will be traveling until Friday evening.
What about moving it to Monday instead at the same hour ?
3 pm GMT,  11 am EST, 8 am PST
Sorry about that...

Cheers,
Guillaume Nodet

Re: ServiceMix 4.0

2007-08-27 Thread Nodet Guillaume

I would say the opposite.  The OSGi classloaders are much more
powerful and you can more easily control the visibility of classes.
In addition, if JCL is required by a given bundle A, it does not
mean that it will be visible by a bundle using bundle A.

Obviously, this means to be tested (or maybe OSGi experts could
help there...)

Cheers,
Guillaume Nodet

On Aug 27, 2007, at 9:29 PM, Bruce Snyder wrote:


Also, moving toward an architecture based on OSGi almost guarantees
that we will run into classloader issues with JCL.

Bruce




ServiceMix 4.0 api

2007-08-27 Thread Nodet Guillaume
I've refactored a few things in the api and introduced back the  
listeners and flows.

For those who prefer to read javadoc, take a look at:
 http://people.apache.org/~gnodet/servicemix-4.0/site/apidocs/

The javadoc is quite low on comments right now, so if any area  
appears to be unclear,

ask for comments and I will improve the doc asap.
Although any ideas, feedback, patches are always welcome.

To test the API, I have started a really dumb implementation of it in  
the branch,

but don't expect much at this point ;-)
http://svn.apache.org/repos/asf/incubator/servicemix/branches/ 
servicemix-4.0/


Cheers,
Guillaume Nodet


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

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

2007-08-24 Thread Nodet Guillaume

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, etc  Also, I think Target should be
injected on Endpoints using spring, so you would look up a
targe using a spring bean factory (or multiple ones):
   smx:endpoint-target id=my-endoint-id /
or
   smx:interface-target name=my:qname /
The API is quite open right now, so any ideas welcome.

I think i

Re: ServiceMix 4.0 and federation (was Re: ServiceMix 4.0)

2007-08-24 Thread Nodet Guillaume

So if i understand you correctly, you are mostly concerned of enhancing
the JMS flow in the following areas:
  * avoid ping/pong and lower bandwidth requirement
  (avoid sending the whole exchange and only send the actual data)
  * enhance security (authentication, encryption ?)
  * enhance the endoint registry wrt to services or instances going  
up and down



Did I catch you correcty ?

For the bandwidh requirement, I'm sure we can do that and reconstruct  
a fake
exchange on the other side.  We would loose informations wrt to the  
input message
but I don't think this would be too much a problem.  For the ping/ 
pong stuff, I'm sure
we can find a way to optimize it somehow.  We may have troubles  
handling the
InOptionalOut pattern though, as you don't really know if you will  
receive an Out
message or nothing, but for the other simple patterns (InOnly and  
InOut) it should
be quite easy to send back the exchange with a DONE status just after  
having send

the jms message containing the In or Out.

On the security subject, I know there is lots to do, but this is an  
area i'm not so familiar
with.  My biggest concern is that we security can be applied at the  
connection level
or at the message level.  NMR-NMR security for the JMS flow could be  
delegated

to ActiveMQ i guess (using AMQ security features).

On the registry side, I think one of the main problem is that there  
is no way to tell the
difference between an endpoint that goes down because the server is  
no more
accessibe (it will be up again at a later time) or because the  
endpoint has been
undeployed.  Imho, this is a key requirement to be able to make  
routing decisions.
I don't know yet how to handle this problem:  if a server has been  
shutdown, it may

never go up again... So i'm still not sure how to handle the problem :-(

Cheers,
Guillaume Nodet

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


Sure Guillaume.

Maybe the best thing to do is explain the concept...and what we've  
done to

meet our requirements.

It is actually quite simple.  We needed to be able to connect two  
computers
together via TCP/IP, and have a publisher on one system, the  
consumer on the
other.  Granted we've got lot's of both on each - but, the premise  
is that

link between is transparent.

Currently, we are using a feature of ActiveMQ called Network of  
Brokers

(NoB) to create a mapping of destinations/endpoints.

Where it gets really complicated is when we only want to allow a  
specific

MEPs to cross the NoB connection.  In this example, bandwidth is not a
commodity and must be tightly constrained.  We were tolerant of all  
the SEDA
flow handshaking, but I believe it would be nice if InOnly MEPS  
really were
just a single transmission (turning off levels of reliability/ 
durability).
Also, in our environment multicast isn't possible, and the networks  
are
fairly ad-hoc...meaning not stable.  Plus, we need to know about  
the state

of the link.

Service registration happens also in different configurations.  For  
example,
one topology we support is a hierarchical flow (master-slaves).   
Imagine a
simple sensor net.  There would be a single point at the top, where  
are data

were to be aggregated.  So, in this example the NoBs need to support
followers only communicating with their leader...and the  
leader only
communicating with its leader.  But, there might also be a need  
to have
shared data that is available on all platforms in network  
(health, state,

etc.).  Ding lifecycle.

I could keep going...but, am curious if anyone else looks at it  
this way.
Obviously, the notion of simple performance scalability is one way  
to look
at.  There is a lot of capability in the NoB, but I think it falls  
a bit
short.  There are a few features that we'd like to see, that would  
help us

federate better.  BC/SE/SA-level authentication to the bus, as well as
platform-to-platform, or NMR-to-NMR authentication would be very  
helpful.
We've been looking at grid/cluster-like capabilities too - for  
example, if
one platform is maxed out from a processing perspective, sending  
the SA and

the message/task to another platform in network automatically.

Thanks for taking the time to do this.

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


Hi Kit,

I'm quite sure you would have a very valuable input there, given your
experience
on ServiceMix.  So I'm starting this new thread.  Would you mind
throwing a few
ideas there ?

Cheers,
Guillaume Nodet


On Aug 23, 2007, at 5:39 AM, Kit Plummer wrote:


On 8/22/07, Terry Cox [EMAIL PROTECTED] wrote:


Interesting.

We need to have a very serious chat about application lifecycles  
and

governance...

Terry




And Federating...distribution of the NMR across n-platforms!

--
Kit Plummer
Nobody-in-Charge @ Black:Hole:Logic
http://www.blackholelogic.com







Re: ServiceMix 4.0

2007-08-24 Thread Nodet Guillaume


On Aug 23, 2007, at 11:58 AM, James Strachan wrote:


On 8/22/07, Nodet Guillaume [EMAIL PROTECTED] 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


Sounds great!

How far have you got implementing this? :)


Not so far yet.  I've played a bit with OSGi last month in a branch,
but not much on this very api...





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'd hope we can easily just wire in camel-core as the default type
converter layer implementation as we've got most common type
conversions sorted now along with a simple extension mechanism to
support any type conversions. i.e. you should be able to invoke the
type conversion stuff without the SMX API having any hard dependency
on Camel - let it be just an implementation detail.


Yeah, we certainly need to work on the details. I will continue  
discussing

that by replying to your other email.





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.


Interesting differentiation between component and endpoint; I like it.


My main point is that usually an endpoint is sufficient by itself. At  
least the NMR
only needs to know about endpoints.  Components are needed when  
additional

resources or deployment mechanism need to be handled.





 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).


I wonder should we come up with some standard OSGi metadata that
components should try adopt to know when to auto-detect things like
HttpEndpoint or BPEL. I guess component developers can do whatever
they like but it might be nice to at least document some guidelines
for nicely behaving components


I think if you deploy java code, you can easily use an interface to  
recognize
endpoints of a certain type.  This is the easiest way imho.   For a  
BPEL process
you can always register a BpelEndpoint that contains a pointer to the  
needed
resources (bpel process and wsdls).  This may not be nicest way to  
handle things,
but this allow to more tightly control which endpoints are created.   
If we search the
bundle for known resources (a wsdl or bpel for example), we may have  
conflicts
where differents components would try to activate an endpoint for the  
same resource.
Another way would be to use some

Re: ServiceMix 4.0 and federation (was Re: ServiceMix 4.0)

2007-08-24 Thread Nodet Guillaume


On Aug 24, 2007, at 6:44 PM, Bruce Snyder wrote:


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


On the registry side, I think one of the main problem is that there
is no way to tell the
difference between an endpoint that goes down because the server is
no more
accessibe (it will be up again at a later time) or because the
endpoint has been
undeployed.  Imho, this is a key requirement to be able to make
routing decisions.
I don't know yet how to handle this problem:  if a server has been
shutdown, it may
never go up again... So i'm still not sure how to handle the  
problem :-(


This is one place where a proper registry might be useful. If the
registry handles metadata for a given component, it can provide this
type of finer grained information to anyone that is interested. E.g.,
if a component is undeployed, the deployer tells the registry that
componentX is being undeployed and the registry would store that
information. When componentX comes back online it tells the registry
and the registry updates the metadata.



I agree, but it may not even be sufficient.  Let's take the example  
of Kit.

This environment is very dynamic and instances will not even say
that the endpoints are undeployed.  They are just gone and may never
appear again.  Another example: if you use a cluster of servers and you
want to bring one down, will you really undeploy everything or just shut
ServiceMix down ?

So I'm not sure you can really know wether a service will come up at a
later time.  This requires much more knowledge that ServiceMix can
have.  I guess we could have a default behavior that would say when a
server goes down if the endpoints should be considered temporarily
unavailable or permanently lost.

We currently don't have such a feature in the JMS/JCA flows, but we
definitely need something around that...

Cheers,
Guillaume Nodet



Re: Spring extensions to OSGi (was Re: ServiceMix 4.0)

2007-08-24 Thread Nodet Guillaume
In my mind, ServiceMix will be agnostic wrt to the OSGi  
implementation used.
At the same time, I'm thinking about creating a distribution for  
ServiceMix that

would include Felix runtime...

And yeah, OSGi has never been a dependency so far.

I suggest to take a look at spring-osgi too.
See http://www.springframework.org/osgi
I really think we should use it.

Cheers,
Guillaume Nodet


On Aug 24, 2007, at 7:10 PM, Brian O'Neill wrote:


Guillaume,

Just getting grounded...

Would SM 4.0 leverage Felix to get OSGi capabilities?

I took a grep through the code, it doesn't look like it uses it at all
right now:
[EMAIL PROTECTED]:~/dev/apache.org/servicemix- grep -r elix *
and osgi appears only in the eclipse plugins.

Just verifying, OSGi is a brand new dependency for SM, right?

Which leads me to my second question,  do you think the dependency
would be a hard dependency (on the actual felix impl), or would it be
implementation agnostic? (e.g. able to run on Equinox as well)

I am going to pull felix now and start playing around with it.

-brian

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



One topic not covered in this excellent post is a standard mechanism
to provide access to other endpoint metadata (e.g. the WSDL file) -
having that as a standard OSGi metadata would be cool (e.g. a WSDL
URI)

Yeah, I have had a closer look at how OSGi provides URL handlers.
This is not as simple as I thought it would be.  OSGI defines
a bundle: protocol that can be used to access resources in the  
bundle.
Unfortunately, the url has to contain the bundle id, which means  
that
the URLs have to be built dynamically.  I'm sure we can create a  
spring

bean factory to create those dynamically though...
Or a post factory processor that would process the URIs to  
rewrite them

and include the bundle id.

This way, the service could contain a WSDL_URL property associated
with it (when registered in the OSGi registry) that would be a  
bundle url

pointing to the wsdl inside the bundle.  This would solve one of JBI
limitation
which is the ability to have complex WSDLs definitions including  
other

WSDL or XSD.



I've been thinking about that a bit more.
It seems to me that using a kind of PropertyPlaceHolder (i.e. a
BeanFactoryPostProcessor) sounds like a good idea.
It could check all properties and perform replacement of an url like:
   bundle-ext://org/test/dummy.wsdl
to
   bundle://7.0/org/test/dummy.wsdl
where 7.0 is the bundle id.

Another extension could be a spring bean factory that expose a  
blob of

xml to an url
for other bundles to consume.  Inside your spring definition file,  
one

would have:

smx-osgi:export-xml url=org/test/dummy.wsdl
  wsdl:description ...
 ...
  /wsdl:description
/smx:osgi

Thus a single configuration file (the spring one) could contain blob
of xml (well,
not only xml i guess) that could be exposed as an url.

I think the first idea will prove really useful to expose a WSDL to
other bundles.
I'm not so sure about the second one...

--
Cheers,
Guillaume Nodet

Blog: http://gnodet.blogspot.com/




--
Brian ONeill
Source Equity (http://www.sourceequity.com)
jBIZint (http://www.jbizint.org)
Technical Architect, Gestalt LLC (http://www.gestalt-llc.com)
mobile:215.588.6024




Re: ServiceMix 4.0 and federation (was Re: ServiceMix 4.0)

2007-08-24 Thread Nodet Guillaume


On Aug 24, 2007, at 7:28 PM, Kit Plummer wrote:


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


So if i understand you correctly, you are mostly concerned of  
enhancing

the JMS flow in the following areas:
   * avoid ping/pong and lower bandwidth requirement
   (avoid sending the whole exchange and only send the actual  
data)

   * enhance security (authentication, encryption ?)
   * enhance the endoint registry wrt to services or instances going
up and down




Did I catch you correcty ?


Yes.The registry piece is a little interesting  for us to.   
Because we
are integrating hardware via service components we've had to  
abstract the
notion of capabilities.  It would be nice if the registry were  
extensible.


If we leverage the OSGi registry, you can associate a bunch of metadata
to each service registered in the registry (in our cases, endpoints).

Cheers,
Guillaume Nodet



For the bandwidh requirement, I'm sure we can do that and reconstruct

a fake
exchange on the other side.  We would loose informations wrt to the
input message
but I don't think this would be too much a problem.  For the ping/
pong stuff, I'm sure
we can find a way to optimize it somehow.  We may have troubles
handling the
InOptionalOut pattern though, as you don't really know if you will
receive an Out
message or nothing, but for the other simple patterns (InOnly and
InOut) it should
be quite easy to send back the exchange with a DONE status just after
having send
the jms message containing the In or Out.



I think as long as everything is optional wrt to optimizations the  
fact that
it may exclude various patterns is acceptable.  We've done  
everything in an

InOnly world.


On the security subject, I know there is lots to do, but this is an

area i'm not so familiar
with.  My biggest concern is that we security can be applied at the
connection level
or at the message level.  NMR-NMR security for the JMS flow could be
delegated
to ActiveMQ i guess (using AMQ security features).



Agreed.  It is now...the Network of Brokers feature.  But, there is  
not

really any concept of policy.

On the registry side, I think one of the main problem is that there

is no way to tell the
difference between an endpoint that goes down because the server is
no more
accessibe (it will be up again at a later time) or because the
endpoint has been
undeployed.  Imho, this is a key requirement to be able to make
routing decisions.
I don't know yet how to handle this problem:  if a server has been
shutdown, it may
never go up again...



Yeh, like if it has been blown up by an IED...


So i'm still not sure how to handle the problem :-(

Yep, you are right.  Right now if we undeploy a service assembly, its
endpoint still exists, and messages are still routed to it.  Could  
just be a

bug.  ; }

I'm sure more discussion on this will follow.


Cheers,

Guillaume Nodet

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


Sure Guillaume.

Maybe the best thing to do is explain the concept...and what we've
done to
meet our requirements.

It is actually quite simple.  We needed to be able to connect two
computers
together via TCP/IP, and have a publisher on one system, the
consumer on the
other.  Granted we've got lot's of both on each - but, the premise
is that
link between is transparent.

Currently, we are using a feature of ActiveMQ called Network of
Brokers
(NoB) to create a mapping of destinations/endpoints.

Where it gets really complicated is when we only want to allow a
specific
MEPs to cross the NoB connection.  In this example, bandwidth is  
not a

commodity and must be tightly constrained.  We were tolerant of all
the SEDA
flow handshaking, but I believe it would be nice if InOnly MEPS
really were
just a single transmission (turning off levels of reliability/
durability).
Also, in our environment multicast isn't possible, and the networks
are
fairly ad-hoc...meaning not stable.  Plus, we need to know about
the state
of the link.

Service registration happens also in different configurations.  For
example,
one topology we support is a hierarchical flow (master-slaves).
Imagine a
simple sensor net.  There would be a single point at the top, where
are data
were to be aggregated.  So, in this example the NoBs need to support
followers only communicating with their leader...and the
leader only
communicating with its leader.  But, there might also be a need
to have
shared data that is available on all platforms in network
(health, state,
etc.).  Ding lifecycle.

I could keep going...but, am curious if anyone else looks at it
this way.
Obviously, the notion of simple performance scalability is one way
to look
at.  There is a lot of capability in the NoB, but I think it falls
a bit
short.  There are a few features that we'd like to see, that would
help us
federate better.  BC/SE/SA-level authentication to the bus, as  
well as

platform-to-platform, or NMR-to-NMR authentication would be very
helpful.
We've been looking at grid

Re: ServiceMix 4.0 and type converters

2007-08-24 Thread Nodet Guillaume


On Aug 23, 2007, at 1:48 PM, James Strachan wrote:


I thought I'd spin up another thread on this...

On 8/23/07, Brian O'Neill [EMAIL PROTECTED] wrote:

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

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.



I haven't looked at Camel converters, but would you consider adding a
contentType and contentEncoding mimicing the headers of HTTP  SIP.
The endpoint can then use the type and encoding to determine how to
handle the content.


Incidentally thats come up recently in Camel too; the type converter
stuff is so useful, folks wanna use it for many different things when
the Java class/interface is not enough to specify a conversion. e.g.
convert to Java Object using JAXB2 versus serialization versus SOAP
encoding

I guess this is no longer type conversion, but more content conversion
- so maybe a separate API is required. But certainly folks wanna be
able to do things like

// specify the required Java type and content type
InputStream in = message.getBody(InputStream.class, application/ 
xml);


But am wondering if for things like content type / content encoding
stuff we need a separate kind of mechanism than the Java type
conversion stuff; or if we could just extend the model to include
content type as well?


I agree.  The type converter api is not necessarily the best suited  
for our

needs here and may be more suited for converting properties rather
than the body.  There are lots of different things here.  We need to  
be able to send
xml documents, binary streams and POJOs: this would cover most of the  
needs
I guess.  Then, some content type may be able to be converted from  
one format to
another: a jaxb2 pojo may be transformed to xml, a JSON stream may be  
converted
to xml too using http://jettison.codehaus.org/), but I'm not sure how  
far we should go
as there may be lots of different ways to convert data between  
different formats.
Complex transformations may need to be more tightly controlled by  
using an endpoint.


Cheers,
Guillaume Nodet



--
James
---
http://macstrac.blogspot.com/




Re: ServiceMix 4.0

2007-08-23 Thread Nodet Guillaume


On Aug 23, 2007, at 5:41 AM, Brian O'Neill wrote:


Fanastic.  Once we get consensus on the direction (your first few
points), I wonder if we shouldn't break this email out to discuss the
specifics.


Yeah, good idea!



On 8/22/07, Nodet Guillaume [EMAIL PROTECTED] 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


Excellent!  Spot on.


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.


RE: uml tool
Bruce, I've struggled with the same.  I actually run
Parallels/VMWare+Visio, just to keep compatibility with others I have
to interact with.  FLOSS community desperately needs a architecture
tool.


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 :-)


+1


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.



I haven't looked at Camel converters, but would you consider adding a
contentType and contentEncoding mimicing the headers of HTTP  SIP.
The endpoint can then use the type and encoding to determine how to
handle the content.


I'm open.  Would the contentType be a mime type?  In such a case it  
is not
sufficient to know how the content is represented.  For example if  
the content
type is xml, you can still have a plain stream, a Source or a DOM  
document.

Camel converters may help here.  Type converters are explained at
http://activemq.apache.org/camel/type-converter.html




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.


sweet.


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

Re: ServiceMix 4.0

2007-08-23 Thread Nodet Guillaume


On Aug 23, 2007, at 10:03 AM, Nodet Guillaume wrote:



On Aug 23, 2007, at 5:41 AM, Brian O'Neill wrote:




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.



I haven't looked at Camel converters, but would you consider adding a
contentType and contentEncoding mimicing the headers of HTTP  SIP.
The endpoint can then use the type and encoding to determine how to
handle the content.


I'm open.  Would the contentType be a mime type?  In such a case it  
is not
sufficient to know how the content is represented.  For example if  
the content
type is xml, you can still have a plain stream, a Source or a DOM  
document.

Camel converters may help here.  Type converters are explained at
http://activemq.apache.org/camel/type-converter.html


Btw, it makes me think of another related issue.  Should we add  
headers to the attachments, where
the attachment would be an Object + a set of headers rather than just  
the object?  Usually attachments
come from a mime request and some headers may be associated with  
them.  As anyone ever seen the
need to obtain these attachments?  I know CXF keep them, so I'm quite  
sure there is a good reason.


Cheers,
Guillaume Nodet



Re: ServiceMix 4.0

2007-08-23 Thread Nodet Guillaume

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, etc  Also, I think Target should be  
injected on Endpoints using spring, so you would look up a

targe using a spring bean factory (or multiple ones):
   smx:endpoint-target id=my-endoint-id /
or
   smx:interface-target name=my:qname /
The API is quite open right now, so any ideas welcome.

I think i covered the main areas of the API.  The main goal is OSGi  
and leveraging it as much as possible.  There are
still some gray

ServiceMix 4.0 and federation (was Re: ServiceMix 4.0)

2007-08-23 Thread Nodet Guillaume

Hi Kit,

I'm quite sure you would have a very valuable input there, given your  
experience
on ServiceMix.  So I'm starting this new thread.  Would you mind  
throwing a few

ideas there ?

Cheers,
Guillaume Nodet


On Aug 23, 2007, at 5:39 AM, Kit Plummer wrote:


On 8/22/07, Terry Cox [EMAIL PROTECTED] wrote:


Interesting.

We need to have a very serious chat about application lifecycles and
governance...

Terry




And Federating...distribution of the NMR across n-platforms!

--
Kit Plummer
Nobody-in-Charge @ Black:Hole:Logic
http://www.blackholelogic.com




Lifecycle and governance (was Re: ServiceMix 4.0)

2007-08-23 Thread Nodet Guillaume

Terry,

I'm just starting a new thread here so that it will be easier to  
follow the discussions.

Any ideas are welcome...

Cheers,
Guillaume Nodet


On Aug 23, 2007, at 1:00 AM, Terry Cox wrote:


Interesting.

We need to have a very serious chat about application lifecycles  
and governance...


Terry




Re: Servicemix ILog JRules

2007-08-22 Thread Nodet Guillaume
I have never used JRules, so I can't really help on this part.  I  
guess you should try
 to understand how the drools component work (or try the hello world  
se tutorial).

It should be a good basis for building a SE.

Cheers,
Guillaume Nodet

On Aug 22, 2007, at 9:44 PM, Manjunath ShankaraReddy wrote:


I am Using ILog Jrules( Rules Engine) and Servicemix ESB.

I want to integrate ILOG JRules with servicemix. I am planning to  
create
Component in Servicemix similar to Servicemix-Drools that can  
integrate with

Jrules.

Can anyone please suggest how to approach this problem?. Your help is
appreciated.




Re: ServiceMix 4.0

2007-08-22 Thread Nodet Guillaume


On Aug 22, 2007, at 11:43 PM, Bruce Snyder wrote:


On 8/22/07, Nodet Guillaume [EMAIL PROTECTED] 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


Nice!


   * no more components
   * no more JBI packaging (just use OSGi bundles)
   * move the Channel to the Endpoint
   * use push delivery instead of pulling exchanges


This is an interesting change for sure.


   * introduce a single interface for identifying the Target of an
Exchange


How will this work? Can you explain this one a bit more?


Basically, instead of having different ways to express how the  
exchange will be routed by the NMR
(using the endpoint, the service name or the interface name), there  
would be only a single way to express
the destination using a Reference object (not Target, sorry).  These  
objects would represent either a specific
endpoint, or a service by its name or interface name, or more complex  
policies that could be built.
These objects would be looked up in the Registry using a single  
method.  Depending on the metadata passed
to this method, you would retrieve an object that you can use as the  
target.


Btw, for simple use cases, we should avoid needing a service QName +  
endpoint name to uniquely identify
an endpoint.  An unique ID should be sufficient.   Everything else  
should be optional.


Hopefuly you would not have to deal with that the lookup directly and  
you would use spring beans factories
for that, so that you can easily inject References and use them as  
target in your endpoints.





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 ?).


I've been trying to find some good UML software for a while -
something that doesn't cost an arm and a leg, that generates sequence
diagrams (IMO, these are invaluable!) from code and that runs on MacOS
X. Anyone know of something that meets this criteria?


In a non OSGI environment, the Endpoint will be registered in the
Registry by calling the register method
somehow.


Is there any interoperability between the OSGi registry and a UDDI  
registry?


Not really.  But i'm sure we could add that as an optional feature if  
needed (but does anyone

really need to use a UDDI registry?)
OSGi registry contains services implementing a java interface with  
some associated metadata,
while UDDI contains xml document (and mainly WSDL in our use case).  
They can complement

together, but I'd really want to keep WSDL as completely optional.




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 :-)


This is exactly the architecture we need - a much cleaner separation.


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.


Very nice, sounds similar to Spring convenience classes.


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

Re: svn commit: r566880 - /incubator/servicemix/trunk/samples/wsdl-first/wsdl-first-http-su/src/main/resources/xbean.xml

2007-08-17 Thread Nodet Guillaume

I think there is another problem here.
The defaultMep should not be needed, as the BC should recognized  
which operation is targeted and should infer the mep automatically.   
If the attribute is needed, it means:

  1) the request sent is not correct
  2) the operation recognition mechanism is broken

Cheers,
Guillaume Nodet

On Aug 17, 2007, at 12:57 AM, [EMAIL PROTECTED] wrote:


Author: bsnyder
Date: Thu Aug 16 15:57:24 2007
New Revision: 566880

URL: http://svn.apache.org/viewvc?view=revrev=566880
Log:
SM-1033: WSDL-First example fails due to missing defaultMep  
attribute in wsdl-first-http-su's xbean.xml.


Modified:
incubator/servicemix/trunk/samples/wsdl-first/wsdl-first-http- 
su/src/main/resources/xbean.xml


Modified: incubator/servicemix/trunk/samples/wsdl-first/wsdl-first- 
http-su/src/main/resources/xbean.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/ 
samples/wsdl-first/wsdl-first-http-su/src/main/resources/xbean.xml? 
view=diffrev=566880r1=566879r2=566880
== 

--- incubator/servicemix/trunk/samples/wsdl-first/wsdl-first-http- 
su/src/main/resources/xbean.xml (original)
+++ incubator/servicemix/trunk/samples/wsdl-first/wsdl-first-http- 
su/src/main/resources/xbean.xml Thu Aug 16 15:57:24 2007

@@ -25,6 +25,7 @@
  targetService=person:PersonService
  role=consumer
  locationURI=http://0.0.0.0:8192/PersonService/;
+ defaultMep=http://www.w3.org/2004/08/wsdl/in-out;
  soap=true /

 /beans






Size of CXF based components

2007-08-17 Thread Nodet Guillaume

Freeman,

I've just noticed that the size of the two CXF based components is  
very high.  It seems there are lots of jars that are included but not  
really needed (xalan, xerces, wsdl4j, woodstox, etc...).  Lots of  
these jars are already in ServiceMix container classpath or provided  
by servicemix-shared shared library.

Could you take a look and try to reduce these size please?

Cheers,
Guillaume Nodet