问题:
在 openfire 中模仿插件写了自己的 servlet
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>org.jivesoftware.openfire.plugin.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
访问后找不到页面,返回404。
查看 PluginServlet 类,这个类就是用来加载插件的 servlet 的。
servlets.put(pluginName + url, (GenericServlet)instance);
它访问的方式是:/plugins/ + 插件名称 + url 。
而我访问的地址没有使用插件名称,直接使用了配置的url http://127.0.0.1:9090/plugins/helloworld/helloworld/。这里的插件名称不是 helloworld,而是 linktimechathistory。
完整的 openfire servlet 配置
web-custom.xml
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>org.jivesoftware.openfire.plugin.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
HelloWorldServlet.java
AuthCheckFilter.addExclude("linktimechathistory/helloworld");
跳过验证,无需登录就可访问此 servlet。
这样,访问的地址就是:http://127.0.0.1:9090/plugins/linktimechathistory/helloworld。