When is interpolation done for components.xml?
x490812 Jul 8, 2008 12:01 AMHere is a fragment of my components.xml...
<drools:rule-agent name="isDealRuleBase" url="http://#{serverInfoTest.webServerURL}/drools-jbrms/org.drools.brms.JBRMS/package/com.homeq.cam.deal.domain.isDeal/LATEST" local-cache-dir="/var/data/cam" poll="30" auto-create="true"> </drools:rule-agent> . . <drools:managed-working-memory name="isDealWorkingMemory" auto-create="true" rule-base="#{isDealRuleBase}"/> . .
Here is a fragment of pageflow.jpdl.xml
<decision name="isDealQualified"> <handler class="com.homeq.drools.HomEqDroolsDecisionHandler"> <workingMemoryName>isDealWorkingMemory</workingMemoryName> <assertObjects> <element>#{loanInfo}</element> </assertObjects> </handler> <transition to="isPreviousMod" name="yes"></transition> <transition name="no" to="isFastTrackQualified"></transition> </decision>
The application boots with no problems, but when the pageflow executes, it immediately goes into com.homeq.drools.HomEqDroolsDecisionHandler - never calls serverInfoTest.getWebServerURL(); The interpolation of #{serverInfoTest.webServerURL} never occurs and I get the following...
4:50:46,898 ERROR [STDERR] RuleAgent(default) INFO (Mon Jul 07 14:50:46 PDT 2008): Configuring with newInstance=false, secondsToRefresh=30 14:50:46,914 ERROR [STDERR] RuleAgent(default) INFO (Mon Jul 07 14:50:46 PDT 2008): Configuring package provider : URLScanner monitoring URLs: http://#{serverInfoTest.webServerURL}#{serverInfoTest.webServerURL}/drools-jbrms/org.drools.brms.JBRMS/package/com.homeq.cam.deal.domain.isDeal/LATEST with local cache dir of \var\data\cam 14:51:02,164 ERROR [STDERR] RuleAgent(default) WARNING (Mon Jul 07 14:51:02 PDT 2008): Was an error contacting http://#{serverInfoTest.webServerURL}#{serverInfoTest.webServerURL}/drools-jbrms/org.drools.brms.JBRMS/package/com.homeq.cam.deal.domain.isDeal/LATEST. Reponse header: {} 14:51:02,164 ERROR [STDERR] RuleAgent(default) EXCEPTION (Mon Jul 07 14:51:02 PDT 2008): Was unable to reach server.. Stack trace should follow. 14:51:02,164 ERROR [STDERR] java.io.IOException: Was unable to reach server. 14:51:02,164 ERROR [STDERR] at org.drools.agent.URLScanner.hasChanged(URLScanner.java:145) 14:51:02,164 ERROR [STDERR] at org.drools.agent.URLScanner.getChangeSet(URLScanner.java:109) 14:51:02,164 ERROR [STDERR] at org.drools.agent.URLScanner.loadPackageChanges(URLScanner.java:88) 14:51:02,164 ERROR [STDERR] at org.drools.agent.RuleAgent.checkForChanges(RuleAgent.java:330) 14:51:02,164 ERROR [STDERR] at org.drools.agent.RuleAgent.refreshRuleBase(RuleAgent.java:298)
Why was the EL expression in components.xml (i.e., #{serverInfoTest.webServerURL} not interpolated? is interpolation handled by the declared class, in this case, RuleAgent, or is interpolation done before the class is passed its parameters?