日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于openfire源码开发插件

發布時間:2023/12/3 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于openfire源码开发插件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【0】README 1)本文旨在 簡述如何 基于openfire源碼開發插件, 如何導入 openfire源碼到 eclipse,參見?http://blog.csdn.net/pacosonswjtu/article/details/51871622 2)also , you can checkout ?source code of the plugin from ?https://github.com/pacosonTang/MultimediaMessagingPlatform/tree/master/plugin_cluster/plugindemo/src

【1】開發openfire插件步驟 step1)建立插件目錄樹(插件名稱==plugindemo

補充1)各個目錄樹的目錄項的意義:
補充2)目錄樹的縮略圖如下

step2)添加 java 根目錄到 source folder
step3)開發openfire插件,實現 Plugin接口
package com.myplugin;import java.io.File;import org.jivesoftware.openfire.container.Plugin; import org.jivesoftware.openfire.container.PluginManager; import org.jivesoftware.openfire.interceptor.InterceptorManager; import org.jivesoftware.openfire.interceptor.PacketInterceptor; import org.jivesoftware.openfire.interceptor.PacketRejectedException; import org.jivesoftware.openfire.session.Session; import org.xmpp.packet.Packet;// 如果需要攔截消息,就必須實現 PacketInterceptor public class PluginDemo implements PacketInterceptor, Plugin{private static PluginManager pluginManager;private InterceptorManager interceptorManager;public PluginDemo() {interceptorManager = InterceptorManager.getInstance();}@Overridepublic void interceptPacket(Packet packet, Session session,boolean incoming, boolean processed) throws PacketRejectedException {System.out.println("攔截消息以進行邏輯處理" + "from =" + packet.getFrom() + ", to = " + packet.getTo() + ", incoming = " + incoming + ", proccessed = " + processed);System.out.println("\n=========================");}@Overridepublic void destroyPlugin() {interceptorManager.removeInterceptor(this);System.out.println("PluginDemo Plugin has been destroyed.");}@Overridepublic void initializePlugin(PluginManager manager, File pluginDirectory) {interceptorManager.addInterceptor(this);pluginManager = manager; System.out.println("PluginDemo Plugin has been installed successfully.");} } step4)可選的,如果你覺得有必要的話,還可以在插件中嵌入 servlet;
package com.myplugin.manager;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class PluginDemoServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/plain");PrintWriter out = response.getWriter();System.out.println("console info: 請求SampleServlet GET Method");out.println("GET Method: these info are transmitted into client.");out.flush();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// super.doPost(request, response); // should be commented outresponse.setContentType("text/plain");PrintWriter out = response.getWriter();System.out.println("請求 PluginDemoServlet POST Method");out.print("請求 PluginDemoServlet POST Method");out.flush();}@Overridepublic void init() throws ServletException {System.out.println("servlet init successfully.");} } step4)補充: 添加servlet映射
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app><servlet> <servlet-name>SampleServlet</servlet-name> <servlet-class>com.myplugin.manager.PluginDemoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SampleServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> </web-app> step5)可選的,你也可以開發一些jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>plugin demo page.</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="pageID" content="sample-service"/> <!-- 這個是必須的,同 plugin.xml 中引用的標識符必須一樣. --></head><body><h3>hello world. <a href="<c:url value="/plugins/plugindemo/myservlet"/>">plugin demo servlet</a></h3><div class="jive-contentBoxHeader">jive-contentBoxHeader</div><div class="jive-contentBox">jive-contentBox</div><div class="jive-table"><table cellpadding="0" cellspacing="0" border="0" width="100%"><thead><tr><th>name</th><th>age</th><th>stuid</th></tr></thead><tbody><tr class="jive-odd"><td align="center">zhangsan</td><td align="center">35</td><td align="center">2014210541</td></tr><tr class="jive-even"><td align="center">lisi</td><td align="center">67</td><td align="center">2014110321</td></tr><tr class="jive-odd"><td align="center">wangwu</td><td align="center">12</td><td align="center">2015117891</td></tr></tbody></table></div></body> </html> step5)補充:在jsp中 請求 該 servlet <h3>hello world. <a href="<c:url value="/plugins/plugindemo/myservlet"/>">plugin demo servlet</a></h3> step6)編寫插件配置文件 plugin.xml <?xml version="1.0" encoding="UTF-8"?> <plugin><!-- Main plugin class 這里是最重要滴,就是你的插件的全路徑--><class>com.myplugin.PluginDemo</class><!-- Plugin meta-data --><name>plugindemo</name><description>This is the my plugindemo.</description><author>pacoson</author><version>1.0</version><date>29/07/2016</date> <minServerVersion>4.0.2</minServerVersion><licenseType>gpl</licenseType><adminconsole><tab id="tab-server"><sidebar id="sidebar-server-settings"><item id="plugindemo-service" name="my plugin demo" url="plugindemo-service.jsp"description="plugindemo-service plugin." /></sidebar></tab> </adminconsole> </plugin> 【2】編譯插件并打包為jar copy到 openfire 插件目錄下 1)編譯打包后的效果
2)通過ant 編譯插件的步驟(其實很簡單,因為 openfire 自帶 編譯模板,如果要自己寫的話,那就有點復雜了) step1)根目錄\build.properties, 填寫 插件名稱 到 合適位置

step2)右鍵build.xml -> run as -> ant build(有兩個ant build,選擇第2個),運行 ant 腳本 編譯即可,編譯后的結果 在 本章節已經說明了;

【3】查看訪問效果


總結

以上是生活随笔為你收集整理的基于openfire源码开发插件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。