[rules-users] Drools and Java EE

Andrew Waterman awaterma at ecosur.mx
Wed Aug 25 13:37:50 EDT 2010


Very useful to the JEE community Laird.  I just recently started working with the KnowledgeAgent and Drools Guvnor; so I really feel the need.  Please do let us all know when your implementation is available in the trunk and/or a standalone version. :)

best wishes,

Andrew


On Aug 24, 2010, at 9:50 PM, ljnelson wrote:

> 
> Hello; I've made a JCA resource adapter for Drools.
> 
> I've had to hack quite a bit to get it so that the KnowledgeAgent- and
> resource-scanning-related parts don't use Threads, but, instead, use the
> JCA-supplied WorkManager and BootstrapContext#createTimer() for asynchronous
> operations (like resource scanning and notifying).  
> 
> Here are some changes it would sure be nice to see, that I needed to hack
> around in order to make it so that a KnowledgeAgent-produced KnowledgeBase
> could be shared by Java EE components in a specification compliant manner:
> 
> 1. ResourceChangeNotifierImpl#ProcessChangetSet is an inner class that is
> marked as public static, but which has a package-protected constructor.  I
> have to create a new instance of this in order to create a
> ResourceChangeNotifierImpl subclass that doesn't use threads.  I hope this
> constructor could be made public instead.  Right now I'm calling
> setAccessible(true).  Yecch.
> 
> 2. ResourceFactory#setFactoryService(): sure do wish this were public, or
> that there were another way to install a ResourceFactoryService.  I need to
> do this so that the scanner and notifier are under my control (and don't use
> Threads, but instead use Timers as provided by the JCA BootstrapContext
> class).  It appears that I do have some control here in Drools 5.1 with the
> (undocumented) ServiceRegistry interface (how do I get an instance of it?
> what does it do? is it used pervasively?), but I don't know, since it's
> undocumented, whether it's the preferred way to do this sort of thing or
> not.
> 
> 3. All this indirection is really quite clunky, especially given the
> META-INF/services facility.  Was there a good reason this was not used?  I'm
> sure there was something, because having to consult a factory for a service
> to get a provider to produce an instance of something is a bit much.
> 
> Hacking around those limitations, I was able to produce a Drools resource
> adapter that vends KnowledgeBase instances as its user connection factories. 
> This means to use it in a spec-compliant manner, you do this in your
> stateless (or stateful) session bean:
> 
> @Resource
> private KnowledgeBase kb;
> 
> ...and you get injected a wrapper KnowledgeBase that uses the Java EE
> container's JCA machinery to invoke operations on the shared KnowledgeBase.
> 
> Is this something that would be interesting to other people?  If so I am
> happy to open source it.
> 
> Thanks for a great toolkit.
> 
> Best,
> Laird
> -- 
> View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Drools-and-Java-EE-tp1323225p1323225.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users





More information about the rules-users mailing list