You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-user@ws.apache.org by Saurabh Dravid <sa...@in.ibm.com> on 2007/07/26 12:23:35 UTC

Printing WEF-events at consumer gives Improper SourceComponent

Hi,

I am using the following article to create Wef-events and sending them 
through my producer.

http://www.ibm.com/developerworks/autonomic/library/ac-museevent.html?S_TACT=105AGX09&S_CMP=EDU

At the producer side I create the Event using following code :

----------------------------------------------------------------------------------------------

Identity identity = (Identity) getResource().getCapability(MuwsConstants.
IDENTITY_URI);

WefFactory factory = new SimpleWefFactory();
ManagementEvent event = factory.createEvent();
 
//Create source component
Component source = factory.createComponent();
source.setName(WefConstants.SOURCE_COMP_QNAME);
EndpointReference epr = getResource().getEndpointReference();
Element eprXml = epr.toXML();
ComponentAddress sourceAddress = factory.createComponentAddress();
sourceAddress.addExtendedElement(eprXml);
source.setAddress(sourceAddress);
source.setResourceID(identity.getResourceId());
event.setSource(source);
 
producer.publish(STOP_TOPIC_QNAME, event);

------------------------------------------------------------------------------------------

When the event get published I can see the following SOAP Message going 
out, which is proper message.


------------------------------------------------------------------------------------------

<wsnt:Message>
                    <muws1:ManagementEvent
 xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd" 
ReportTime="2007-07-26T14:15:04+05:30">
 <muws1:EventId>uuid:eeba976e-f7e5-d0dd-19c8-1bfd60363ae1</muws1:EventId>
                        <muws1:SourceComponent>
                            <muws1:ComponentAddress>
                                <wsa:EndpointReference 
xmlns:wsa="http://www.w3.org/2005/08/addressing">
                                    <wsa:ReferenceParameters 
xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
 <wsa:Address>http://9.182.81.239:8080/Database/services/DB</wsa:Address>
                                </wsa:EndpointReference>
                            </muws1:ComponentAddress>
 
<muws1:ResourceId>uuid:3962ca13-d6b6-fa4f-a8bc-8e85ed67e3e2</muws1:ResourceId>
                        </muws1:SourceComponent>
                    </muws1:ManagementEvent>
                </wsnt:Message>

------------------------------------------------------------------------------------------

At the consumer side I had written the following code to receive my events 
and print it out.


------------------------------------------------------------------------------------------
public void process(NotificationMessage message) throws SoapFault 
{
        WefFactory factory = new SimpleWefFactory();
      Iterator i = message.getMessageContentNames().iterator();
      while (i.hasNext())
      {
            QName payloadName = (QName)i.next();
            Element payload = message.getMessageContent(payloadName);   
            ManagementEvent event = factory.createEvent(payload);
            System.out.println(event);
        } 
        }
}
------------------------------------------------------------------------------------------

When the consumer receives the wef event and print it out on the console, 
it comes like the following

------------------------------------------------------------------------------------------

<muws1:ManagementEvent
    xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd" 
ReportTime="2007-07-26T14:15:04+05:30">
 <muws1:EventId>uuid:eeba976e-f7e5-d0dd-19c8-1bfd60363ae1</muws1:EventId>
    <muws1:SourceComponent>
        <muws1:ComponentAddress>
            <muws1:ComponentAddress>
                <wsa:EndpointReference 
xmlns:wsa="http://www.w3.org/2005/08/addressing">
                    <wsa:ReferenceParameters 
xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
 <wsa:Address>http://9.182.81.239:8080/Database/services/DB</wsa:Address>
                </wsa:EndpointReference>
            </muws1:ComponentAddress>
        </muws1:ComponentAddress>
    </muws1:SourceComponent>
</muws1:ManagementEvent>

------------------------------------------------------------------------------------------

<muws1:ComponentAddress> element appears twice in the output.
Any idea about why it is appearing twice.
If I just change the code at the consumer side to print the received 
NotificationMesssage as it is,

QName payloadName = (QName)i.next();
Element payload = message.getMessageContent(payloadName);
System.out.println(XmlUtils.toString(payload));

It prints the proper message.

thanks


With best regards,

Saurabh Dravid,
Staff Software Engineer - Autonomic Computing,
India Software Lab, IBM Software Group
Embassy Golf Links, 'B' Block, 4th Floor, Bangalore
Phone: +91-80-51055494, e-mail: sadravid@in.ibm.com
About India Software Lab