Custom servlet in Openfire plugin
I’ve been working on creating a plugin for our Openfire server, which is
currently on version 3.3.3. The Plugin
developer guide is a little help, and so are the message boards, but
there is still some detail missing.
Situation: I want to have a custom
servlet that is available on the same url:port as our admin server. I don’t want to have to
login to the admin server to reach this url, and the output from this servlet should not be
wrapped by the openfire sitemesh template.
First, I registered the
servlet in a web-custom.xml, but I could not get my servlet to appear. I had a url like
http://localhost:9090/plugins/myplugin/CustomServlet
. I couldn’t find
an answer on the message boards so I pulled down the source and started debugging. Turns out
that the PluginServlet class does a toLower on the servlet url. So changing the url pattern
from /CustomServlet to /customservlet in the web-custom.xml fixed the problem.
Next, to remove the security for hitting the servlet, I used the information
from this
post. Adding AuthCheckFilter.addExclude(“CustomServlet”)
to the initializePlugin method fixed it up.
Lastly, as mentioned here and
here,
adding <meta name=‘decorator’ content=‘none’/>
tells
sitemesh to not use the normal openfire template.
Hopefully this info
will help me remember this stuff down the line…