Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Websphere Classloading

We have an application deployed in Websphere application server 7. Its deployed and functioning in various environments. But it gave a method not found exception in one new env. On digging deeper we found that a particular class was present in 2 jars and the class from the "wrong" jar was getting loaded in the new env. i went through the detailed class loader view and the sequence of the loading of jars were different in it.

On further investigation there seemed to be random variance in the order in which the jar files were loaded in each env.

2 questions:

1) On which factor does the WAS class loading policy depend & any suggestion for rectifying the problem?

2) More generally when we specify supposing *.jar in the classpath for any java program how does any JVM load the jars? Like is it alphabetical or according to time modified or any such file property?

like image 242
Barun Avatar asked Jan 22 '23 21:01

Barun


1 Answers

When installing web-apps under WAS, you can set the classloading policy in the options for that application (or globally on server/node level)

If the policy options are (search) "parent first" / "parent last" and one class loader per application or per war. The default is "parent first / war". If your web-app comes with all jars it needs you'll be better off with the policy set to "parent last / application". Also if you edit your web.xml to reflect changes, be sure to set "use binary configuration" otherwise it will always use what it stored during install.

like image 132
rsp Avatar answered Feb 01 '23 19:02

rsp