Openfire开发之Servlet的URL

     Openfire自身就是一个WebServer,在Openfire中请求Servlet需要使用URL重定向,而Openfire自己使用缓存来维护.

     可能是由于插件不会太多,所以Openfire使用一个Map来缓存,这就涉及到了一个Key和对应的Servlet的问题,其大概流程如下:

      客户端请求-->Openfire服务端接收请求-->如果是插件则将请求交给PluginServlet对象-->根据请求的地址获取jsp者是Servlet的实例.

      我遇到的问题是在Openfire的管理界面里请求jsp是好用的,但是直接通过URL地址去访问Servlet则无法找到页面,即返回了404错误.通过调试源码发现原来Openfire在对Servlet进行缓存时,缓存的Key是"jar文件名+web-customer.xml中定义的<url-pattern>.而我的问题就在于此.由于我是参照Openfire自带的UserService插件,它的jar插件文件是userservice.jar,web-customer.xml中声明的是/userservice,而最终的请求地址为http://server:9090/plugins/userService/userservice?type=add,我犯的错误是误把UserServiceServlet.java所在的文件夹userService认为是URL的一部分.这样由于我的Servlet文件存放在oaService中,jar的文件名为govoa,所以我的请求地址是http://server:9090/plugins/oaService/oamainservice?type=add就造成了无法找到页面的错误,改成http://server:9090/plugins/govoa/oamainservice?type=add后就正确了.

     这里我想造成我的误解的也是UserService这个插件本身,因为它的jar文件是userservice,存放Servlet的文件夹起名叫userService,而最终的URL地址中也是使用的userService,对于初学者造成了误会.

     注:jar的名,其实就是源码中插件的最顶级文件夹的名.

posted @ 2009-05-06 14:30  吴东雷  阅读(2114)  评论(0编辑  收藏  举报