How do I resolve this Weblogic intermittent java.l

2019-06-05 03:14发布

I have an intermittent linkage error thrown: (That's basically all the information I have)

java.lang.LinkageError loader constraint violation: 
  when resolving field 'service' of the class loader instance of 
  java/net/FactoryURLClassLoader) of the referring class 
  org/apache/axis/client/Stub, and the class loader (instance of
  weblogic/utils/classloaders/ChangeAwareClassLoader) 
  for the field's resolved type, java/xml/rpc/Service, 
  have different class objects for that type

Or in a more readable way

  • Exception: java.lang.LinkageError

    • field: service
    • CL instance: java.net.FactoryURLClassLoader
    • reffering class: org.apache.axis.client.Stub
    • 2nd CL instance: weblogic.utils.classloaders.ChangeAwareClassLoader
    • field's resolve type: java.xml.rpc.Service

Does this mean that I have 2 versions of java.xml.rpc.Service loaded? Is that so? How can that happen? what is the way to resolve it?

2条回答
狗以群分
2楼-- · 2019-06-05 03:30

The solution was eventually to update the weblogic-application.xml file of the deployed app

The application used an old jaxrpc-api.jar that we could not remove for various reason,

The solution we used to prefer the internal jar was this (Is there a better way?)

<wls:prefer-application-packages>
  ...
  <wls:package-name>java.xml.rpc.*</wls:package-name>
</wls:prefer-application-packages>
查看更多
够拽才男人
3楼-- · 2019-06-05 03:49

Does this mean that I have 2 versions of java.xml.rpc.Service loaded? Is that so?

Yes.

How can that happen?

It happens when you have two classloaders both loading the same class. In your case, the classloaders are instances of different ClassLoader classes:

    java.net.FactoryURLClassLoader

and

    weblogic.utils.classloaders.ChangeAwareClassLoader

what is the way to resolve it?

I'm not a Weblogic user, but the theoretical solution is to put the JAR file containing the classes in question into the classpath of an common ancestor classloader of the two above.

查看更多
登录 后发表回答