Thanks, I think. I don't have experience with Spring, so this will take some time for me to digest. I was rather hoping there was a way to register an EventListener without rebuilding the OpenNMS.
If I am understanding correctly, beanRefContext.xml is used at build time, not run time, so if I update that file, I need to get the source and rebuild the system. As far as I can tell, I can create a NotificationStrategy and register it without access to the source code for OpenNMS. This does not seem to be true for the path you suggested for the EventListener. Is there a non-Spring approach to add a simple Listener, or do I need to adopt the whole Spring Framework to add a new service. I understand why you might wish to have a consistent structure for adding new services, so I won't try to buck the trend. =========================== Decided to try something differently. I tried basing my entry on <name>OpenNMS:Name=Queued</name> <class-name>org.opennms.netmgt.queued.jmx.Queued</class-name> <invoke at="start" pass="0" method="init"/> <invoke at="start" pass="1" method="start"/> <invoke at="status" pass="0" method="status"/> <invoke at="stop" pass="0" method="stop"/> </service> and opennms would not start because of missing Spring Contexts (I expect that is what the beanRefContext is for) Then I tried <service> <name>OpenNMS:Name=DramaConverter</name> <class-name>com.telcordia.ar.drama.opennms.dramabeans.jmx.DramaConverter</class-name> </service> and OpenNMS starts up fine. Apparently, the <invoke> elements caused a problem with the system looking for a SpringContext. Unfortunately, now the class does not get referenced and no methods are called. I tried adding static initializers to instantiate a singleton and register it, but they are not invoked. So I guess the simpler approach won't work. Time to install Maven and build from scratch. Gary Levin RRC 1N345 Telcordia Technologies > -----Original Message----- > From: DJ Gregor [mailto:[EMAIL PROTECTED] > Sent: Friday, November 21, 2008 6:52 PM > To: OpenNMS Code Development and Bugs > Subject: Re: [opennms-devel] Fetching an Event in a > NotificationStrategy > > You are on the right track. Create a daemon that will get > instantiated > through configuration in service-configuration.xml. Your daemon will > work with EventIpcManager to register for events and install > itself as a > callback when the events come in. You probably want to use something > that does nothing other than event processing as a base, and queued is > probably the best thing: > > opennms-services/src/main/java/org/opennms/netmgt/queued > > In jmx/Queued.java, you only need the getLoggingPrefix() and > getSpringContext() methods--the rest of what is in there is > specific to > RRD handling. The value returned from getSpringContext() refers to a > Spring context defined in > opennms-services/src/main/resources/beanRefContext.xml. Let > us know if > you have any problems figuring this out. > > Lastly, here is a web page that discusses some of the details of the > Spring-loaded daemon infrastructure: > > http://www.opennms.org/index.php/Using_AbstractSpringContextJm > xServiceDaemon_to_dependency_inject_a_daemon > > Good luck! > > > - djg > > On Fri, 21 Nov 2008 13:14:40 -0500, "Levin, Gary Marc" > <[EMAIL PROTECTED]> said: > > Nothing like sending in a request to get the brain going. > > > > I found that I can use EventIpcManagerFactory to get an > EventIpcManager > > to which I can register an EventListener of my own. The > only tricky part > > is figuring out a good place to arrange for the class to > register itself. > > Is there a clean way to do it? At worst, I can have a > > NotificationStrategy registered that instantiates the > listener. A hack, > > but it works. > > > > > > > > Gary Levin > > RRC 1N345 > > Telcordia Technologies > > > > > > > -----Original Message----- > > > From: Levin, Gary Marc > > > Sent: Friday, November 21, 2008 12:35 PM > > > To: 'opennms-devel@lists.sourceforge.net' > > > Subject: RE: Fetching an Event in a NotificationStrategy > > > > > > This is a follow-up to the previous question. I found > > > org.opennms.netmgt.xml.event.Event, and I can get the event from > > > NotificationFactory based on the EventId in the notification. > > > The problem > > > is that the event retrieved is incomplete. It is missing the > > > parameters > > > (which are passed to the notification, because they appear in my > > > description). > > > > > > * No parameters show up in the xml produced by Event.marshal(). > > > * Event.getParms() returns null > > > (1) Is this a bug in org.opennms.netmgt.xml.event.Event? > > > (2) Is this a bug in > > > org.opennms.netmgt.xml.event.NotificationFactory.getEvent()? > > > (Producing an > > > incomplete Event) > > > (3) Is there an alternative way to get the original event from the > > > notification? (I thought that EventFactory would be the way > > > to go, but that > > > is not accessible from a NotificationStrategy.) > > > > > > > > > > > > > > > > > > > > > I am trying to forward the event to another system. If > > > necessary, I can put > > > enough information into the notification description so that > > > I can manually > > > construct the event, but it seems like a fragile solution. > > > > > > > > > > > > > > > If there is a way to capture the event *before* it gets to be a > > > notification, that would be even better. An EventListener > > > would be ideal. > > > (This is where the Uses page would be very helpful.) Is > > > there a way to > > > register a new EventListener? > > > > > > > > > > > > > > > Gary Levin > > > RRC 1N345 > > > Telcordia Technologies > > > > > > > > > > -----Original Message----- > > > > From: Levin, Gary Marc [mailto:[EMAIL PROTECTED] > > > > Sent: Friday, October 31, 2008 3:56 PM > > > > To: opennms-devel@lists.sourceforge.net > > > > Subject: [opennms-devel] Fetching an Event in a > NotificationStrategy > > > > > > > > > > > > > I need to fetch the Event that triggered a Notification. I > > > have written an > > > implementation of NotificationStrategy, which is > correctly invoked by > > > notifd. The notification places the eventId into the text > > > message, which is > > > included in the list of arguments passed to > > > NotificationStrategy.send(). I > > > log this information, so I am sure it is being received correctly. > > > > > > My code then extracts the eventId, parses it into an integer, > > > eid, and tries > > > calling EventFactory.getEvent(eid). It gets to that point, > > > but the call > > > never returns. I catch SQLException, and that is not > thrown either. > > > > > > I tried catching Throwable and found the problem to be > > > java.lang.NoClassDefFoundError: > > > org/opennms/web/event/EventFactory > > > I am guessing this is caused by the EventFactory being loaded > > > by a different > > > classloader than my NotificationStrategy. This had me go > > > look for another > > > way to get the event, using the jars in lib and not web-apps. > > > > > > > > > > > > I was trying to learn more about the API and noticed that although > > > http://www.opennms.org/documentation/java-apidocs-stable/ > > > org/opennms/netmgt/xml/event/Event.html > > > exists, if you go to the frame view, this class and its > > > package are not in > > > the list of packages and classes. > > > > > > I found that what I needed was > > > org.opennms.netmgt.xml.event.Event, which I > > > can get from > > > org.opennms.netmgt.xml.event.NotificationFactory. This would > > > have been easier to find if the Javadoc included that > > > package. Also,having > > > the Uses page when I am trying to learn an API. This lets me > > > work backwards > > > from what I want, in this case an Event. > > > > > > > > -------------------------------------------------------------- > ----------- > > This SF.Net email is sponsored by the Moblin Your Move Developer's > > challenge > > Build the coolest Linux based applications with Moblin SDK > & win great > > prizes > > Grand prize is a trip for two to an Open Source event > anywhere in the > > world > > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > > _______________________________________________ > > Please read the OpenNMS Mailing List FAQ: > > http://www.opennms.org/index.php/Mailing_List_FAQ > > > > opennms-devel mailing list > > > > To *unsubscribe* or change your subscription options, see > the bottom of > > this page: > > https://lists.sourceforge.net/lists/listinfo/opennms-devel > > -------------------------------------------------------------- > ----------- > This SF.Net email is sponsored by the Moblin Your Move > Developer's challenge > Build the coolest Linux based applications with Moblin SDK & > win great prizes > Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Please read the OpenNMS Mailing List FAQ: > http://www.opennms.org/index.php/Mailing_List_FAQ > > opennms-devel mailing list > > To *unsubscribe* or change your subscription options, see the > bottom of this page: > https://lists.sourceforge.net/lists/listinfo/opennms-devel > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Please read the OpenNMS Mailing List FAQ: http://www.opennms.org/index.php/Mailing_List_FAQ opennms-devel mailing list To *unsubscribe* or change your subscription options, see the bottom of this page: https://lists.sourceforge.net/lists/listinfo/opennms-devel