From my experience, the plugin binaries are stored in the Jive database. During app server startup, the binaries from the database are copied down to the file system (there is a /plugins directory). If you update the files in the /plugins directory, they will simply be overwritten with the version from the database the next time you startup the app server.
Uploading the jar files through the admin console performs the function of saving it to the database. If you can/want to try to save the jars manually to the database, you can try to skip the 2-step process. You might be able to work something out, but you'll probably need to look at the Jive code that saves plugin jars to the database to see if it's doing anything special.
The system used to support hot plugin deploys from the file-system, and it was moved to the DB once the clustering got too advanced for such a simple deploy mechanism. That being said, you can use the Maven cargo start deployment option, and deploy plugins directly from your maven project. The database plugin table is only used at startup to read binaries and serialize to the folders. It is not "needed" at runtime, hence the reason the cargo option works.
Hope this helps,
Is it necessary to actually, remove, then add the plugin?
We normally just upload our new version over the top.
We've been begging for years now for the ability to 'hot load' plugins, i.e upload them and not even have to perform a restart. Should I assume that's never going to be possible?
I know for a fact that our developers this feedback, and are making incremental changes towards this end. Currently, Spring is used to initialize numerous frameworks at startup, and it's the lowest common denominator that hits. If just one of them requires a restart to make it's config "work correctly", then it all needs to be restarted. It's a slow process due to the extent of the changes, but I know that the Engineering team at Jive has kept this in mind as they adopt new technologies and update existing ones.
While not the short-term answer you were looking for, but I hope it at least keeps the hope alive. As it should be. =)
That's good to know.
In local development I've been using jrebel which seems to work quite well for reloading plugin class and spring files. Be good for production though to get hot load plugins.
Thanks for the update!
In case anyone is still looking for an answer to this one,
in dev (e.g. on your local build), you can add this to your web/pom.xml:
above, it will put in the plugins (custom by myself) for allvideos and tableau as well as the jira plugin. the jira plugin was for Jive 6, so the directory was generated with the version number, whereas the others are jive7
for prod / staging, etc. (not your local build, but with the rpm), you need to change the blob data in the jiveplugins directory. this is a bit more complex but doable...