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 <[email protected]> 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. > >
