Congrats Joe "Arslist MVP" Missed you at wwRug10, but your drink did not go to waste. :-) Maybe next year
Herb Partlow IB Technical Consulting O- 408.253.0344 F - 408.253.0344 C - 408.309.5316 "Sent from iPhone" On Oct 29, 2010, at 1:39 PM, "Roys, Eric D" <[email protected]> wrote: > Many thanks to John Baker from Java Systems Solutions for a work-around > to this via modification to the plugin code (see below and I hope I > incorporated it correctly :-). I would still like to know if it is > possible to configure per plugin threads via the pluginsvr.conf > configuration or other mechanism. This is for an ARS 7.5 / 7.6 > environment. > > Thanks, > Eric > > Example singleton plugin: > -------------------------- > > package com.company.samples; > > import java.util.List; > import com.bmc.arsys.api.ARException; > import com.bmc.arsys.api.Value; > import com.bmc.arsys.pluginsvr.*; > import com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPluggable; > import com.bmc.arsys.pluginsvr.plugins.ARPluggable; > import com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPlugin; > import com.bmc.arsys.pluginsvr.plugins.ARPluginContext; > import com.bmc.arsys.*; > import org.apache.log4j.Logger; > import com.company.someotherstuff*; > > /** > * A class representing a singletone Plugin service. > * This will run as a java plugin under the Remedy Java plugin framework > * as a single instance instead of x instances as defined by arpluginsvr > coreThreads > * > * Useful when the plugin calls it's own management mechanism for work > distribution > * or a poller mechanism that should only be initialized once. > * > */ > public class MyPlugin extends ARFilterAPIPlugin { > > // initiate logger > private static final Logger logger = Logger.getLogger(MyPlugin.class); > > // for our singleton > private static MyPlugin myplug; > public MyPlugin() {}; > > /* Initialize the Remedy plugin */ > > public void initialize(ARPluginContext context) throws ARException { > > logger.info("Started plugin init"); > super.initialize(context); > > /* check if it's already available, if not it's safe to init the > code for other stuff to do > */ > if(myplug == null){ > myplug = getInstance(); > > //initialize the stuff we want to run outside of current > thread > initializeApp(context); > } > } > > public void terminate(ARPluginContext context) throws ARException { > > logger.info("Terminating context"); > > //cleanup routine here for graceful shutdown > > super.terminate(context); > } > > /* start it (the plugin) */ > > public static void main(String[] args) { > > //'cause it's not ultimately useful at this juncture to accept > params at startup... > if(args!= null){ > logger.warn("This plugin does not accept command line > messaging..."); > } > } > > /* initialize the meat of the plugin outside of the plugin > initialization thread > so the init process can complete and we aren't mucking things up > (according to the docs) > */ > private void initializeApp(ARPluginContext context) throws > ARException{ > > //class for storing config variables in memory instead of dealing > with an overload of i/o > ConfigParams cp = new ConfigParams(); > > try{ > logger.info("calling init..."); > cp.initialize(); // load config file parameters into mem > Thread t = new Thread(new Poller()); //thread our poller > mechanism > t.start(); //start the poller > > } catch (RuntimeException rte){ > terminate(context); > } > } > > /* we aren't allowing filter api calls to this plugin because the > plugin > polls remedy asynchronously for all work to process > */ > > public List<Value> filterAPICall(ARPluginContext context, List<Value> > in) throws ARException { > return null; > } > > /* we aren't allowing event calls to this plugin > */ > > public void onEvent(ARPluginContext context, int arg1) throws > ARException { > //do nothing > } > > /* get an instance of this plugin */ > > private synchronized static MyPlugin getInstance() > { > if (myplug==null) myplug = new MyPlugin(); > return plug; > } > } > > > Previous message: > > > Is it possible to configure individual plugins within a plugin server to > use > their own configuration for threads? > I.E. if there are multiple plugins within pluginsvr_config.xml, can each > have > their own designated number of threads or is it only possible that each > uses > the numCoreThreads setting for the overall plugin server? If they need > to be > different from the numCoreThreads designated by the pluginserver, is > there any > way to handle outside of running under a different plugin server > instance, and > if not, can multiple plugin servers be run on the same server with a > single > instance of Remedy? > > (see below for example plugin server config) > > Thanks in advance for any thoughts on this... > Kind Regards, > > Eric Roys > GSSI > Verizon Business > > > Example plugin server config file... > > <pluginsvr_config> > <port>myPort</port> > <regPortMapper>false</regPortMapper> > <encryptionPolicy>2</encryptionPolicy> > <publicKeyAlg>4</publicKeyAlg> > <publicKeyExpiry>86400</publicKeyExpiry> > <dataEncryptionAlg>1</dataEncryptionAlg> > <dataKeyExpiry>2700</dataKeyExpiry> > <numCoreThreads>5</numCoreThreads> > <numSelectorThreads>2</numSelectorThreads> > <workQueueMonitorLogInterval>0</workQueueMonitorLogInterval> > <workQueueTaskThreshold>5</workQueueTaskThreshold> > > <plugins> > <plugin> > <name>PLUG00</name> <!-- start 10 threads ? --> > <pathelement type="location">some jar > location</pathelement> > <classname>some class name</classname> > </plugin> > <plugin> > <name>PLUG01</name> <!-- start 1 threads ? --> > <pathelement type="location">some jar > location</pathelement> > <classname>some class name</classname> > </plugin> > <plugin> > <name>PLUG02</name> <!-- start 5 threads ? --> > <pathelement type="location">some jar > location</pathelement> > <classname>some class name</classname> > </plugin> > <plugin> > <name>PLUG03</name> <!-- start 7 threads ?--> > <pathelement type="location">some jar > location</pathelement> > <classname>some class name</classname> > </plugin> > </plugins> > </pluginsvr_config> > > _______________________________________________________________________________ > UNSUBSCRIBE or access ARSlist Archives at www.arslist.org > attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are" _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: "Where the Answers Are"

