<div><br></div>   This is looking like a classloader issue. I assume your function is correctly implementing the <meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-family: Arial; ">org.drools.runtime.rule.AccumulateFunction, as you mention that it works outside of guvnor. So my guess is that your function jar is being loaded by a classloader in a different hierarchy and that is raising the CCE?</span><div>
<font class="Apple-style-span" face="Arial"><br></font></div><div><font class="Apple-style-span" face="Arial">   Edson<br></font><br><div class="gmail_quote">2011/7/25 Melton, Michael P CTR SPAWARSYSCEN-ATLANTIC, 01200 <span dir="ltr">&lt;<a href="mailto:michael.melton.ctr@navy.mil">michael.melton.ctr@navy.mil</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div>
<div dir="ltr">
<div dir="ltr"><font color="#000000" size="2" face="Arial">I am having trouble getting my rule package, which contains a reference to a custom accumulate function, to compile within Guvnor (5.2.0.Final on JBoss AS <a href="http://5.1.0.GA" target="_blank">5.1.0.GA</a>).  I have been using the same rules as DRL files without issue in Eclipse.  I have tests which exercise the accumulate function and they are all passing.  </font><font color="#000000" size="2" face="Arial">The error I get from Guvnor when I try to build the package is:</font></div>
</div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">Service method &#39;public abstract org.drools.guvnor.client.rpc.BuilderResult org.drools.guvnor.client.rpc.PackageService.buildPackage(java.lang.String,boolean,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String,boolean,java.lang.String) throws com.google.gwt.user.client.rpc.SerializationException&#39; threw an unexpected exception: java.lang.ClassCastException: test.accumulate.BigIntegerSumAccumulateFunction cannot be cast to org.drools.runtime.rule.AccumulateFunction</font></div>

<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">I&#39;ve isolated the problem into a reproducible test, or rather a set of steps: 
<div dir="ltr"><font size="2" face="Arial">1. Compile the attached BigIntegerSumAccumulateFunction.java into a jar and copy the jar to the JBoss server&#39;s lib folder.</font></div>
<div dir="ltr">2. Start up JBoss.</div></font></div>
<div dir="ltr"><font size="2" face="Arial">3. Create a new package in Guvnor.  I called mine &quot;test&quot;.</font></div>
<div dir="ltr"><font size="2" face="Arial">4. Create a new fact that has a numeric property.  Here&#39;s mine:</font></div>
<div dir="ltr"><font size="2" face="Arial">   declare Foo</font></div>
<div dir="ltr"><font size="2" face="Arial">      value : int</font></div>
<div dir="ltr"><font size="2" face="Arial">   end</font></div>
<div dir="ltr"><font size="2" face="Arial">5. Upload the attached drools.packagebuilder.conf to the Guvnor package.</font></div>
<div dir="ltr"><font size="2" face="Arial">6. Create a new rule that references the custom accumulate function:</font></div>
<div dir="ltr"><font size="2" face="Arial">   when</font></div>
<div dir="ltr"><font size="2" face="Arial">      BigInteger() from accumulate( Foo( $v : value), bigIntegerSum( $v ) )</font></div>
<div dir="ltr"><font size="2" face="Arial">   then</font></div>
<div dir="ltr"><font size="2" face="Arial">      System.out.println(&quot;test&quot;);</font></div>
<div dir="ltr"><font size="2" face="Arial">7. Try to build the binary package in Guvnor.  The error listed above occurs.  Please see the end of this email for a full stack trace.</font></div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">It&#39;s telling me that my custom accumulate function can&#39;t be cast to org.drools.runtime.rule.AccumulateFunction, but I have a unit test (also attached) that proves that it can.  Again, I have other tests which exercise rules that reference the accumulate function and they compile and work fine.</font></div>

<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">Any thoughts?  Why does the Guvnor compiler work differently from when I build my knowledge base in code?</font></div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">Thanks in advance for any assistance.</font></div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">Mike Melton</font></div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font color="#000000" size="2" face="Arial">FULL STACK TRACE:</font></div>
<div dir="ltr"><font size="2" face="Arial"></font> </div>
<div dir="ltr"><font size="2" face="Arial">java.lang.ClassCastException: test.accumulate.BigIntegerSumAccumulateFunction cannot be cast to org.drools.runtime.rule.AccumulateFunction<br> at org.drools.compiler.PackageBuilderConfiguration.loadAccumulateFunction(PackageBuilderConfiguration.java:491)<br>
 at org.drools.compiler.PackageBuilderConfiguration.buildAccumulateFunctionsMap(PackageBuilderConfiguration.java:440)<br> at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:177)<br> at org.drools.compiler.PackageBuilderConfiguration.&lt;init&gt;(PackageBuilderConfiguration.java:148)<br>
 at org.drools.guvnor.server.builder.BRMSPackageBuilder.getPackageBuilderConfiguration(BRMSPackageBuilder.java:134)<br> at org.drools.guvnor.server.builder.BRMSPackageBuilder.&lt;init&gt;(BRMSPackageBuilder.java:67)<br> at org.drools.guvnor.server.builder.AssemblerBase.createBuilder(AssemblerBase.java:46)<br>
 at org.drools.guvnor.server.builder.PackageAssembler.createBuilder(PackageAssembler.java:35)<br> at org.drools.guvnor.server.builder.AssemblerBase.&lt;init&gt;(AssemblerBase.java:42)<br> at org.drools.guvnor.server.builder.PackageAssemblerBase.&lt;init&gt;(PackageAssemblerBase.java:44)<br>
 at org.drools.guvnor.server.builder.PackageAssembler.&lt;init&gt;(PackageAssembler.java:49)<br> at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:522)<br> at org.drools.guvnor.server.RepositoryPackageOperations.buildPackage(RepositoryPackageOperations.java:480)<br>
 at org.drools.guvnor.server.RepositoryPackageService.buildPackage(RepositoryPackageService.java:299)<br> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> at java.lang.reflect.Method.invoke(Method.java:597)<br> at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)<br> at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)<br>
 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)<br> at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)<br> at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)<br>
 at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)<br> at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)<br> at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)<br>
 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)<br> at org.jboss.seam.security.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:157)<br> at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)<br>
 at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)<br> at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)<br> at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)<br>
 at org.drools.guvnor.server.RepositoryPackageService_$$_javassist_7.buildPackage(RepositoryPackageService_$$_javassist_7.java)<br> at org.drools.guvnor.server.RepositoryServiceServlet.buildPackage(RepositoryServiceServlet.java:282)<br>
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
 at java.lang.reflect.Method.invoke(Method.java:597)<br> at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)<br> at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)<br>
 at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)<br> at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)<br> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)<br>
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)<br> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
 at org.jboss.seam.web.ContextFilter$1.process(ContextFilter.java:42)<br> at org.jboss.seam.servlet.ContextualHttpServletRequest.run(ContextualHttpServletRequest.java:53)<br> at org.jboss.seam.web.ContextFilter.doFilter(ContextFilter.java:37)<br>
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br> at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)<br>
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)<br>
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br> at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)<br> at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)<br>
 at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)<br> at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)<br>
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br> at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)<br>
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)<br> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)<br>
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)<br> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)<br> at java.lang.Thread.run(Thread.java:662)</font></div>
</div></div></div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>
</div>