My situation is this:
I have:
- a producer1 that produce an event each 10 seconds (as the samples provided
by muse)
- a consumer1 subscribed to producer 1
- a producer2 
-  many consumers subscribed to producer2

The following in my scenario:

when consumer1 receive message from producer1, it must publish this event to
consumers subscribed to producer2, how can I call publish method on
producer2 from consumer1?

Producer1--(notifyEvent)--->Consumer1--(receive message and publish this
message on producer2)





Makla wrote:
> 
> Thanks a lot! I owe you one. Now I understand how things work out in
> muse..i even consider writing a tutorial about this - since there doesnt
> seem to be too many out there.
> 
> Makla
> 
> 
> Lenni Madsen wrote:
>> 
>> The sample is just a sample that for the sake of the sample continues to
>> produce messages at a given interval. In short it's a proof of concept
>> that
>> the messages can be sent and received.
>> 
>> Now if we want to do something a bit more advanced to for example to have
>> a
>> central NotificationProducer that all the other WSRF compliant services
>> can
>> call, this might be a way:
>> 
>> package org.extended.test;
>> 
>> import javax.xml.namespace.QName;
>> 
>> import org.apache.muse.core.Resource;
>> import org.apache.muse.core.ResourceManager;
>> import org.apache.muse.util.xml.XmlUtils;
>> import org.apache.muse.ws.addressing.EndpointReference;
>> import org.apache.muse.ws.addressing.soap.SoapFault;
>> import org.apache.muse.ws.dm.muws.events.Component;
>> import org.apache.muse.ws.dm.muws.events.ComponentAddress;
>> import org.apache.muse.ws.dm.muws.events.ManagementEvent;
>> import org.apache.muse.ws.dm.muws.events.Situation;
>> import org.apache.muse.ws.dm.muws.events.WefConstants;
>> import org.apache.muse.ws.dm.muws.events.WefFactory;
>> import org.apache.muse.ws.dm.muws.events.impl.SimpleWefFactory;
>> import org.apache.muse.ws.dm.muws.impl.AbstractManageabilityCapability;
>> import org.apache.muse.ws.notification.NotificationProducer;
>> import org.apache.muse.ws.notification.WsnConstants;
>> import org.w3c.dom.Element;
>> 
>> public class MyCapability extends AbstractManageabilityCapability
>> implements
>> IMyCapability
>> {
>>      
>>      private static final QName _TOPIC_NAME = new QName(NAMESPACE_URI,
>> "RuntimeEvent", PREFIX);
>>      private WefFactory factory;
>>      private ManagementEvent event;
>>      private NotificationProducer runtimeNotification;
>>      
>>     /**
>>       * Only internal objects are guaranteed to be instantiated, do not
>> depend on objects/Capabilities outside this Capability
>>       */
>>      public void initialize() throws SoapFault {
>>              super.initialize();
>>              Element[] elements =
>> getResource().getEndpointReference().getParameters();
>>              System.out.println("Element Length: "+elements.length);
>>              for(int i = 0; i < elements.length; i++){
>>                      System.out.println("Override initialization() for
>> "+elements[i].getFirstChild().getNodeValue());
>>              }
>>              _ServerName = "Extended";
>>      }
>>      /**
>>       * External capabilities are instantiated and can be used
>>       */
>>      public void initializeCompleted() throws SoapFault {
>>              super.initializeCompleted();
>>              Element[] elements =
>> getResource().getEndpointReference().getParameters();
>>              for(int i = 0; i < elements.length; i++){
>>                      System.out.println("Override
>> initializationCompleted() for
>> "+elements[i].getFirstChild().getNodeValue());
>>              }
>>              runtimeNotification =
>> (NotificationProducer)getResource().getCapability(WsnConstants.PRODUCER_URI)
>> ;
>>              // add list of Topics if needed
>>              runtimeNotification.addTopic(_TOPIC_NAME);      
>>      }
>>      /**
>>       * External capabilities are instantiated and can be used (last
>> chance)
>>       */
>>      public void prepareShutdown() throws SoapFault{
>>              super.prepareShutdown();
>>              Element[] elements =
>> getResource().getEndpointReference().getParameters();
>>              for(int i = 0; i < elements.length; i++){
>>                      System.out.println("Override prepareShutdown() for
>> "+elements[i].getFirstChild().getNodeValue());
>>              }
>>      }
>>      /**
>>       * Only internal objects are guarentied to be instantiated, do not
>> depend on objects/Capabilities outside this Capability
>>       */
>>      public void shutdown() throws SoapFault{
>>              super.shutdown();
>>              Element[] elements =
>> getResource().getEndpointReference().getParameters();                
>>              for(int i = 0; i < elements.length; i++){
>>                      System.out.println("Override shutown() for
>> "+elements[i].getFirstChild().getNodeValue());
>>              }
>>      }
>>      
>>      private String[] _TestProperty;
>> 
>>      public String[] getTestProperty()
>>      {
>>          return _TestProperty;
>>      }
>> 
>>      public void setTestProperty(String[] param0)
>>      {
>>          _TestProperty = param0;
>>      }
>>     
>>      public Element runtimeEventOperation(){
>> //           WefFactory();
>>              Element toPublish = MemoryFree();
>>              try{
>>                      getLog().info("Sending message to consumers...");
>>                      
>>                      runtimeNotification.publish(_PDP_TOPIC_NAME,
>> toPublish);
>> //                   runtimeNotification.publish(_PDP_TOPIC_NAME, event);
>>              }catch (Throwable error){
>>                      error.printStackTrace();
>>              }
>> //           return event.toXML();
>>              return toPublish;
>>     }
>>     
>>      private Element MemoryFree(){
>>              Element ExtendedElement = XmlUtils.createElement(
>>                              new QName(
>>                                              "someURI",
>>                                              "SomeName",
>>                                              "Some"
>>                                              ), 
>>                                      30.56
>>                              );
>>              return ExtendedElement;
>>      }
>>      
>> private void WefFactory(){
>>      
>>      factory = new SimpleWefFactory();
>>      event = factory.createEvent(); 
>>      
>>      Component reporter = factory.createComponent();
>>      ComponentAddress reporterAddress =
>> factory.createComponentAddress(getResource().getEndpointReference().toXML())
>> ;
>>      reporter.setAddress(reporterAddress);
>>      reporter.setName(WefConstants.REPORTER_COMP_QNAME);
>>      System.out.println("reporterAddress:
>> "+XmlUtils.toString(getResource().getEndpointReference().toXML()));
>>      Component source = factory.createComponent();
>>      ComponentAddress sourceAddress =
>> factory.createComponentAddress(getResource().getEndpointReference().toXML())
>> ;
>>      source.setAddress(sourceAddress);
>>      source.setName(WefConstants.SOURCE_COMP_QNAME);
>>      System.out.println("sourceAddress:
>> "+XmlUtils.toString(getResource().getEndpointReference().toXML()));
>>      
>>      Situation situation = factory.createSituation();
>>  
>> situation.setCategoryType(WefConstants.AVAILABILITY_SITUATION_QNAME);
>>      situation.setPriority(Situation.HIGH_PRIORITY);
>>      situation.setSeverity(Situation.UNKNOWN_SEVERITY);
>>      situation.setMessage("Something important has happened in the
>> "+getServerName()+"!");
>>      event.setReporter(reporter);
>>      event.setSource(source);
>>      event.setSituation(situation);
>>      event.addExtendedElement(
>>                      new QName("SomeURI",
>>                                      "SomeName", "tns"), 30.56);
>> //           event.addExtendedElement(Element xml);
>>     }
>>      
>>     private static final QName[] _PROPERTIES = new QName[]
>>     {
>>         new QName(NAMESPACE_URI, "ServerName", PREFIX),
>>         new QName(NAMESPACE_URI, "MessageInterval", PREFIX),
>>         new QName(NAMESPACE_URI, "TestProperty", PREFIX)
>>     };
>> 
>>     public QName[] getPropertyNames()
>>     {
>>         return _PROPERTIES;
>>     }
>>     
>>     private String _ServerName = "WsExtended";
>>     private int _MessageInterval = 0;
>> 
>>     public String getServerName()
>>     {
>>         return _ServerName;
>>     }
>> 
>>     public void setServerName(String param0)
>>     {
>>         _ServerName = param0;
>>     }
>> 
>>     public int getMessageInterval()
>>     {
>>         return _MessageInterval;
>>     }
>> 
>>     public void setMessageInterval(int param0)
>>     {
>>         _MessageInterval = param0;
>>     }
>>     
>> } 
>> 
>> Please note the code is not complete as it's sampled from a work in
>> progress, though it does contain a working NotificationProducer that
>> allows
>> for other WSRF services to use it.
>> 
>> I didn't add the needed WSDL-file as I assumed you knew how to generate
>> those and declare any needed public available functions (in this case
>> runtimeEventOperation ).
>> 
>> /Lenni
>> 
>> "Cake is not a dual-use food stuff"
>> -----Oprindelig meddelelse-----
>> Fra: Makla [mailto:[email protected]] 
>> Sendt: 29. oktober 2008 12:04
>> Til: [email protected]
>> Emne: Send NotificationEvent from additional Axis2 WS
>> 
>> 
>> Hello, 
>> 
>> i have the following situation. A J2me client shall be able to notify a
>> NotificationProducerWS with certain events. 
>> The NotificationProducer then publishes the event to all subscribed
>> listeners. 
>> In the WSN Consumer/Producer sample, there is only a producer publishing
>> events every 10secs to its subscribers, no matter whether anything has
>> happened or not. 
>> But I want a second (non-emuse) WS sending an event (incl. some data as
>> for
>> instance a float value) to the producing notification WS. The producer
>> then
>> pushes the notification message to the listeners.The
>> subscription/publication is no problem. 
>> I was considering adding a method in the WSN-Producer implementation
>> (MyCapabilityImpl) that hands over the data and sets a flag for
>> publication.
>> But how may i do this? and how may i access the Muse WS from outside and
>> invoke a method in it?
>> 
>> any help is much appreciated (urgent) 
>> -- 
>> View this message in context:
>> http://www.nabble.com/Send-NotificationEvent-from-additional-Axis2-WS-tp2022
>> 4782p20224782.html
>> Sent from the Muse User mailing list archive at Nabble.com.
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/Send-NotificationEvent-from-additional-Axis2-WS-tp20224782p28913146.html
Sent from the Muse User mailing list archive at Nabble.com.

Reply via email to