I have a Web application using Apache CXF version 3.2.1 which deploys and works successfully on Weblogic version 12.2.1.3.0.
Because of security vulnerabilities I need to bump the version of CXF library from 3.2.1 to latest (3.2.13 in that moment).
I got the following error when trying to deploy the application with version above 3.2.1(3.2.2, 3.2.3, 3.2.11, 3.2.13 etc..)
<Apr 7, 2020 6:19:54,850 PM EEST> <Error> <HTTP> <BEA-101216> <Servlet: "JAX-RS/Jersey#1" failed to preload on startup in Web application: "webservices.war".
A MultiException has 3 exceptions. They are:
1. java.lang.InstantiationException
2. java.lang.IllegalStateException: Unable to perform operation: create on org.apache.cxf.jaxrs.provider.AbstractResponseViewProvider
3. java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory
I tried the following approaches:
- Adding a shared library as described here: https://docs.oracle.com/middleware/1213/wls/RESTF/use-jersey20-ri.htm#RESTF296
- Modifying the schema location https://www.oracle.com/webfolder/technetwork/weblogic/weblogic-web-app/index.html
- Setting prefer-web-inf-classes to true so all libraries are taken from the deployed application(not from the server)
- Adding local copy of Jax-RS in my lib folder and trying to use it with prefer-application-packages
Do you have any idea what could cause the problem? What might be the difference between Apache CXF 3.2.1 and 3.2.2 ? Why is a minor version change breaking an application?