The ARFilterAPIPluggable Interface implements or inherits the following methods:

filterAPICall
initialize
onEvent
terminate

I am trying to find the best way to initialize plugins where I have
both static fields and instance fields in the classes that make up the
plugin.  I can easily use the initialize method to set the instance
fields because initialize is called for each thread the plugin servers
starts.  This does not work so well with the static fields because all
the different threads step on each other trying to write to the static
fields.  The static fields are good for things like reading a
properties file into a Properties object (no need to read/store it 10
times).  If I implement Runnable on the plugin class and add a log
line to the initialize method:

context.logMessage(context.getPluginInfo(),
com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
"initialize called - " + Thread.currentThread().getName());

The logs show that initialize is called for every thread (10 in this case):

2012-01-24 14:20:51,516 [pool-2-thread-6  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-6
2012-01-24 14:20:51,515 [pool-2-thread-5  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-5
2012-01-24 14:20:51,536 [pool-2-thread-10 ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-10
2012-01-24 14:20:51,538 [pool-2-thread-8  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-8
2012-01-24 14:20:51,557 [pool-2-thread-4  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-4
2012-01-24 14:20:51,560 [pool-2-thread-3  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-3
2012-01-24 14:20:51,562 [pool-2-thread-2  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-2
2012-01-24 14:20:51,565 [pool-2-thread-7  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-7
2012-01-24 14:20:51,568 [pool-2-thread-1  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-1
2012-01-24 14:20:51,571 [pool-2-thread-9  ] INFO
com.bmc.arsys.pluginsvr.plugins.ARPluginContext - <PLUGIN>initialize
called - pool-2-thread-9


I can use the thread name to isolate these types of tasks to a single
thread, but there are no guarantees this will work with the next
release of ARS:

if (Thread.currentThread().getName().endsWith("thread-1"))


Is there a better way to achieve this?

The C based plugin framework provides functions to address this need:
* ARPluginCreateInstance
* ARPluginDeleteInstance
ARPluginEvent
ARPluginIdentify
* ARPluginInitialization
ARPluginSetProperties
* ARPluginTermination

But these seem to be missing from the Java implementation.

Thanks,
Axton Grams

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"

Reply via email to