Hello
I’m writing a custom authentification for my users and I want to do this through a plugin so I can manage versioning/deployment/update… more easily.
So I created a new plugin with one main class implementing org.jivesoftware.openfire.container.Plugin interface and another class implementing org.jivesoftware.openfire.auth.AuthProvider.
I followed this >thread< in the main class of my plugin, but when I deploy the plugin in my OF, I have the following stacktrace :
2019.04.16 11:33:38 DEBUG [pool-5-thread-1]: org.jivesoftware.openfire.container.PluginMonitor - Extracting plugin 'myplugin.openfire.plugin-openfire-plugin-assembly'...
2019.04.16 11:33:38 DEBUG [pool-5-thread-1]: org.jivesoftware.openfire.container.PluginMonitor - Successfully extracted plugin 'myplugin.openfire.plugin-openfire-plugin-assembly'.
2019.04.16 11:33:38 DEBUG [pool-34-thread-1]: org.jivesoftware.openfire.container.PluginManager - Loading plugin 'myplugin.openfire.plugin-openfire-plugin-assembly'...
2019.04.16 11:33:39 WARN [pool-34-thread-1]: org.jivesoftware.util.SystemProperty - Class com.myplugin.openfire.plugin.Username2AuthProviderImpl was not found
java.lang.ClassNotFoundException: com.myplugin.openfire.plugin.Username2AuthProviderImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[?:1.8.0_191]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_191]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_191]
at java.lang.Class.forName0(Native Method) ~[?:1.8.0_191]
at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_191]
at org.jivesoftware.util.SystemProperty.lambda$static$9(SystemProperty.java:100) ~[xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.SystemProperty.getValue(SystemProperty.java:300) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.SystemProperty$1.propertySet(SystemProperty.java:195) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.PropertyEventDispatcher.dispatchEvent(PropertyEventDispatcher.java:87) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.JiveProperties.put(JiveProperties.java:302) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.JiveGlobals.setProperty(JiveGlobals.java:811) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.util.JiveGlobals.setProperty(JiveGlobals.java:793) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at com.myplugin.openfire.plugin.MyPluginMainClass.initializePlugin(MyPluginMainClass.java:27) [myplugin.openfire.plugin-1.0.jar!/:?]
at org.jivesoftware.openfire.container.PluginManager.loadPlugin(PluginManager.java:634) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:380) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at org.jivesoftware.openfire.container.PluginMonitor$MonitorTask$4.call(PluginMonitor.java:368) [xmppserver-4.4.0-SNAPSHOT.jar:4.4.0-SNAPSHOT]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
2019.04.16 11:33:39 DEBUG [pool-34-thread-1]: org.jivesoftware.openfire.container.PluginManager - Initialized plugin 'myplugin.openfire.plugin-openfire-plugin-assembly'.
2019.04.16 11:33:39 INFO [pool-34-thread-1]: org.jivesoftware.openfire.container.PluginManager - Successfully loaded plugin 'myplugin.openfire.plugin-openfire-plugin-assembly'.
2019.04.16 11:33:39 INFO [pool-5-thread-1]: org.jivesoftware.openfire.container.PluginMonitor - Finished processing all plugins.
In my Plugin main class, my initializePlugin() is :
@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
Username2AuthProviderImpl myAuthProvider = new Username2AuthProviderImpl();
JiveGlobals.setProperty("provider.auth.className", myAuthProvider.getClass().getName());
}
I believe the Openfire core classloader doesn’t find my class, so how can I achieve this ?