I take back my most recent suggestion on looking at opennms- 
correlator. Look at opennms-jetty, instead. You'll want to uncomment  
the constructor-arg bit referencing daemonContext in  
beanRefContext.xml and also inject eventIpcManager into your daemon  
classin your applicationContext-foo. xml file.


         - djg

On Nov 24, 2008, at 4:30 PM, "Levin, Gary Marc" <[EMAIL PROTECTED]>  
wrote:

> 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

-------------------------------------------------------------------------
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

Reply via email to