Problem of injectionmanagerfactory not found
The issue exists because starts from 2.26 the Jersey is not backward compatible [ injectionmanagerfactory not found ].
Table of Contents
Jersey is a Java-based framework for building RESTful web services. InjectionManagerFactory is a class in the Jersey framework that provides a way to create and manage the lifecycle of injectable objects, such as resources, providers, and services.
The InjectionManagerFactory class is part of the javax.ws.rs.core package, which is the core package for the Java API for RESTful Web Services (JAX-RS). It is used to create an instance of the InjectionManager, which is responsible for managing the injectable objects in a Jersey application.
The InjectionManagerFactory class provides a static method called createInjectionManager() that can be used to create a new instance of the InjectionManager. The InjectionManager can then be used to register injectable objects and to perform dependency injection on those objects.
Missing Backward Compatibility
Backward compatibility refers to the ability of a software or system to continue to function properly when it is used in an environment or with components that are older or different than the ones it was designed for. When backward compatibility is missing, it means that the software or system is not able to work properly in these older or different environments or with these older or different components.
There are several reasons why backward compatibility might be missing in a software or system. One common reason is that the software or system has been updated or changed in a way that is not compatible with the older versions or components. This can happen when new features or capabilities are added that rely on newer technologies or protocols that are not supported by the older versions or components.
Another reason why backward compatibility might be missing is that the software or system was not designed with backward compatibility in mind. In this case, the software or system may rely on specific features or technologies that are not available in the older versions or components, or it may have a different architecture or design that is not compatible with the older versions or components.
Lack of backward compatibility can be a problem for users and organizations that rely on the software or system, as it can limit their ability to use the software or system with their existing systems and infrastructure. It can also be a problem for software developers and vendors, as it can lead to decreased adoption or usage of the software or system. To avoid these problems, it is important for software developers and vendors to consider backward compatibility when designing and updating their products.
Jersey Is Not Backward Compatible
As I mentioned at the beginning the issue exists because starts from 2.26 the Jersey is not backward compatible. Please find the information from official Jersey site.
Unfortunately, there was a need to make backwards incompatible changes in 2.26. Concretely jersey-proprietary reactive client API is completely gone and cannot be supported any longer – it conflicts with what was introduced in JAX-RS 2.1 (that’s the price for Jersey being “spec playground..”).
Another bigger change in Jersey code is attempt to make Jersey core independent of any specific injection framework. As you might now, Jersey 2.x is (was!) pretty tightly dependent on HK2, which sometimes causes issues (esp. when running on other injection containers. Jersey now defines it’s own injection facade, which, when implemented properly, replaces all internal Jersey injection.
Don’t be mistaken – Jersey still runs on hk2. But it should be possible to get rid off that dependency when other container provides same functionality. As already mentioned, the motivation is to be able to integrate seamlessly with other frameworks, like cdi, guice, etc. This is still work in progress and there is one consequence: user has to provide Jersey injection implementation.https://eclipse-ee4j.github.io/jersey.github.io/release-notes/2.26.html
<dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <version>2.26</version> </dependency>
... compile group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '2.26' ...
Please verify which version you should add to your project. You can check the available version in Central Maven Repository. Now you will not get error: injectionmanagerfactory not found. Enjoy!
I hope that this post helped you to understand problem and solve it!
Could You Please Share This Post? I appreciate It And Thank YOU! :) Have A Nice Day!
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?