« Return to Thread: Transport my own data types form wsn-producer to wsn-consumer

Re: Transport my own data types form wsn-producer to wsn-consumer

by Lenni Madsen :: Rate this Message:

Reply to Author | View in Thread

I'll bet it's related to that thread, could we once and for all agree  
that the current wsn-producer example is providing more issues than it  
helps remove.

Guys, in the wsn-producer example from Muse there's a thread used,  
this is used ONLY to make the example run continuesly. The thread is  
not needed for a production version and is not in all the examples  
I've posted last week.

I'll see if I can't cook up something

On 25/05/2009, at 06.36, Chris Twiner <chris.twiner@...> wrote:

> Sorry, but could you please give more details of what doesn't work?
> For example, log files, stack traces, messages sent etc.
>
> On Mon, May 25, 2009 at 5:16 AM, ciel <370334232@...> wrote:
>>
>> I have not solved the problem yet.
>> my MyCapability's is as follows and I didn't change wsn-consumer'  
>> code
>>
>> package org.apache.ws.muse.test.wsrf;
>>
>> import java.io.File;
>> import java.io.IOException;
>>
>> import javax.xml.namespace.QName;
>> import javax.xml.parsers.DocumentBuilder;
>> import javax.xml.parsers.DocumentBuilderFactory;
>> import javax.xml.parsers.ParserConfigurationException;
>>
>> 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.notification.NotificationProducer;
>> import org.apache.muse.ws.notification.WsnConstants;
>> import org.apache.muse.ws.resource.impl.AbstractWsResourceCapability;
>> import org.w3c.dom.Document;
>> import org.w3c.dom.Element;
>> import org.xml.sax.SAXException;
>>
>> public class MyCapabilityImpl extends AbstractWsResourceCapability
>> implements MyCapability
>> {
>>    private static final QName[] _PROPERTIES = new QName[] {
>>            new QName(NAMESPACE_URI, "MessageInterval", PREFIX),
>>            new QName(NAMESPACE_URI, "ServerName", PREFIX)
>>    };
>>
>>    private static final QName _TOPIC_NAME = new QName(NAMESPACE_URI,
>> "MyTopic", PREFIX);
>>
>>    public QName[] getPropertyNames()
>>    {
>>        return _PROPERTIES;
>>    }
>>
>>    private int _MessageInterval = 10;
>>
>>    private String _ServerName = "muse-test.apache.org";
>>
>>    public int getMessageInterval()
>>    {
>>        return _MessageInterval;
>>    }
>>
>>    public void setMessageInterval(int param0)
>>    {
>>        _MessageInterval = param0;
>>    }
>>
>>    public String getServerName()
>>    {
>>        return _ServerName;
>>    }
>>
>>    public void setServerName(String param0)
>>    {
>>        _ServerName = param0;
>>    }
>>
>>    public void initializeCompleted()
>>        throws SoapFault
>>    {
>>        super.initializeCompleted();
>>
>>        //
>>        // access resource's WSN capability and create a new topic
>>        //
>>        final NotificationProducer wsn =
>> (NotificationProducer)
>> getResource().getCapability(WsnConstants.PRODUCER_URI);
>>        wsn.addTopic(_TOPIC_NAME);
>>
>>        Thread producer = new Thread() {
>>            public void run()
>>            {
>>                //
>>                // for this example, reuse one payload for every
>> notification
>>                //
>>                QName messageName = new QName(NAMESPACE_URI,  
>> "MyMessage",
>> PREFIX);
>>                try
>>                {
>>                        payload = runtimeEventOperation();
>>                }
>>                catch (Exception e)
>>                {
>>                        e.printStackTrace();
>>                }
>>
>>                while (true)
>>                {
>>                    try
>>                    {
>>                        //
>>                        // read current value - property is mutable
>>                        //
>>                        int currentInterval = getMessageInterval();
>> //                        System.out.println(payload);
>>
>>                        getLog().info("Waiting " + currentInterval + "
>> seconds before sending message...");
>>                        Thread.currentThread().sleep(currentInterval *
>> 1000);
>>
>>                        //
>>                        // use WSN capability to send message to any
>> subscribers
>>                        //
>>                        getLog().info("Sending message to  
>> consumers...");
>>                        wsn.publish(_TOPIC_NAME, payload);
>>                    }
>>
>>                    catch (Throwable error)
>>                    {
>>                        error.printStackTrace();
>>                    }
>>                }
>>            }
>>        };
>>        producer.start();
>>    }
>>    private static ManagementEvent payload;
>>    public ManagementEvent runtimeEventOperation() throws Exception{
>>        WefFactory factory = new SimpleWefFactory();
>>        ManagementEvent event = factory.createEvent();
>>
>>        Component reporter = factory.createComponent();
>>        ComponentAddress reporterAddress =
>> factory.
>> createComponentAddress(getResource().getEndpointReference().toXML());
>>        reporter.setAddress(reporterAddress);
>>        reporter.setName(WefConstants.REPORTER_COMP_QNAME);
>>
>>        Component source = factory.createComponent();
>>        ComponentAddress sourceAddress =
>> factory.
>> createComponentAddress(getResource().getEndpointReference().toXML());
>>        source.setAddress(sourceAddress);
>>        source.setName(WefConstants.SOURCE_COMP_QNAME);
>>
>>        Situation situation = factory.createSituation();
>>
>> situation.setCategoryType(WefConstants.AVAILABILITY_SITUATION_QNAME);
>>        situation.setPriority(Situation.HIGH_PRIORITY);
>>        situation.setMessage("Something important has happened in the
>> "+getServerName()+"!");
>>        event.setReporter(reporter);
>>        event.setSource(source);
>>        event.setSituation(situation);
>>
>>        event.addExtendedElement(MessageExtension());
>>        return event;
>> //        try{
>> //                getLog().info("Sending message to consumers...");
>> //                runtimeNotification.publish(_TOPIC_NAME, event);
>> //                }
>> //        catch (Throwable error){
>> //                        error.printStackTrace();
>> //                        }
>> //        return event.toXML();
>>       }
>>
>>       private Element MessageExtension()throws
>> ParserConfigurationException, SAXException, IOException{
>>        // create your XML message
>>
>>         File file = new
>> File("E:/Awork/java/jakarta-tomcat-5.0.28/temp","test.xml");
>>           DocumentBuilderFactory   dbf   =
>> DocumentBuilderFactory.newInstance();
>>           DocumentBuilder   db   =   dbf.newDocumentBuilder();
>>           Document   doc   =   db.parse(file);
>>           doc.normalize();
>>           Element   root   =   doc.getDocumentElement();
>>           return root;
>>       }
>> }
>>
>> --
>> View this message in context: http://www.nabble.com/Transport-my-own-data-types--form-wsn-producer-to-wsn-consumer-tp23631392p23700618.html
>> Sent from the Muse User mailing list archive at Nabble.com.
>>
>>

 « Return to Thread: Transport my own data types form wsn-producer to wsn-consumer