openfire_01_插件开发

开发带jsp、PluginServlet的插件

有些插件是单纯的继承Plugin或Handler什么的,但有些是需要jsp页面和Servlet的。下面我们就来开发带jsp和servlet的插件。

在之前的目录下添加文件,目录结构如下:

1、 首先建立一个SampleServlet的文件,内容如下

  1. package com.hoo.server.plugin;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. /**
  9. * <b>function:</b> sample servlet
  10. * @author hoojo
  11. * @createDate 2013-3-4 下午04:15:20
  12. * @file SampleServlet.java
  13. * @package com.hoo.server.plugin
  14. * @project OpenfirePlugin
  15. * @blog http://blog.csdn.net/IBM_hoojo
  16. * @email [email protected]
  17. * @version 1.0
  18. */
  19. public class SampleServlet extends HttpServlet {
  20. private static final long serialVersionUID = -5404916983906926869L;
  21. @Override
  22. public void init() throws ServletException {
  23. super.init();
  24. }
  25. @Override
  26. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  27. super.doGet(request, response);
  28. response.setContentType("text/plain");
  29. PrintWriter out = response.getWriter();
  30. System.out.println("请求SampleServlet GET Method");
  31. out.print("请求SampleServlet GET Method");
  32. out.flush();
  33. }
  34. @Override
  35. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  36. super.doPost(request, response);
  37. response.setContentType("text/plain");
  38. PrintWriter out = response.getWriter();
  39. System.out.println("请求SampleServlet GET Method");
  40. out.print("请求SampleServlet POST Method");
  41. out.flush();
  42. }
  43. @Override
  44. public void destroy() {
  45. super.destroy();
  46. }
  47. }

2、 在当前插件根目录添加web目录,在目录下建立WEB-INF目录,添加web-custom.xml文件(文件名应该是固定的)。在里面配置我们的servlet。

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  3. <web-app>
  4. <servlet>
  5. <servlet-class>com.hoo.server.plugin.SampleServlet</servlet-class>
  6. <servlet-name>SampleServlet</servlet-name>
  7. </servlet>
  8. <servlet-mapping>
  9. <servlet-name>SampleServlet</servlet-name>
  10. <url-pattern>/servlet</url-pattern>
  11. </servlet-mapping>
  12. </web-app>

当插件发布后你可以通过用:http://127.0.0.1:9090/plugins/sample/servlet 就可以访问到这个servlet了。但我发现我们只需用http://127.0.0.1:9090/plugins/sample也是可以访问到的。好像openfire会自动找到我们插件目录下的servlet配置。

注意:这里的http://127.0.0.1:9090/plugins/是固定的,至少plugins是固定的。所有的插件都在plugins目录下访问的。如果你想知道为什么,你可以看看openfire源码下的web.xml,具体目录路径在/openfire/src/web/WEB-INF/web.xml。里面有一个PluginServlet是过来plugin的配置的。

3、 在web目录下添加jsp文件,文件名是插件名称-自定义名称.jsp(建议规范命名)

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>hello world: 你好openfire</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <meta name="pageID" content="sample-service"/>
  8. </head>
  9. <body>
  10. <h3>hello world jsp!! <a href="/plugins/sample/servlet">SampleServlet</a></h3>
  11. <div class="jive-contentBoxHeader">jive-contentBoxHeader</div>
  12. <div class="jive-contentBox">jive-contentBox</div>
  13. <div class="jive-table">
  14. <table cellpadding="0" cellspacing="0" border="0" width="100%">
  15. <thead>
  16. <tr>
  17. <th>&nbsp;sss</th>
  18. <th nowrap>a</th>
  19. <th nowrap>b</th>
  20. </tr>
  21. </thead>
  22. <tbody>
  23. <tr>
  24. <td align="center">asdf</td>
  25. <td align="center">asdf</td>
  26. <td align="center">asdf</td>
  27. </tr>
  28. <tr class="jive-even">
  29. <td align="center">asdf</td>
  30. <td align="center">asdf</td>
  31. <td align="center">asdf</td>
  32. </tr>
  33. <tr class="jive-odd">
  34. <td align="center">asdf</td>
  35. <td align="center">asdf</td>
  36. <td align="center">asdf</td>
  37. </tr>
  38. </tbody>
  39. </table>
  40. </div>
  41. </body>
  42. </html>

其中最重要的一点就是:<meta name="pageID" content="sample-service"/>这个pageID。这里的是固定的,后面的content对应我们plugin.xml的内容(等下看看plguin.xml的配置)。然后可以适当的看下里面table的 属性和样式,因为很多时候会在jsp中显示内容,且用table布局的。

4、 改下之前的plugin.xml的配置,配置组件在openfire 管理员控制台的哪个地方显示,以及显示的页面。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <plugin>
  3. <!-- Main plugin class  这里是最重要滴,就是你的插件的全路径-->
  4. <class>com.hoo.server.plugin.SamplePlugin</class>
  5. <!-- Plugin meta-data -->
  6. <name>SimplePlugin</name>
  7. <description>This is the my sample plugin.</description>
  8. <author>hoojo</author>
  9. <version>1.0</version>
  10. <date>28/02/2013</date>
  11. <url>http://localhost:9090/openfire/plugins.jsp</url>
  12. <minServerVersion>3.4.1</minServerVersion>
  13. <licenseType>gpl</licenseType>
  14. <adminconsole>
  15. <tab id="tab-server">
  16. <sidebar id="sidebar-server-settings">
  17. <item id="sample-service" name="Sample Service" url="sample-service.jsp"
  18. description="Click is trigger sample plugin" />
  19. </sidebar>
  20. </tab>
  21. </adminconsole>
  22. </plugin>

这里主要就是adminconsole这里面的配置。首先tab-server应该是在管理员控制台页面的服务器菜单中显示;sidebar中的的id配置固定这样写即可;item中的id(sample-service)对应的就是上面的sample-service.jsp的<meta name="pageID" content="sample-service"/>的content内容;item的url对应的是我们写的jsp页面;name是插件的菜单名称。也就是说在管理员控制台页面中的服务器菜单下增加一个sample service的菜单,打开的页面是sample-service.jsp页面。

5、 运行ant脚本,打包发布插件。在上一章节有完整ant脚本的,运行build.xml中的这个openfire-plugins命令即可打包。然后将打好包的sample.jar发布到openfire的plugins目录下即可。

打包后的jar插件目录结构如下:

启动openfire后,在openfire管理员控制台页面的服务器->服务器设置中就可以看到Sample Service插件了。

点击Sample Servlet就可以看到openfire控制台打印请求的文字信息。

时间: 2024-10-23 05:50:20

openfire_01_插件开发的相关文章

掌握jQuery插件开发

在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用的一些组件,都有多种jQuery插件可供选择,网络上也有很多专门收集jQuery插件的网站.利用jQuery插件确实可以给我们的开发工作带来便捷,但是如果只是会简单使用,而对其中的原理不甚了解,那么在使用过程中碰到问题或者对插件进行定制开发时就会有诸多疑惑.本文的目的就是可以快速了解jQuery插件

动手试试Android Studio插件开发

由于业务关系,经常需要写一些表单页面,基本也就是简单的增删改查然后上传,做过几个页面之后就有点想偷懒了,这么低水平重复性的体力劳动,能不能用什么办法自动生成呢,查阅相关资料,发现android studio插件正好可以满足需求,在Github上搜了一下,找到BorePlugin这个帮助自动生成布局代码的插件挺不错的,在此基础上修改为符合自己需求的插件,整体效果还不错. 发现了android studio插件的魅力,自己也总结一下,也给小伙伴们提供一点参考,今天就以实现自动生成findviewby

cordova 插件开发

从事基于cordova开发混合APP也快一年了,一直没有自己"亲自操刀"写一个插件,因为网上插件太丰富了,可耻了. 今天完整的记录一次插件开发. cordova环境6.4.0 第一步安装:plugman npm install -g plugman 第二步:创建插件 plugman create --name <pluginName> --plugin_id <pluginID> --plugin_version <version> [--path

Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例

<<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识.包含SWT控件的使用.界面布局.事件处理等内容:第二篇是插件开发核心技术,主要介绍插件开发的核心知识要点,包含行为(Action).视图(ViewPart).编辑器(Editor).透视图(Perspective)等10章的内容.第三篇主要讲述插件开发的高级内容,包含开发高级内容.富client平台技术(R

Vue插件开发入门

相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vue-touch 等. 下面就看一下 Vue 的插件开发如何入门. 首先我们简单回顾一下 Vue.js 官方文档中对于插件开发的描述. Vue 的插件必须提供一个公开方法 install,该方法会在你使用该插件,也就是 Vue.use(yourPlugin) 时被调用,相当于是一个插件的注册或者声明.

jQuery插件开发(一):jQuery类方法

一.jQuery插件开发的方法 jQuery插件的编写方法主要有两种: 1.基于jQuery对象的插件 2.基于jQuery类的插件 二.基于jQuery类的插件 1.什么是jQuery类的插件? jQuery类方法其实就是jquery全局函数,即jquery对象的方法,实际上就是位于jquery命名空间的内部函数.这些函数有一个特征就是不操作DOM元素,而是操作 Javascript非元素对象.直观的理解就是给jquery类添加类方法,可以理解为添加静态方法 2.给jQuery类添加方法. /

jQuery插件开发全解析

jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法.下面就两种函数的开发做详细的说明. 1.类级别的插件开发 类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法.典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中.关于类级别的插件开发可以采用如下几种

【技术·水】浅谈Dism++清理插件开发

前言 昨天我发布了NCleaner,一款Dism++清理插件(地址:http://bbs.pcbeta.com/viewthread-1692182-1-1.html) 有些人想要我开源NCleaner:我只能说很遗憾,鉴于国内环境,是不可能的.我就说个真实故事吧(其实很悲哀) 曾经,一位大牛写了一个充满了黑科技的软件,在论坛发布并公布了源代码某天,那位大牛发现某些人修改他的源代码用于商业用途,更可气的是某些人只修改了软件的名字最终,那位大牛改掉了他的软件名,从此再也不公布主程序源代码那个软件就

jQuery插件开发精品教程(让你的jQuery更上一个台阶)

刘哇勇的部落格要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择. 本教程可能不是最精品的,但一定是最细致的. jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发