[rules-users] Open file leak in Drools Compiler

Chris Selwyn chris at selwyn-family.me.uk
Wed Mar 16 12:49:21 EDT 2011


I am running Drools (actually JBoss Rules 5.1.0 ) in Glassfish.

My deployable is an EJB that uses a StatelessKnowledgeSession to run 
some rules that I get from a KnowledgeAgent that has a Changeset with a 
.drl in it.
Therefore, I have placed the drools compiler into the deployable and it 
all appears to work.

Glassfish has a clever little mechanism that, when you unload a 
deployable that had some open streams, it tells you all about it (and 
kindly closes them).

Glassfish is reporting that InputStreams are being left open that were 
opened in the isPackage() method of 
org.drools.commons.jci.compilers.EclipseJavaCompiler.
That method has the following code in it:-

                 final InputStream is = 
pClassLoader.getResourceAsStream(ClassUtils.convertClassToResourcePath(pClazzName));
                 if (is != null) {
                     return false;
                 }

So, when "is" is not null (i.e. open), it is forgotten about and not closed.

Isn't this a potential file handle leak?

Chris Selwyn




More information about the rules-users mailing list