You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Stefan Klinger <kl...@cs.york.ac.uk> on 2006/02/09 14:22:47 UTC

WS Notification

Hello,

I am trying to understand the WS Notification implementation within 
ServiceMix. As far as I can tell the NotificationBroker is implemented 
as an endpoint and not as a component. Is there a reason for that? There 
also seems to be a WSNComponent and I can't tell what it is used for.

Maybe a simple example would be helpful showing a notification component 
(created using the ClassPathXmlApplicationContext) that notifies other 
components. It would be great if I could access that component via 
http+soap.

BTW, Am I right in assuming that a NotificationBroker is equivalent to a 
NotificationProducer in the WS Notification specification?

Thanks,

Stefan

Re: WS Notification

Posted by Stefan Klinger <kl...@cs.york.ac.uk>.
Thanks for the example, Guillaume,

I would be happy to add test cases and example code when I am more 
familiar with ServiceMix.

Stefan

Guillaume Nodet wrote:

> Are you talking about the new servicemix-wsn2005 component ?
> If no, you should take a look at this one, which is the new
> and more complete version of the ws-notification component.
>
> This component implements the Web Services Brokered Notification
> 1.3 (from 7 July 2005) [1].
> We do not use the NotificationProducer interface directly. This 
> interface is defined in WS-BaseNotification for
> services that can accept subscriptions.  The WS-BrokeredNotification
> goes one step further and defines a NotificationBroker which is
> responsible for managing both producers and subscribers.
>
> As a producer, you can register yourselef to the NotificationBroker
> by sending a message.  When you want to create a notification,
> you send a message to the NotificationBroker.
> As a consumer, you can subscribe to a given topic by sending a
> message to the NotificationBroker.  When a notification is received by
> the NotificationBroker, it will send it to all subscribers, applying
> xpath filters if necessary.  You can also create a pullpoint
> and poll yourself the pullpoint for new messages.
>
> A simple client API (to use from within the jbi bus) can be used to 
> perform all these tasks.
> Subscribing:  
>    JBIContainer jbi = ...
>    QName service = new QName(...)
>    String endpoint = "...";
>    NotificationBroker wsnBroker = new NotificationBroker(jbi);
>    EndpointReferenceType epr = *new* EndpointReferenceType();
>    epr.setAddress(*new* AttributedURIType());
>    epr.getAddress().setValue(service.getNamespaceURI() + *"/"* + 
> service.getLocalPart() + *"/"* + endpoint);
>    wsnBroker.subscribe(epr, "myTopic", "/@type = 'foo'");
>
> Publishing:
>
>    JBIContainer jbi = ...
>    Element notification = ...; // w3c dom element
>    NotificationBroker wsnBroker = new NotificationBroker(jbi);
>    wsnBroker.notify("myTopic", notification);
>
> Take a look at the test case [2] for more informations.
>
> Accessing the NotificationBroker on http+soap is just a matter of
> adding a binding component, which targets the NotificationBroker 
> endpoint.
>    service: new QName("http://servicemix.org/wsnotification", 
> "NotificationBroker")
> To use it, just drop the component installer in the "install" 
> directory of ServiceMix
> distribution.
>
> I do agree that we miss a real example, but we welcome all 
> contributions :)
>
> Cheers,
> Guillaume Nodet
>
>
> [1] http://docs.oasis-open.org/wsn/
> [2] 
> https://svn.apache.org/viewcvs.cgi/incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java?rev=371950&view=markup 
>
>
>
> Stefan Klinger wrote:
>
>> Hello,
>>
>> I am trying to understand the WS Notification implementation within 
>> ServiceMix. As far as I can tell the NotificationBroker is 
>> implemented as an endpoint and not as a component. Is there a reason 
>> for that? There also seems to be a WSNComponent and I can't tell what 
>> it is used for.
>>
>> Maybe a simple example would be helpful showing a notification 
>> component (created using the ClassPathXmlApplicationContext) that 
>> notifies other components. It would be great if I could access that 
>> component via http+soap.
>>
>> BTW, Am I right in assuming that a NotificationBroker is equivalent 
>> to a NotificationProducer in the WS Notification specification?
>>
>> Thanks,
>>
>> Stefan
>>
>>
>


Re: WS Notification

Posted by Guillaume Nodet <gu...@worldonline.fr>.
Are you talking about the new servicemix-wsn2005 component ?
If no, you should take a look at this one, which is the new
and more complete version of the ws-notification component.

This component implements the Web Services Brokered Notification
1.3 (from 7 July 2005) [1].
We do not use the NotificationProducer interface directly. 
This interface is defined in WS-BaseNotification for
services that can accept subscriptions.  The WS-BrokeredNotification
goes one step further and defines a NotificationBroker which is
responsible for managing both producers and subscribers.

As a producer, you can register yourselef to the NotificationBroker
by sending a message.  When you want to create a notification,
you send a message to the NotificationBroker.
As a consumer, you can subscribe to a given topic by sending a
message to the NotificationBroker.  When a notification is received by
the NotificationBroker, it will send it to all subscribers, applying
xpath filters if necessary.  You can also create a pullpoint
and poll yourself the pullpoint for new messages.

A simple client API (to use from within the jbi bus) can be used to 
perform all these tasks.
Subscribing:   

    JBIContainer jbi = ...
    QName service = new QName(...)
    String endpoint = "...";
    NotificationBroker wsnBroker = new NotificationBroker(jbi);
    EndpointReferenceType epr = *new* EndpointReferenceType();
    epr.setAddress(*new* AttributedURIType());
    epr.getAddress().setValue(service.getNamespaceURI() + *"/"* + 
service.getLocalPart() + *"/"* + endpoint);
    wsnBroker.subscribe(epr, "myTopic", "/@type = 'foo'");

Publishing:

    JBIContainer jbi = ...
    Element notification = ...; // w3c dom element
    NotificationBroker wsnBroker = new NotificationBroker(jbi);
    wsnBroker.notify("myTopic", notification);

Take a look at the test case [2] for more informations.

Accessing the NotificationBroker on http+soap is just a matter of
adding a binding component, which targets the NotificationBroker endpoint.
    service: new QName("http://servicemix.org/wsnotification", 
"NotificationBroker")
To use it, just drop the component installer in the "install" directory 
of ServiceMix
distribution.

I do agree that we miss a real example, but we welcome all contributions :)

Cheers,
Guillaume Nodet


[1] http://docs.oasis-open.org/wsn/
[2] 
https://svn.apache.org/viewcvs.cgi/incubator/servicemix/trunk/servicemix-wsn2005/src/test/java/org/apache/servicemix/wsn/component/WSNComponentTest.java?rev=371950&view=markup


Stefan Klinger wrote:

> Hello,
>
> I am trying to understand the WS Notification implementation within 
> ServiceMix. As far as I can tell the NotificationBroker is implemented 
> as an endpoint and not as a component. Is there a reason for that? 
> There also seems to be a WSNComponent and I can't tell what it is used 
> for.
>
> Maybe a simple example would be helpful showing a notification 
> component (created using the ClassPathXmlApplicationContext) that 
> notifies other components. It would be great if I could access that 
> component via http+soap.
>
> BTW, Am I right in assuming that a NotificationBroker is equivalent to 
> a NotificationProducer in the WS Notification specification?
>
> Thanks,
>
> Stefan
>
>