You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Charles Souillard <Ch...@ext.bull.net> on 2006/03/21 12:11:58 UTC

general JBI question

Hi all,

I have an application wich provides a service called S1.
This application is running on a remote server and is accessible via 
WebServices.

What is the standard way to "publish" my service in SM. In fact the 
functionnality needed is to use all provided BCs available in SM.
I can read in JBI spec :
"Service Engines are essentially standard containers for hosting 
WSDL-defined service providers adnd service consumers *that are internal 
to the JBI environment*"

So should I
1) create a SE for S1 which will receive messages from the NMR and 
forward them to the WS BC which will call my external S1 service ?
2) create a SE for S1 which will receive messages from the NMR and 
forward them directly to my external S1 service ?
3) create a BC for my S1 service ?

There is no way to "publish" a new service in SM without creating a 
component (BC or SE), is that right ?

Schemas defined in JBI spec in 4.9 Examples is not the same. In fact the 
message is transformed in SM using XSLT. In my case, I only want to 
forward the message without any modification. So conceptually, there is 
no need to have SE between BC1 and BC2...

In the case my S1 service "speaks" a proprietary language, I only have 
to create a new BC, is that right ?

But if I want to use an existing BC like the one doing WS calls, is it 
possible to "publish" my S1 service only by deploying a SU and telling 
it is a provider ?

Thanks fors your help.

Charles

Re: general JBI question

Posted by Raffaele Spazzoli <rs...@imolinfo.it>.
On Tue, 2006-03-21 at 12:11 +0100, Charles Souillard wrote:
> Hi all,
> 
> I have an application wich provides a service called S1.
> This application is running on a remote server and is accessible via 
> WebServices.
> 
> What is the standard way to "publish" my service in SM. In fact the 
> functionnality needed is to use all provided BCs available in SM.
> I can read in JBI spec :
> "Service Engines are essentially standard containers for hosting 
> WSDL-defined service providers adnd service consumers *that are internal 
> to the JBI environment*"
> 
> So should I
> 1) create a SE for S1 which will receive messages from the NMR and 
> forward them to the WS BC which will call my external S1 service ?
> 2) create a SE for S1 which will receive messages from the NMR and 
> forward them directly to my external S1 service ?
> 3) create a BC for my S1 service ?

number 3 is the best for your scenario

> 
> There is no way to "publish" a new service in SM without creating a 
> component (BC or SE), is that right ?
> 
yes if the bus is a pure jbi esb, in SM for example you can use old
modules configured in servicemix.xml


> Schemas defined in JBI spec in 4.9 Examples is not the same. In fact the 
> message is transformed in SM using XSLT. In my case, I only want to 
> forward the message without any modification. So conceptually, there is 
> no need to have SE between BC1 and BC2...
> 
right.

> In the case my S1 service "speaks" a proprietary language, I only have 
> to create a new BC, is that right ?
> 
the new BC would expose the service on the bus. Once the service is
available on the bus configuring the routing on your needs you can do
many thing. One could be forwarding to another BC.

> But if I want to use an existing BC like the one doing WS calls, is it 
> possible to "publish" my S1 service only by deploying a SU and telling 
> it is a provider ?
I'm not sure to understand but what you probably want to do is to deploy
a service assembly containing two service unit. 
su1 uses BC1 to bind your existing service and publish it on he bus as a
new endpoint
su2 uses BC2 to bind the endpoint to a new exposed service (the kind of
serice depends on the type of BC)

bye
Raffaele

> 
> Thanks fors your help.
> 
> Charles
> 


RE: general JBI question

Posted by Hossam Karim <hr...@gmail.com>.
I believe this is a classical ESB problem.
I think what you need your component to do is to register an external
endpoint, so that other components interested in S1 can resolve an endpoint
reference using an XML fragment that your BC can understand. So basically
you are applying the bridge pattern.
You are right, you should be able to publish your endpoint and configure
routing by deploying a service unit, if I remember correctly, Guillaume once
told me that the HTTP component can do this, but I don't know if it helps in
your situation.


-----Original Message-----
From: Charles Souillard [mailto:Charles.Souillard@ext.bull.net] 
Sent: Tuesday, March 21, 2006 1:12 PM
To: servicemix-users@geronimo.apache.org
Subject: general JBI question

Hi all,

I have an application wich provides a service called S1.
This application is running on a remote server and is accessible via 
WebServices.

What is the standard way to "publish" my service in SM. In fact the 
functionnality needed is to use all provided BCs available in SM.
I can read in JBI spec :
"Service Engines are essentially standard containers for hosting 
WSDL-defined service providers adnd service consumers *that are internal 
to the JBI environment*"

So should I
1) create a SE for S1 which will receive messages from the NMR and 
forward them to the WS BC which will call my external S1 service ?
2) create a SE for S1 which will receive messages from the NMR and 
forward them directly to my external S1 service ?
3) create a BC for my S1 service ?

There is no way to "publish" a new service in SM without creating a 
component (BC or SE), is that right ?

Schemas defined in JBI spec in 4.9 Examples is not the same. In fact the 
message is transformed in SM using XSLT. In my case, I only want to 
forward the message without any modification. So conceptually, there is 
no need to have SE between BC1 and BC2...

In the case my S1 service "speaks" a proprietary language, I only have 
to create a new BC, is that right ?

But if I want to use an existing BC like the one doing WS calls, is it 
possible to "publish" my S1 service only by deploying a SU and telling 
it is a provider ?

Thanks fors your help.

Charles