I have a scenario where I'm building the rules packages using the BRMS and using a standalone drools-core deployment to load these binaries. However, with the 4.0.4 release the following exception is generated by the Package.readExternal (…) method during de-serialization.

It's using the BRMS 4.0.4 distribution war and the drools-core.jar 4.0.4 available via Maven.

------------------------------------------------------------------------------------------------------------------------------------------------------

java.lang.ClassCastException: org.drools.rule.Package
        at org.drools.rule.Package.readExternal(Package.java:176)
        at com.gbv.platform.rules.drools.impl.RuleRuntimeImpl.init(RuleRuntimeImpl.java :61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java
:1214)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1179
)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1145)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:251)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:144)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:248)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at org.springframework.osgi.service.exporter.OsgiServiceFactoryBean.afterPropertiesSet (OsgiServiceFactoryBean.java:271)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1175
)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1145)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:251)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:144)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:248)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:276)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:360)
        at org.springframework.osgi.context.support.AbstractRefreshableOsgiBundleApplicationContext.refresh (AbstractRefreshableOsgiBundleApplicationCo
ntext.java:170)
        at org.springframework.osgi.extender.support.ServiceDependentOsgiBundleXmlApplicationContext.refresh(ServiceDependentOsgiBundleXmlApplicationC
ontext.java :76)
        at org.springframework.osgi.extender.support.ApplicationContextCreator.run(ApplicationContextCreator.java:155)
        at java.lang.Thread.run(Thread.java:595)
Error Loading DROOLS Package : org.drools.rule.Package

------------------------------------------------------------------------------------------------------------------------------------------------------

BTW, Running the debugger through it I was able to get the stack trace below. This occurs on the first call to Package.readExternal(ObjectInput) line: 176 after returning from ObjectInputStream.readObject() line: 348

------------------------------------------------------------------------------------------------------------------------------------------------------

            Package.readExternal(ObjectInput) line: 176        
            ObjectInputStream.readExternalData(Externalizable, ObjectStreamClass) line: 1755           
            ObjectInputStream.readOrdinaryObject (boolean) line: 1717            
            ObjectInputStream.readObject0(boolean) line: 1305          
            ObjectInputStream.readObject() line: 348
            Package.readExternal(ObjectInput) line: 176        
            RuleRuntimeImpl.init() line: 61     
            NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]       
            NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39          
            DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25    
            Method.invoke(Object, Object...) line: 585            
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeCustomInitMethod(String, Object, String, boolean) line: 1214         
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeInitMethods(String, Object, RootBeanDefinition) line: 1179          
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1145          
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 427       
            AbstractBeanFactory$1.getObject() line: 251        
            DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 144      
            DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 248           
            DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 160           
            OsgiServiceFactoryBean.afterPropertiesSet() line: 271      
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).invokeInitMethods(String, Object, RootBeanDefinition) line: 1175          
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1145          
            DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 427       
            AbstractBeanFactory$1.getObject() line: 251        
            DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory) line: 144      
            DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class, Object[]) line: 248           
            DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 160           
            DefaultListableBeanFactory.preInstantiateSingletons() line: 276     
            ServiceDependentOsgiBundleXmlApplicationContext(AbstractApplicationContext).refresh() line: 360
            ServiceDependentOsgiBundleXmlApplicationContext(AbstractRefreshableOsgiBundleApplicationContext).refresh() line: 170       
            ServiceDependentOsgiBundleXmlApplicationContext.refresh() line: 76         
            ApplicationContextCreator.run() line: 155  
            Thread.run() line: 595      

------------------------------------------------------------------------------------------------------------------------------------------------------

Cheers,
Pavi