Hello,

I am trying to migrate an application of my company from Drools V4.0.7 to
V5.1.1 (without actually using features brought by v5), and I am currently
experiencing a problem.
The application is called via an Axis web service deployed on a Weblogic 10
server, using JDK v1.5.0_14. I have two ways to test the application:
- A simple java class that sets the facts and calls directly the implemented
method of the web service
- Using soapUI, after having deployed the .war file of my web service on my
Weblogic server.
While in V4, everything works fine, java test and web service test (with
SoapUI) alike, I get the expected results. With V5, the Java test works as
expected, but the web service test fails (I get a
"java.lang.reflect.InvocationTargetException" without any StackTrace).

I put the server in debug mode and tried to narrow down the problem in
eclipse the best I could. The first difference I noticed, was that the
classloader was different between the two test methods:
- for the java test: Launcher$AppClassLoader
- for the WS test: ChangeAwareClassLoader
However, I don't really know how it affects the execution. After debugging
deeper into the code, I found out the difference: at some point (see stack
below) it seems to get the wrong "referent" from Reference.class. In the
java test, the referent is an "ObjectStreamClass", whereas in the web
service test, it becomes a "NoClassDefFoundError"...

Where could that come from ? Does it have something to do with the
ClassLoader (I admit this area is out of the bounds of my coding skills) ?

For more details, here is the stack from my java test (some lines excluded)
: 

ObjectStreamClass.lookup(Class, boolean) line: 261      
ObjectStreamClass.initNonProxy(ObjectStreamClass, Class,
ClassNotFoundException, ObjectStreamClass) line: 531    
DroolsObjectInputStream(ObjectInputStream).readNonProxyDesc(boolean) line:
1552    
DroolsObjectInputStream(ObjectInputStream).readClassDesc(boolean) line: 1466    
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1699    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
HashMap<K,V>.readObject(ObjectInputStream) line: 1067   
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      
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream) line: 946 
DroolsObjectInputStream(ObjectInputStream).readSerialData(Object,
ObjectStreamClass) line: 1809   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1719    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
DialectRuntimeRegistry.readExternal(ObjectInput) line: 59       
DroolsObjectInputStream(ObjectInputStream).readExternalData(Externalizable,
ObjectStreamClass) line: 1755   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1717    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
Package.readExternal(ObjectInput) line: 197     
DroolsObjectInputStream(ObjectInputStream).readExternalData(Externalizable,
ObjectStreamClass) line: 1755   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1717    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
DroolsStreamUtils.streamIn(InputStream, ClassLoader, boolean) line: 205 
DroolsStreamUtils.streamIn(InputStream) line: 174       
FileScanner.readPackage(File) line: 147 
FileScanner.getChangeSet() line: 97     
FileScanner.loadPackageChanges() line: 72       
DirectoryScanner.loadPackageChanges() line: 85  

And here is the stack, at the same point, from my web service (difference in
bold) :

ObjectStreamClass.lookup(Class, boolean) line: 261      
ObjectStreamClass.initNonProxy(ObjectStreamClass, Class,
ClassNotFoundException, ObjectStreamClass) line: 531    
DroolsObjectInputStream(ObjectInputStream).readNonProxyDesc(boolean) line:
1552    
DroolsObjectInputStream(ObjectInputStream).readClassDesc(boolean) line: 1466    
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1699    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
HashMap<K,V>.readObject(ObjectInputStream) line: 1067   
GeneratedMethodAccessor2.invoke(Object, Object[]) line: not available   
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 585      
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream) line: 946 
DroolsObjectInputStream(ObjectInputStream).readSerialData(Object,
ObjectStreamClass) line: 1809   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1719    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
DialectRuntimeRegistry.readExternal(ObjectInput) line: 59       
DroolsObjectInputStream(ObjectInputStream).readExternalData(Externalizable,
ObjectStreamClass) line: 1755   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1717    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
Package.readExternal(ObjectInput) line: 197     
DroolsObjectInputStream(ObjectInputStream).readExternalData(Externalizable,
ObjectStreamClass) line: 1755   
DroolsObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean) line:
1717    
DroolsObjectInputStream(ObjectInputStream).readObject0(boolean) line: 1305      
DroolsObjectInputStream(ObjectInputStream).readObject() line: 348       
DroolsStreamUtils.streamIn(InputStream, ClassLoader, boolean) line: 205 
DroolsStreamUtils.streamIn(InputStream) line: 174       
FileScanner.readPackage(File) line: 147 
FileScanner.getChangeSet() line: 97     
FileScanner.loadPackageChanges() line: 72       
DirectoryScanner.loadPackageChanges() line: 85  

I hope I made the situation as clear as I could. I'm available for further
details, and obviously, any help would be very appreciated :) .
-- 
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/Problem-deploying-Drools-V5-as-a-webservice-on-Weblogic-10-tp2000163p2000163.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to