Actually, I think HTTP binding is the perfect candidate for a plugin – it would be much harder to implement purely as a component. As a plugin, you have the ability to get access to pretty much anything in Jive Messenger. HTTP binding is an interesting case since you’‘d need to dig under the covers of the API a bit. Hore’'s how I would do it: make the plugin also work as a WAR file and then tell the embedded Jetty instance to add the WAR file as a webapp. You can access the Jetty instance with (just checked this change into CVS):
You would then do something like:
This should work very well in general. The only major problem is that the admin console typically runs on port 9090, which won’‘t work for some clients behind firewalls. Therefore, I’‘d suggest that the code also work as a normal web-app in an app-server (so it could be deployed to the server running on port 80). In that case, you’'d need to setup the web-app to tell it where the Jive Messenger server exists.
So, it would basically be one .war file (code in CVS will recognize plugins named as .war as well as the normal .jar) that can either act as a Messenger plugin or a normal WAR. In the case of a plugin, it runs inside the embedded Jetty. In the case of being deployed as a normal webapp, you have to configure where the Messenger server lives.
We’‘re actually using this exact technique for Jive Group Chat. I’'d be happy to provide more details if that would help.