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://www.nabble.com/Send-NotificationEvent-from-additional-Axis2-WS-tp20224782p20358137.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]

Reply via email to