So, I'm using Entity includes to be able to separate my rules files into manageable pieces.
I've had some problems loading the referenced rule xml files. Note that I'm using the Java semantics (I guess that's the right way to say it). <snip of main rules file> <?xml version="1.0"?> <!DOCTYPE rule-set [ ENTITY LettersMisc-block SYSTEM "LettersMisc.xml" ENTITY LettersTeleFax-block SYSTEM "LettersTeleFax.xml" ]> <rule-set name="LettersMain" xmlns="http://drools.org/rules" xmlns:java="http://drools.org/semantics/java" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/rules rules.xsd http://drools.org/semantics/java java.xsd"> <import>java.lang.Object</import> <import>test123.*</import> <import>com.nrs.cats.transfer.*</import> <application-data identifier="setHelper">SetHelper</application-data> <application-data identifier="condition">LetterConditionHelper</application-data> <application-data identifier="consequence">LetterConsequenceHelper</application-data> &LettersMisc-block; &LettersTeleFax-block; </snip> I had some real trouble loading any rule files from an executable type jar. I was finally able to make it work using the jar file syntax like this: String cp = System.getProperty("java.class.path"); cp = cp.replace('\\', '/'); URI uri = new URI("jar:file:"+cp+"!/"+"other/LettersMain.xml"); // Above method of course bombs when I'm running from a dir of files The other two rules files are sitting in the same "other" directory as LettersMain.xml So, my prototype was working. However, when I went and tried the same technique in my ear file, it didn't work. I think much of this has to do with classloaders, and from what I've learned, it appears that classloaders do things all differently. I also think the issue might be one of JBuilder and/or the SAX parser. Here is the exception I get when I try to use the same technique with the ear file. My guess is that JBuilder has a lock of some sort on the ear file. Any help or suggestions appreciated. 2006-03-30 12:09:55,609 ERROR - java.util.zip.ZipException: Access is denied 2006-03-30 12:09:55,609 ERROR - at java.util.zip.ZipFile.open(Native Method) 2006-03-30 12:09:55,609 ERROR - at java.util.zip.ZipFile.<init>(ZipFile.java:112) 2006-03-30 12:09:55,609 ERROR - at java.util.jar.JarFile.<init>(JarFile.java:127) 2006-03-30 12:09:55,609 ERROR - at java.util.jar.JarFile.<init>(JarFile.java:65) 2006-03-30 12:09:55,609 ERROR - at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:55) 2006-03-30 12:09:55,609 ERROR - at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:40) 2006-03-30 12:09:55,609 ERROR - at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:63) 2006-03-30 12:09:55,609 ERROR - at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:85) 2006-03-30 12:09:55,609 ERROR - at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:107) 2006-03-30 12:09:55,609 ERROR - at java.net.URL.openStream(URL.java:913) 2006-03-30 12:09:55,609 ERROR - at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) 2006-03-30 12:09:55,609 ERROR - at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) 2006-03-30 12:09:55,609 ERROR - at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 2006-03-30 12:09:55,609 ERROR - at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) 2006-03-30 12:09:55,625 ERROR - at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 2006-03-30 12:09:55,625 ERROR - at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 2006-03-30 12:09:55,625 ERROR - at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) 2006-03-30 12:09:55,625 ERROR - at org.drools.io.RuleSetReader.read(RuleSetReader.java:443) 2006-03-30 12:09:55,625 ERROR - at org.drools.io.RuleSetReader.read(RuleSetReader.java:309) 2006-03-30 12:09:55,625 ERROR - at org.drools.io.RuleBaseLoader.loadFromUrl(RuleBaseLoader.java:155) 2006-03-30 12:09:55,625 ERROR - at org.drools.io.RuleBaseLoader.loadFromUrl(RuleBaseLoader.java:115) 2006-03-30 12:09:55,625 ERROR - at org.drools.io.RuleBaseLoader.loadFromUrl(RuleBaseLoader.java:100) 2006-03-30 12:09:55,625 ERROR - at com.nrs.cats.service.ejb.helper.LetterHelper.applyBasicRules(LetterHelper.java:493) 2006-03-30 12:09:55,625 ERROR - at com.nrs.cats.service.ejb.helper.LetterHelper.exportLetterRequests(LetterHelper.java:143) 2006-03-30 12:09:55,625 ERROR - at com.nrs.cats.service.ejb.helper.AccountantServiceBeanHelper.exportLetterRequests(AccountantServiceBeanHelper.java:154) 2006-03-30 12:09:55,625 ERROR - at com.nrs.cats.service.ejb.AccountantServiceBean.exportLetterRequests(AccountantServiceBean.java:1856) 2006-03-30 12:09:55,625 ERROR - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2006-03-30 12:09:55,625 ERROR - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 2006-03-30 12:09:55,625 ERROR - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 2006-03-30 12:09:55,625 ERROR - at java.lang.reflect.Method.invoke(Method.java:324) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.ConcreteMethod.invoke(ConcreteMethod.java:32) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.EJBContext.invoke(EJBContext.java:166) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.Dispatcher.doInvoke(Dispatcher.java:1357) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.Dispatcher.invokeSecurityCheck(Dispatcher.java:1065) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.Dispatcher.invoke(Dispatcher.java:827) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.Dispatcher.invoke(Dispatcher.java:603) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.EJBHome.dispatcherInvokeBeanMethod(EJBHome.java:84) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.EJBHome$ComponentInterfaceMethodCache.invokeDispatcherMethod(EJBHome.java:1581) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.EJBHome.invokeDispatcherMethod(EJBHome.java:62) 2006-03-30 12:09:55,640 ERROR - at com.inprise.ejb.Dispatcher.invoke(Dispatcher.java:429) 2006-03-30 12:09:55,640 ERROR - at com.nrs.cats.service.ejb.AccountantServicePOAInvokeHandler.exportLetterRequests(AccountantServicePOAInvokeHandler.java:964) 2006-03-30 12:09:55,640 ERROR - at com.nrs.cats.service.ejb.AccountantServicePOAInvokeHandler.exportLetterRequests(AccountantServicePOAInvokeHandler.java:2973) 2006-03-30 12:09:55,640 ERROR - at com.nrs.cats.service.ejb.AccountantServicePOA._invoke(AccountantServicePOA.java:790) 2006-03-30 12:09:55,640 ERROR - at com.nrs.cats.service.ejb.AccountantServicePOA._invoke(AccountantServicePOA.java:305) 2006-03-30 12:09:55,640 ERROR - at com.inprise.vbroker.poa.POAImpl.invoke(POAImpl.java:2916) 2006-03-30 12:09:55,640 ERROR - at com.inprise.vbroker.poa.ActivationRecord.invoke(ActivationRecord.java:187) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.poa.ServerInterceptorManager$ARWrapper.invoke(ServerInterceptorManager.java:115) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.GIOP.GiopProtocolAdapter.doRequest(GiopProtocolAdapter.java:868) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.IIOP.ServerProtocolAdapter.doRequest(ServerProtocolAdapter.java:68) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.GIOP.GiopProtocolAdapter.dispatchMessage(GiopProtocolAdapter.java:1158) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.orb.TPDispatcherImpl$TPDispatcher.run(TPDispatcherImpl.java:111) 2006-03-30 12:09:55,656 ERROR - at com.inprise.vbroker.orb.ThreadPool$PoolWorker.run(ThreadPool.java:95)