restApi plugin 1.11.0 not compatible with Openfire 5.0.0+

Hi,

We verify that with the latest version of Openfire 5.0.0 and 5.0.1 the resApi plugin is not working properly.

Openfire version(5.0.0 and 5.0.1)
restApi version 1.11.0
OS RHEL9
Java 21

After uploading the plugin and going to the settings we see this stack trace:

on the logs we saw this:

2025.07.01 13:39:37 INFO  [PluginMonitorTask-2]: org.jivesoftware.openfire.container.PluginManager - Successfully unloaded plugin 'restapi'.
2025.07.01 13:40:04 WARN  [PluginMonitorExec-2]: org.jivesoftware.openfire.container.PluginServlet - Exception attempting to load servlet 'JerseyWrapper' (org.glassfish.jersey.servlet.Servle
tContainer) of plugin 'restapi'
org.glassfish.hk2.api.MultiException: A MultiException has 2 exceptions.  They are:
1. java.lang.NoSuchMethodError: 'org.jivesoftware.openfire.container.Plugin org.jivesoftware.openfire.container.PluginManager.getPlugin(java.lang.String)'
2. java.lang.IllegalStateException: Unable to perform operation: create on org.jivesoftware.openfire.plugin.rest.AuthFilter

at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:368) ~[?:?]
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:463) ~[?:?]
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:59) ~[?:?]
at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:47) ~[?:?]
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:74) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:131) ~[?:?]
at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:176) ~[?:?]
at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:98) ~[?:?]
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2102) ~[?:?]
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:93) ~[?:?]
at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:67) ~[?:?]
at org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.lambda$getAllServiceHolders$0(AbstractHk2InjectionManager.java:136) ~[?:?]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1249) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
at org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.getAllServiceHolders(AbstractHk2InjectionManager.java:140) ~[?:?]
at org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.getAllServiceHolders(ImmediateHk2InjectionManager.java:30) ~[?:?]
at org.glassfish.jersey.internal.inject.Providers.getServiceHolders(Providers.java:299) ~[?:?]
at org.glassfish.jersey.internal.inject.Providers.getAllRankedProviders(Providers.java:182) ~[?:?]
at org.glassfish.jersey.server.ProcessingProvidersConfigurator.postInit(ProcessingProvidersConfigurator.java:95) ~[?:?]
at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$2(ApplicationHandler.java:353) ~[?:?]
at java.util.Arrays$ArrayList.forEach(Arrays.java:4305) ~[?:?]
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:353) ~[?:?]
at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:297) ~[?:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) ~[?:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) ~[?:?]
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:232) ~[?:?]
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:296) ~[?:?]
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261) ~[?:?]
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311) ~[?:?]
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154) ~[?:?]
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:339) ~[?:?]
at javax.servlet.GenericServlet.init(GenericServlet.java:180) ~[jetty-servlet-api-4.0.6.jar:?]
at org.jivesoftware.openfire.container.PluginServlet.registerServlets(PluginServlet.java:193) ~[xmppserver-5.0.1.jar:5.0.1]
at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:621) ~[xmppserver-5.0.1.jar:5.0.1]
at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask.lambda$run$3(PluginMonitor.java:354) ~[xmppserver-5.0.1.jar:5.0.1]
at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.NoSuchMethodError: 'org.jivesoftware.openfire.container.Plugin org.jivesoftware.openfire.container.PluginManager.getPlugin(java.lang.String)'
at org.jivesoftware.openfire.plugin.rest.AuthFilter.<init>(AuthFilter.java:56) ~[?:?]
at jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?]
at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1356) ~[?:?]
at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:248) ~[?:?]
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:342) ~[?:?]
... 44 more

We verify that the method getPlugin that was already deprecated was removed on version 5 of openfire. So getPluginByName should be used instead!

We try to build locally the plugin with that change and increasing the openfire version dependency to 5.0.0 and we notice that after we increase the dependency the jsps are not created.
So we think it could be that there is another problem with the dependency of openfire 5.0.0.

Regards

Hi! Thanks for reporting this. I believe that your analysis is correct.

A ticket has been created for this issue here: Openfire 5.0.0 Compatibility · Issue #208 · igniterealtime/openfire-restAPI-plugin · GitHub

Work to get the plugin fixed is already underway (and is nearly done). You can track that effort here: Compatible with Openfire 5.0.0. by iarwen · Pull Request #207 · igniterealtime/openfire-restAPI-plugin · GitHub

1 Like