[prev in list] [next in list] [prev in thread] [next in thread]
List: muse-user
Subject: Re: Transport my own data types form wsn-producer to wsn-consumer
From: ciel <370334232 () qq ! com>
Date: 2009-05-25 3:16:02
Message-ID: 23700618.post () talk ! nabble ! com
[Download RAW message or body]
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.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic