openfire插件开发-Servlet插件

1.整个插件的目录

2.各个文件的代码

ExamplePlugin

package org.jivesoftware.openfire.plugin;

import java.io.File;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.interceptor.PacketInterceptor;
import org.jivesoftware.openfire.interceptor.InterceptorManager;
import org.jivesoftware.openfire.interceptor.PacketRejectedException;
import org.jivesoftware.openfire.session.Session;
import org.xmpp.packet.Packet;
import org.jivesoftware.openfire.user.UserManager;
import org.jivesoftware.util.JiveProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xmpp.packet.JID;
import org.xmpp.packet.IQ;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import org.jivesoftware.database.SequenceManager;

import org.xmpp.packet.Message;
import org.xmpp.packet.Presence;



public class ExamplePlugin implements PacketInterceptor, Plugin {

	private static PluginManager pluginManager;
	private InterceptorManager interceptoerManager;
	private String domain = JiveProperties.getInstance().get("xmpp.domain");
	
	
	public ExamplePlugin() {
		interceptoerManager = InterceptorManager.getInstance();
	}

	@Override
	public void initializePlugin(PluginManager manager, File pluginDirectory) {
		pluginManager = manager;            
		interceptoerManager.addInterceptor(this);
		System.out.println("Exampple add success");
		System.out.println("domain = " + domain);
	}

	@Override
	public void destroyPlugin() {
		interceptoerManager.removeInterceptor(this);
		System.out.println("Exampple destroy success");
	}

	@Override
	public void interceptPacket(Packet packet, Session session,
			boolean incoming, boolean processed) throws PacketRejectedException {
}
}

ExampleServlet

package org.jivesoftware.openfire.plugin;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.util.JiveProperties;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmpp.packet.JID;
import org.xmpp.packet.Message;

public class ExampleServlet extends HttpServlet {

	private static final long serialVersionUID = -6093345417438012819L;
	private String domain = JiveProperties.getInstance().get("xmpp.domain");
	//private ExampleManager exampleManager = ExampleManager.getInstance();
	
	
	@Override
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
	
	throws ServletException, IOException {
	
		// super.doGet(req, resp);
		
		 resp.setContentType("text/plain");
		
		 PrintWriter out = resp.getWriter();
		
		 System.out.println("example servlet dogetbbbb");
		
		 out.print("example servlet dogetbbbb");
		
		 out.flush();
	
	 }	
	
	@Override
	public void destroy() {
		super.destroy();
	}
	
	@Override
	public void init() throws ServletException {
		super.init();
		AuthCheckFilter.addExclude("example/servlet");
		AuthCheckFilter.addExclude("example/servlet/exampleServlet");
	
	}
}

//表示该Servlet不需要登录到openfire系统就可以访问
//AuthCheckFilter.addExclude("example/servlet");
//AuthCheckFilter.addExclude("example/servlet/exampleServlet");

web-custom.xml

<?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文件路径 -->

<servlet-class>org.jivesoftware.openfire.plugin.ExampleServlet</servlet-class>

<servlet-name>ExampleServlet</servlet-name>

</servlet>

<servlet-mapping>

<servlet-name>ExampleServlet</servlet-name>

<url-pattern>/servlet</url-pattern>

</servlet-mapping>

</web-app>

example-servlet.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>example plugin</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<meta name="pageID" content="example-servlet"/>

</head>

<body>

<h3>hello world jsp!! <a href="/plugins/example/servlet">ExampleServlet</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> sss</th>

<th nowrap>cf</th>

<th nowrap>de</th>

</tr>

</thead>

<tbody>

<tr>

<td>asdf</td>

<td>asdf</td>

<td>asdf</td>

</tr>

<tr class="jive-even">

<td>asdf</td>

<td>asdf</td>

<td>asdf</td>

</tr>

<tr class="jive-odd">

<td>asdf</td>

<td>asdf</td>

<td>asdf</td>

</tr>

</tbody>

</table>

</div>

</body>

</html>

Plugin.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--
  Plugin configuration for the broadcast plugin.
-->
<plugin>
    <class>org.jivesoftware.openfire.plugin.ExamplePlugin</class>
    <name>Example</name>
    <description>Example messages to users.</description>
    <author>Jive Software</author>
    <version>1.9.0</version>
    <date>9/13/2013</date>
    <url>http://www.igniterealtime.org</url>
    <minServerVersion>3.9.0</minServerVersion>
    
    <adminconsole>

    <tab id="tab-server">

    <sidebar id="sidebar-server-settings">

    <item id="example-servlet" name="Example Servlet" url="example-servlet.jsp"

    description="Click is trigger example plugin" />

    </sidebar>

    </tab>

    </adminconsole>
    
</plugin>

3.运行效果





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值