当前位置:文档之家› OpenFire二次开发环境搭建

OpenFire二次开发环境搭建

OpenFire二次开发环境搭建
OpenFire二次开发环境搭建

2、ANT运行配置

4、启动服务器

5、访问服务器

6、代码研究

Openfire的socket网络连接包括:

1.服务器和服务器之间的连接(监听在端口5269)

2.外部组件和服务器之间的连接(监听在端口5275)

3.多元(complex)连接(监听在端口5269)

4.客户端和服务器的连接(监听在端口5222)

5.客户端和服务器通过TLS/SSL3.0的连接。(监听在端口5223)

客户端和服务器的连接分析:

A、这些连接都是通过ConnectionManager接口实现管理的,程序中对ConnectionManager

接口的实现类是

它是作为一个模块(Module)类加载到服务器中的。

在ConnectionManagerImpl中是通过调用

始端口监听的。

startClientListeners方法使用的是Apache的Mina框架来实现网络连接的,Mina框架的模式如下:

几个接口:

IoAccepter 相当于网络应用程序中的服务器端

IoConnector 相当于客户端

IoSession 当前客户端到服务器端的一个连接实例

IoHandler 业务处理逻辑

IoFilter 过滤器用于连接通讯层接口与业务层接口

IoFilter:

IoFilter为MINA的功能扩展提供了接口。它拦截所有的IO事件进行事件的预处理和后处理。它与Servlet中的filter机制十分相似。多个IoFilter存放在IoFilterChain中IoFilter能够实现以下功能:

数据转换

事件日志

性能检测

在Openfire中主要用filter这种机制来进行数据转换。

B、Protocol Codec Factory:

Protocol Codec Factory提供了方便的Protocol支持,通过它的Encoder和Decoder,可以方便的扩展并支持各种基于Socket的网络协议,比如HTTP服务器、FTP服务器、Telnet服务器等等。

要实现自己的编码/解码器(codec)只需要实现interface: ProtocolCodecFactory即可,在Openfire中实现ProtocolCodecFactory的类为

IoHandler:

MINA中,所有的业务逻辑都有实现了IoHandler的class完成,当事件发生时,将触发

IoHandler中的方法:

sessionCreated

sessionOpened

sessionClosed

sessionIdle

exceptionCaught

messageReceived

messageSent

C、在Openfire中客户端和服务器连接的IoHandler实现类是

它是从ConnectionHandler中继承来的。

D法首先为Mina框架设置线程池,再将一个由

Protocol Codec Factory的Filter放入到FilterChain中,然后

绑定到端口5222,并将IoHandler对数据进行处理。

完成这些步骤后Openfire就在5222等待客户端的连接。

E、客户端连接的处理过程:

当有客户端进行连接时根据Mina框架的模式首先调用的是

sessionOpened首先为此新连接构造了一个parser(XMLLightWeightParser),这个parser是专门给XMPPDecoder(是XMPPCodecFactory的解码器类)使用的,再创建一个Openfire的Connection类实例connection和一个StanzaHandler的实例。最后将以上的parser, connection 和StanzaHandler的实例存放在Mina的session中,以便以后使用。

当有数据发送过来时,Mina框架会调用

messageReceived首先从Mina的session中得到在sessionOpened方法中创建的StanzaHandler实例handler,然后从parsers中得到一个parser(如果parsers中没有可以创(注意这个parser和在sessionOpened方法中创建的parser不同,这个parser 建一个新的实例)

是用来处理Stanza的,而在sessionOpened方法中创建的parser是在filter中用来解码的,一句话说就是在sessionOpened方法中创建的parser是更低一层的parser)。最后将xml数据包交给StanzaHander的实例hander进行处理。

F、StanzaHander的实例hander处理xml数据包的过程

StanzaHander首先判断xml数据包的类型,如果数据包以“

理。

7、功能扩展

A、修改源代码

⑴用户的创建。由于源代码中用户信息不能满足要求,需要扩展。服务器端创建用户比较简单,主要是客户端的创建比较复杂,

主要有4个步骤,客户端发送创建用户的请求(get请求),请求创建的用户字段,服务器端接收到之后进行过滤,然后返回信息(result),信息中只包含合法的用户属性,客户端收到之后,再将合法的用户字段发送给服务器(set请求),服务器再根据收到的用户字段创建用户,即写入数据库。

⑵用户的查询。过程类似上面用户的创建。

B、插件开发

Openfire 服务器端是支持插件开发的,开发过程可能会涉及到数据库的操作,本篇文章专注于Openfire 插件的部分,对服务器端涉及到数据库的开发只做简单介绍。

Openfire 是一个用Java 实现的XMPP 服务器,客户端可以通过IQ 的方式与其进行通信(其实就是XML),客户端和服务器之间的通信是依靠底层Smack 库提供的各种功能来完成的。其实利用插件方式来扩展Openfire 服务器端主要有两种扩展方式,一种是对服务器控制台页面进行扩展(不是本文的主要内容),其实就是遵循Openfire 页面的布局方式,进行相应的页面扩展和功能扩展;另一种是对通信功能进行扩展。本文主要针对后者进行具体的描述

本篇文章的结构如下:

1、创建plugin.xml(这是整个插件最关键的文档)

2、创建服务器插件实例(实现Plugin 接口的一个类还有一批IQHandler)

3、打包插件(Openfire 插件也有自己的打包方式)和部署插件

好滴,实刀实枪的来动手做吧

1、创建plugin.xml

初次开发Openfire 和Spark 插件的时候,很容易把二者搞混,千万记得,这里是Openfire 的plugin.xml 不是第二篇文章说的那个啦!

com.im.server.plugin.GroupTreePlugin

GroupTreePlugin

This is the group plugin.

Phoenix

1.0

14/03/2008

http://localhost:9001/openfire/plugins.jsp

3.4.1

gpl

最重要的那一行我已经标记出来啦,就是你这个插件的初始化和垃圾清理类,例子中是在com.im.server.plugin 包中的GroupTreePlugin 类,下文会对这个类进行详细描述。其余的都是描述信息,只要你提供了正确的描述信息,一般都不会出错。建议初次开发者,在写完plugin.xml 文件后,写一个简单的Plugin 实例,并打印出一些信息,如果重新启动Openfire 信息成功显示,恭喜你,你已经迈出一大步了!

2、实现Plugin 类和IQHandler

Plugin 类主要起到的作用是初始化和释放资源,在初始化的过程中,最重要的的注册一批IQHandler,IQHander 的作用有点类似于Spark 中的IQProvider,其实就是解析XML 文件之后,生成一些有用的实例,以供处理。下面分别给出一个Plugin 类的实例和IQProvider 的实例

GroupTreePlugin 类

/**

* 服务器端插件类

*

* @author Phoenix

*

* Mar 14, 2008 11:03:11 AM

*

* version 0.1

*/

public class GroupTreePlugin implements Plugin

{

private XMPPServer server;

/*

* (non-Javadoc)

*

* @see org.jivesoftware.openfire.container.Plugin#destroyPlugin()

*/

public void destroyPlugin()

{

}

/*

* (non-Javadoc)

*

* @see org.jivesoftware.openfire.container.Plugin#initializePlugin(org.jivesoftware.openfire.container.Plu ginManager,

* java.io.File)

*/

public void initializePlugin(PluginManager manager, File pluginDirectory)

{

PluginLog.trace("注册群组树IQ处理器");

server = XMPPServer.getInstance();

server.getIQRouter().addHandler(new GroupTreeIQHander()); //1

server.getIQRouter().addHandler(new UserInfoIQHandler());

server.getIQRouter().addHandler(new DelUserIQHandler());

server.getIQRouter().addHandler(new CreateUserIQHandler());

server.getIQRouter().addHandler(new AddGroupUserIQHandler());

server.getIQRouter().addHandler(new SetRoleIQHandler());

}

}

上例所示,在初始化中先找到IQRouter,然后通过IQRouter 注册一批IQHandler,这些IQHander 会自动监听相应命名空间的IQ,然后进行处理;由于这个Plugin 不需要做资源释放的工作,所以在destroyPlugin() 方法中没有任何内容。具体的IQHander 类如下

GroupTreeIQHander

/**

* 处理客户端发来的IQ,并回送结果IQ

*

* @author Phoenix

*

* Mar 14, 2008 4:55:33 PM

*

* version 0.1

*/

public class GroupTreeIQHander extends IQHandler

{

private static final String MODULE_NAME = "group tree handler";

private static final String NAME_SPACE = "com:im:group";

private IQHandlerInfo info;

public GroupTreeIQHander()

{

super(MODULE_NAME);

info = new IQHandlerInfo("gruops", NAME_SPACE);

}

/*

* (non-Javadoc)

*

* @see org.jivesoftware.openfire.handler.IQHandler#getInfo()

*/

@Override

public IQHandlerInfo getInfo()

{

return info;

}

/*

* (non-Javadoc)

*

* @see org.jivesoftware.openfire.handler.IQHandler#handleIQ(org.xmpp.packet.IQ) */

@Override

public IQ handleIQ(IQ packet) throws UnauthorizedException

{

IQ reply = IQ.createResultIQ(packet);

Element groups = packet.getChildElement();//1

if (!IQ.Type.get.equals(packet.getType()))

{

System.out.println("非法的请求类型");

reply.setChildElement(groups.createCopy());

reply.setError(PacketError.Condition.bad_request);

return reply;

}

String userName = StringUtils.substringBefore(packet.getFrom().toString(),"@"); GroupManager.getInstance().initElement(groups,userName);

reply.setChildElement(groups.createCopy());//2

System.out.println("返回的最终XML" + reply.toXML());

return reply;

}

}

可以看到主要有两个方法,一个是getInfo() 这个方法的目的是提供要解析的命名空间,在本例中,这个IQHandler 对每个命名空间为"com:im:group" 的实例进行处理;还有一个最重要的方法:handleIQ() 该方法对包含指定命名空间的XML 进行解析,然后返回一个解析好的IQ。其实我认为,这个IQHandler 和IQ 的关系就是Controller 和Model 的关系(如果你了解MVC 的话,那么你一定知道我再说什么),只不过这里并没有指定什么View,你完全可以把IQ 当成Model 类进行理解。在这里,我用了GroupManager 进行了XML 的处理,因为我返回的IQ 内容中要从数据库读取所有群组信息,所以转交给GroupManager 进行处理,你完全可以在这个方法中进行具体的XML 处理,在这里,解析和创建新的XML 主要用到的是JDOM(如果你对Java 解析XML 有所了解,那真的太好了!)。程序//1 处主要是获取创建返回的IQ,并获取原来IQ 的子元素(用于创建我们返回的IQ);程序//2 处很关键,如果你不调用createCopy 方法,程序会出错(程序会死锁还是什么,忘记咧,不好以西)。

这就是程序的主体部分,我在这里有一个建议,能不用Openfire 原始的程序函数,就不要用它们。我的提取数据库方式都是自己写的Bean,这样有利于你自己对程序的掌控,其实更有利于快速开发(这世道不是啥都讲究敏捷么,哇哈哈)

3、打包插件

打包依然遵循二次打包的原则(如果你不了解啥叫要二次打包,请看上一篇)

这是我的ant 文件,由于Eclipse 帮我做了build 等很多工作,实际我的ant 工作就是在打包,并放入插件目录下的plugin 文件夹下

value="E:/workspace/europa/openfire_src/target/openfire" />

Anroid开发环境搭建实验报告

实验一A n d r o i d开发环境搭建 一、实验内容 1)了解Android开发所需要的开发包和工具,以及获得它们的方式; 2)下载、安装和配置Android开发包; 3)测试安装的开发环境,创建了一个Android项目; 4)在模拟器上运行和调试Android应用程序,并将该应用程序安装到Android手 机上。 二、实验步骤 1、参考《Android应用开发揭秘》的第一章,学习了解什么是Android系统以及Android的系统架构、Android应用程序框架; 2、参考《Android应用开发揭秘》的第二章,从FTP上下载java JDK和Eclipse 放在安装目录下,Eclipse直接将下载的压缩包解压即可。对于JDK双击安装,然后对java的开发环境进行配置:设置环境变量创建“Path”变量名,添加JDK安装目录中“bin”文件夹路径;创建“CLASSPATH”变量,添加JDK安装目录中“lib”以及“demo”的路径;最后进行测试是否安装成功。 4、安装完成后配置Android SDK,将Android SDK安装目录中的tools文件夹路径添加到环境变量中,更改系统变量中的“Path”项,添加路径: 5、安装和配置ADT,参照Android应用开发秘籍,启动Eclipse,点击“Help”菜单,按照步骤,在“Add Site…”之后,文本框里输入地址。打开菜单“Windows”,依次选择“Preferences”->“Android”,点击浏览选择Android SDK的安装路径,点击OK;然后打开菜单“File”,如下图查看得安装配置成功。 6、创建第一个Android项目HelloAndroid,新建项目,选择“Android Application Project”子项,如图。在“Project name”文本框输入“HelloAndroid”,“Build Target”选项框中选择“Android SDK ”,依次完成项目的设置,如下图。 HelloAndroid项目创建好,由ADT插件自动生成,可以运行。 7、运行HelloAndroid,使用Android仿真模拟器。选择Window,打开AVD Manager,新建一个AVD,选择API的等级为API 10,,填写SD卡的大小为2G,如图。 8、运行HelloAndroid项目 9、调试HelloAndroid项目,首先将Eclipse开发工具的工作界面切换到DDMS: 10、实验过程中发现的问题以及解决问题的方法 在安装Android SDK的时候,遇到信息“Failed to fetch URL…”的错误提示,然后将HTTPS方式改为HTTP方式,问题就解决了。

实验报告_实验1 C程序的运行环境和运行方法()

实验报告_实验1 C程序的运行环境和运行方法 一、实验目的: 1、熟悉VS 2005/2008/2010的下载、安装及使用,能够在IDE环境中编辑、编译、链接、运行C程序; 2、熟悉C程序的基本结构,能够参考例题代码编写简单C程序; 3、熟悉C语言中注释的用法。 二、实验内容 说明:基础题为必做题,提高题为选做题 1、(基础题) 操作内容:请学生建立新项目(lab_1_1),输入下列代码,并编译、链接、运行:(独立完成) 程序代码: #include int main( ) { printf ("This is a C program.\n"); return 0; }

问题:C程序的编译、链接、运行可以一次性完成吗?清理、重新生成项目(或程序)有什么作用? 答:可以,生成:如果程序没有编译过就全部编译,已编译过的只编译修改的部分,从新生成:先清除一遍,再对所有文件编译。 2、(基础题) 请学生上机编译下列程序,修改其错误,再运行: #include ; main( ) { int a scanf(“%d”,a); Printf(“%d*%d=%d”,a,a,a*a); ] 修改后的程序代码: #include int main() { int a; scanf(“%d”,a); printf(“%d%d%d”,a,a,a*a); return 0; } 3、(基础题)请参考例题代码,按下列要求,写出相应的C程序: 程序代码:#include

int main() { printf(" *\n"); printf(" **\n"); printf(" ***\n"); printf(" ****\n"); printf("*****\n"); return 0; } 4、(提高题)请参考例题代码,按下列要求,写出相应的C程序: 输入圆的半径,输出其周长与面积; 程序代码: #include #define Pi 3.14 int main() { float r,l,s,pi; scanf("%f",&r); l=2*pi*r; s=pi*r*r; printf("%d%d\n",s,l); return 0; }

windowsXP下Android安卓开发环境搭建详细教程及图解

注:本教程是讲解在Windows XP下搭建安卓开发环境的。 安装目录: 步骤1 安装JDK 步骤2 安装Android SDK 步骤3 安装Tomcat 步骤4 安装Ant 步骤5 安装Eclipse 步骤6 安装Eclipse的ADT插件 步骤7 在图形界面下管理AVD 步骤8 设置Android系统语言 本教程的软件可以从我博客“绿杨芳草”下载。 方法/步骤 1、安装JDK 运行安装程序【jdk-6u22-windows-i586-p.exe】,分别点击下一步进行安装。 在安装过程中先后会出现两次选择安装目录的界面,全部改为以下路径: jdk安装目录:C:\Java\jdk1.6.0_22 jre安装目录:C:\Java\jre6\

安装好之后,配置环境变量: 打开环境变量窗口方法:右键【我的电脑】--单击【属性】--单击【高级】--单击【环境变量】。 在上方的用户变量中依次新建如下变量,并分别填入如下路径: 变量名:JAVA_HOME 变量值:C:\Java\jdk1.6.0_22 变量名:PATH 变量值:%JAVA_HOME%/bin 变量名:CLASSPATH 变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar 图1 配置完成之后,分别点击【开始】--【运行】--输入【cmd】--输入【javac】--按【回车键】,若看到以下信息,则代表配置成功。

图2 2、安装Android SDK 将【android-sdk_r17-windows.zip】解压到E:\Android目录下(Android目录自己新建,以后所有关于Android开发相关软件都会统一放到该目录中),得到一个android-sdk-windows 文件夹,该文件夹包含如下文件结构: add-ons:该目录下存放额外的附件软件。刚解压后,该目录为空。 platforms:该目录下存放不同版本的Android版本。刚解压后,该目录为空。 tools:该目录下存放了大量Android开发、调试的工具。 SDK Manager.exe:该程序就是Android SDK和AVD(Android虚拟设备)管理器。 通过该工具可以管理Android SDK和AVD。 运行E:\Android\android-sdk-windows目录下的【SDK Manager.exe】 然后等待更新...(该步骤必须联网,因为SDK安装包需要在线获取)。 在更新的过程中若遇到如下的提示窗口:

OpenFire插件开发基础教程

O p e n F i r e插件开发基础教程 Openfire是一款优秀的XMPP服务器,而且是开放源码的.大家可以根据自己的需求进行二次开发。二次开发主要有两种方式:1.修改源代码,2开发openfire插件。从可扩展性上考虑,自然是开发插件是上策,只有插件无法实现时候才会选择修改源代码。 下面就个人经验,说明一下如何开发openfire插件 一、环境基础 要有一个配置好的openfire开发环境,这个网络上有比较详细的教程了。比如《》和《行》,这时候ant应该是可以正常运行的,先执行openfire 【default】,就生成了openfire的目标代码,再执行plugins,就个生成所以系统自带的插件。 二、目录拷贝 打开workspace\openfire_src\src\plugins目录,找一个要修改的插件,我选的是subscription,拷贝生成“subscriptionUF”。打开src目录,里面有两个文件夹 ,java就是我们要改的源码,而web里面是修改这个插件所要用的web 配置页面,目前用不到,直接删除。 三、修改plugin.xml 这个一个xml文件,里面的内容就按照自己的样子更改吧。最关键是确定,插件所在的类名,既然没有web文件夹了adminconsole也全部注释掉吧. 四、修改类和类目录 修改src/java里面的目录层次,Class和src/java中的路径必须一致。 五、引入openfire项目 右击openfire项目,选择New->Source Folder,在Floder name中选择到刚刚新增的插件目录,注意要选到src/java这一层 六、修改类文件 SubscriptionPluginUF是完全copy SubscriptionPlugin的,因此有两个类名不符的error修改一下. 至此,整个openfire已经把我们新加的SubscriptionPluginUF包含在他的plugins中了,通过控制台也能看到一个仿冒的SubscriptionPluginUF插件 七、单独编译插件 如果每次都运行plugins,生成所有插件的同时生成我们修改的插件,固然可行,就是慢了一点,插件有什么错误也要找半天。Openfire还很贴心的给了只生成我们想要的插件的ant 指令— plugin,我们要做的工作就是告诉ant,我们的目标插件名是 SubscriptionPluginUF。 增加一个plugin的property,这样只需要点击plugin,就能生成我们的插件了。P.S.openfire插件的目录和文件组织 请参考/documentation/docs/plugin-dev-guide.html

实验一 C程序的运行环境和运行C程序的方法实验报告

实验一C程序的运行环境和运行C程序的方法 1.实验目的: (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统 (2)了解在该系统上如何编辑,编译、连接和运行一个C程序 (3)通过运行简单的C程序,初步了解C源程序的特点 2. 实验内容和步骤 (1)检查所用的计算机系统是否已安装了C 编译系统并确定它所在的子目录(2)进入所用的集成环境 (3)熟悉集成环境的界面和有关菜单的使用方法 (4)输入并运行一个简单的、正确的程序 输入下面的程序 # include void main() { printf(“This is a c program..\n”); } ①下面是屏幕上显示的编译信息。无错,进行连接。 --------------------Configuration: L1 - Win32 Debug-------------------- Compiling... L1.c L1.obj - 0 error(s), 0 warning(s) ②连接无错误,使程序运行,观察分析运行结果。 --------------------Configuration: L1 - Win32 Debug-------------------- Linking... L1.exe - 0 error(s), 0 warning(s) 运行输出结果 This is a c program. Press any key to continue This is a c program. Press any key to continue 分析:输入自己编写的源程序,检查程序有无语法错误,可以通过编译来实现,它会自动查出程序的语法错误,如果有错误应该找出原因,并改正过来,再进行编译和连接,仔细分析编译信息,确定没错误就可以运行程序,输入数据。 第一个程序运行的结果是This is a c program.。符合我们原来设计这个程序的目的,说明这个程序是正确的。 (5)输入并编辑一个有错误的C程序 输入程序 #include

在Eclipse下搭建Android开发环境教程

在Eclipse下搭建Android开发环境教程 本文将全程演示Android开发环境的搭建过程,无需配置环境变量。所有软件都是写该文章时最新版本,希望大家喜欢。 我们昨天向各位介绍了《在NetBeans上搭建Android SDK环境》,前不久也介绍过《在MyEclipse 8.6上搭建Android开发环境》,都受到了读者的欢迎。但是很多朋友都认为NetBeans在中国用户不多,MyEclipse 又是收费产品,都没有Eclipse好,很多读者都希望我们介绍一下Eclipse下搭建的Android开发环境,本文将全程演示Android开发环境的搭建过程,无需配置环境变量。所有软件都是写该文章时最新版本,希望大家喜欢。 一相关下载 (1)Java JDK下载: 进入该网页: https://www.doczj.com/doc/4d15286908.html,/javase/downloads/index.jsp (或者直接点击下载)如下图: 选择 Download JDK 只下载JDK,无需下载jre. (2)Eclipse下载 进入该网页: https://www.doczj.com/doc/4d15286908.html,/downloads/ (或者直接点击下载:BT下载 HTTP下载)如下图:

我们选择第一个(即eclipse IDE for java EE Developers) (3)下载Android SDK 说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK 版本,后一种大概20多M,前一种70多M。 完全版下载 (android sdk 2.1 r01) 升级版下载 (建议使用这个,本例子就是使用这个这里面不包含具体版本,想要什么版本在Eclipse里面升级就行) 二软件安装 (1)安装jdk 6u19安装完成即可,无需配置环境变量 (2)解压eclipse eclipse无需安装,解压后,直接打开就行 (3)解压android sdk 这个也无需安装,解压后供后面使用 (4)最终有三个文件夹,如下图:

基于XMPP协议和Openfire的即时通信系统的开发

万方数据

万方数据

万方数据

基于XMPP协议和Openfire的即时通信系统的开发 作者:潘凤, 王华军, 苗放, 李刚 作者单位:潘凤(成都理工大学信息工程学院,四川,成都,610059;运城学院计算机科学与技术系), 王华军,苗放(成都理工大学信息工程学院,四川,成都,610059), 李刚(华商世纪(北京)科贸发 展股份有限公司) 刊名: 计算机时代 英文刊名:COMPUTER ERA 年,卷(期):2008,(3) 被引用次数:1次 参考文献(5条) 1.许鼎即时通信四种协议简述 2003 2.庞怡即时通讯工具现状及发展趋势分析[期刊论文]-科技情报开发与经济 2006 3.Jason Kichten.李军用基于XML的即时消息开发Jabber 2003 4.Peter S A XMPP Instant Messaging and Presenee 2004 5.Jabber官方组织"Jabber::Protocol" 相似文献(6条) 1.学位论文付莎基于XMPP协议企业级IM的研究与实现2009 近年来即时通信技术的飞速发展使即时通信工具的应用更为广泛,给个人的网络生活、企业的日常办公都带来了极大的便利性与高效性。XMPP( eXtensible Messaging and Presence Protocol)可扩展消息与出席协议技术便是其中较为活跃的一种即时通信技术。由于即时通信工具在企业中的应用给企业的运营管理带来诸多便利,因而在企业中的应用越来越广泛,具有很高的研究与应用价值。 目前常用的即时通信软件的协议种类繁多,本文在研究比较了当前流行的几种协议之后,选用了基于可扩展标记语言XML的XMPP协议,由于其开放性、扩展性、安全性良好等诸多优势,并可以实现与使用其他协议的即时通信软件的互联互通,且发展前景良好,因而对于开发一款企业级即时通信系统有着十分明显的优势。本文从对XMPP协议的介绍与分析入手,首先简要介绍了XMPP协议及其发展,XMPP协议的特点,然后又深入介绍了XMPP协议的内容:XMPP协议的系统构架、地址空间、数据的传输结构、以及通信链路的建立过程等。在对协议进行了深入研究的基础上,根据本文的研究目标,针对企业级即时通信系统的特点进行需求分析,并设计与实现。在实现了即时通信的消息收发、名册管理、出席信息的交换等基本功能的基础上,着重研究了用户的管理控制问题、权限划分、可追溯性管理及功能性、扩展性的要求,实现了会议功能、文件传输,以及广播功能,模拟了与非XMPP系统进行交互的过程。在开源软件系统Openfire及Gloox库的支持基础上,最终设计并实现了一套完善的面向企业级的即时通信系统。 最后对系统进行了测试,完成了测试平台的搭建工作,建立相应的测试用例。系统实验测试的结果表明:系统功能完善、稳定,界面友好简洁,满足企业级即时通信系统的需求。 2.学位论文招俏春基于XMPP协议的即时通讯系统的研究2008 随着互联网的普及和发展,即时通讯已经成为人们交流的重要手段。目前有许多的IM系统,如AOL IM、Yakoo IM和MSN IM,它们使用了不同的技术,而且它们互不兼容。XMPP/Jabber的提出打破了传统即时通信系统之间无法实现互联互通的局面。XMPP对于即时通信是一个开放的基于xml的数据模型和协议,采用了分布式的网络体系机构,模块化可扩展的系统架构,使得扩展它的功能变得简单。 利用Jabber/XMPP的体系结构,构建了一个基于XMPP协议的即时通信系统,包括即时通信系统的客户端和服务器。其中服务器采用开源的Jabber服务器Openfire,客户端基于XMPP核心及扩展协议利用Google Talk的开发包libjingle进行研究开发。设计了一个与Openfire互联通信的客户端系统,实现与客户音的文字、语音、视频、文件及实时数据通信功能;研究了XMPP协议及其在协同通讯领域的应用。 介绍了即时通讯的现状、发展趋势,分析了客户端软件的开发环境和所要用到的几个相关技术。在此基础上设计出基于)(MPP协议的能与Jabber服务器Openfire实现互通的客户端软件的总体架构和基本模型,并对即时通讯客户端的具体设计进行了全方位的阐述:在XMPP流通信基础上的文字通信及扩展的群组通讯;基于JEP扩展协议Jingle协议完善了系统功能,进行了客户问的P2P(Peer-to-Peer,点对点)连接扩展,从而实现了可靠的实时语音视频、文件、实时数据等P2P通信。另外还对客户端设计中的几个关键问题,网络安全机制和带NAT的防火墙穿越等方面的进行了较为深入的研究,并论述了本系统所采用的方案。最后总结了本设计的工作与成果,并提出下一阶段的研究设想。 3.期刊论文路璐.王华军.苗放.李刚.Lu Lu.Wang Huajun.Miao Fang.Li Gang基于Jingle协议及Opnefire的语音通信原理与实现-办公自动化(综合版)2007(12) 本文对Jingle协议及Openfire开源项目进行研究和分析,在此基础上进行点对点语音通信原理的分析和实现,并指出该通信方式的优点和不足. 4.学位论文罗伟基于Android平台的即时通讯系统的研究与实现2009 随着移动通信与Internet的飞速发展及相互融合,GPRS使无线网络高速接入到Internet成为现实,移动用户从而可以享受到Internet提供的服务。即时通讯是基于互联网协议的应用程序,它能够使应用不同设备的用户进行通信,随着手机的不断普及以及性能的不断提升,为即时通讯系统从传统的PC机到手机的移植提高了很好的条件。而且在中国庞大的手机用户中,通过手机使用即时通讯软件的用户越来越多。当前的手机操作系统都过于封闭 ,各大即时通讯软件采用的通讯协议也不统一,而Android是基于Linux的开源的手机操作系统平台,XMPP是基于XML的开源的即时通讯协议,因此基于Android平台和XMPP协议开发即时通讯系统具有很好的应用前景。 本文给出了系统的研究背景,对当前手机操作系统、即时通讯软件和即时通讯协议的发展现状做了简单的介绍。进而详细的分析了Android的特征、架构以及Android应用的构成和工作机制,并对Android与其他手机操作系统进行了比较,说明了Android在手机操作系统中的优势。提出了系统的架构 ,以及系统服务器端和客户端的解决方案,采用开源的Openfire作为系统的即时通讯平台,实现移动客户端之间的即时通讯。对系统客户端的组成模块进行了介绍,对即时通讯协议XMPP以及系统的通讯机制进行了分析。针对当前通信数据的安全问题并结合本系统的特点,对IDEA数据加密算法进行了改进,提出了A—IDEA算法的设计,并对两种算法从几个方面进行了对比分析,对于图片文件的加密,采用A—IDEA与RSA算法相结合的方案。对服务器的运行流程进行了分析并对系统客户端进行了详细的设计与实现,对系统进行了部署和测试。 5.期刊论文剧忻.苗放.JU Xin.MIAO Fang基于MINA开发高性能网络应用程序——以实现XMPP协议

spark+openfire 源代码部署

spark+openfire二次开发(一) 文章分类:Java编程 1.准备工作: 到官网上下载Openfire 3.6.4,并通过svn下载openfire、Spark和SparkWeb 的源代码 官网地址如下: https://www.doczj.com/doc/4d15286908.html,/downloads/index.jsp 注意官网上最新的Spark版本是2.5.8,其jdk环境最好使用1.6的版本。 2.环境搭建——spark源码安装配置 双击openfire_3_6_4.exe进行openfire的安装,安装过程很简单,不介绍了。 本例的开发环境是基于Eclipse的。 1)选择File——New——Project——Java Project。 输入项目工程名spark Contents中选择"Create project from existiing source",然后把spark 文件所在的文件夹加进去..

点击Finish。 2)生成Spark: 点击Window::Show View::Ant 右击Ant面板,选择Add Buildfiles 展开spark::build文件夹,选择build.xml,点击"OK" 在Ant面板,展开Spark,双击"release",等一段时间,会提示"Build Successful"。 3)运行Spark: 点击Run::Open Debug Dialog...,出现"Run"窗口 选择"Java Application",右键点击"New"按钮. 在"Main"标签页,将New_configuration换成Spark. 点击Project::Browse按钮,选择Spark,再点OK.

java的开发环境和运行环境是一回事吗

Java程序开发与运行环境 Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。编程人员和最终用户可以利用这个工具来开发java 程序或调用Java内容。JDK包括以下工具:javacJava语言编译器,输出结果为Java字节码java,Java字节码解释器javapDisassembeler:Java字节码分解程序,本程序返回Java程序的成员变量及方法等信息。javaprof资源分析工具,用于分析Java程序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。javahC代码处理工具,用于从Java类调用C++代码javaAppletViewer小应用程序浏览工具,用于测试并运行Java小应用程序javaDebuggerAPIJava调试工具APIPrototypeDebuggerJava调试工具原型 Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJavaWWW浏览器。其中,HotJava浏览器提供了在WWW环境下运行Java代码的一个运行系统,而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统,它可以一种稳定、高性能方式运行那些独立于平台的Java 字节码,Java编译器则用于生成这种字节码。 JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。 JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 在实际应用上讲,JRE的类库只是JDK所有类库里面的一小部分,只是用来支持Java运行的,把其余的调试编辑一类的应用项都去除了!

android5.0初学者之开发环境搭建

1.JDK下载及安装 1.1进入下载首页,找到JDK,点击下载。 https://www.doczj.com/doc/4d15286908.html,/technetwork/java/javase/downloads/index-jsp-138363.html Java Platform, Standard Edition之Java SE 8u25 includes: JDK (Java SE Development Kit); Server JRE (Server Java Runtime Environment); JRE (Java SE Runtime Environment); 点击“JDK下载”后进入下载页面: https://www.doczj.com/doc/4d15286908.html,/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 勾选” A ccept License Agreement ” 后选择对应的JDK版本号,此处选择

1.2 下载完成后,双击安装。 默认安装路径为:C:\Program Files\Java\jdk1.8.0_25\和 C:\Program Files\Java\jre1.8.0_25\ 安装完成后按如下步骤添加环境变量:

步骤1:“开始”---> “计算机”---> “属性”打开如下窗口 “高级系统设置”---> “高级”---> “环境变量”打开环境变量配置窗口。 步骤2:在环境变量配置窗口中新建“系统变量”, 变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_25 变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 编辑变量名为Path的环境变量的变量值,在原有基础上添加jdk1.8.0_25\bin路径和Android SDK的tools和platform-tools的文件夹路径。 ;C:\Program Files\Java\jdk1.8.0_25\bin;E:\Java\adt-bundle-windows-x86-20140702\sdk\tools;E:\Java\adt-bundle-windows-x86-20140702\sdk\platform-tools

编译环境

VC++6.0编译环境介绍(1) 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? Visual C++可新建的 Projects项目 Visual C++可新建的 File文件 Visual C++的Build设置

https://www.doczj.com/doc/4d15286908.html,pile TEST.cpp选项只编译当前文件而不调用链接器或其它工具。输出窗口将显示编译过程检查出的错误或警告信息,在错误信息处单击鼠标右键,可以得到错误代码的位置 2. Build TEST.exe 选项对最后修改过的源文件进行编译和链接 3. Rebuild All选项该选项允许用户编译所有的源文件,而不管它们何时曾经被修改过 4. Batch Build选项该选项能单步重新建立多个工程文件,并允许用户指定要建立的项目类型.VC提供了两种目标应用程序类型 Win32 Release(发行版)、Win32 Debug(调试版)。 我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll 文件。下面,我们分别讨论这两个步骤的一些细节。 工程配置对话框在这个对话框中,左上方的下拉列表框用于选择一种工程配置,包括有Win32 Debug、Win32 Release和All Configurations(指前两种配置一起),某些选项在不同的工程配置中有不同的缺省值。左边的树形视图给出了当前工程所有的文件及分类情况。如果我们把工程“Schedule”置为高亮显示(正如图9-1那样),对话框的右边就会出现总共十个选项卡,其中列出了与工程有关的各种选项,不少选项卡中有一个Reset按钮,按下它后可以把选项卡内的各项设置恢复到生成工程时的初始值。如果我们在树形视图中选择一个文件类或一个文件,那么对话框右边的选项卡会自动减少到一个或两个,其中列出的都是与选中的文件类或文件有关的选项。 编译参数的设置。主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:

Android测试环境搭建

基本安装 一、Java JDK 1、Java JDK下载: 网页: https://www.doczj.com/doc/4d15286908.html,/javase/downloads/index.jsp 选择 Download JDK 只下载JDK,无需下载jre.(因为按照JDK会自动按照jre) 2、JDK 运行 可以不安装在C盘(系统盘) 安装完成后 3、环境变量 如果只是运行eclipse不需要修改环境变量 如果要用到monkeyrunner需要设置环境变量(改系统环境变量),如下 新建系统环境变量JAVA_HOME ,设置为java安装地址"D:\Program Files\java\jdk1.6.0_33" PATH 增加 ";%JAVA_HOME%\bin" CLASSPATH = ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar",没有CLASSPATH需要新增

4、验证环境变量 java-version 如果装在C盘直接运行java-version 二、Eclipse 进入该网页: https://www.doczj.com/doc/4d15286908.html,/downloads/下载解压缩后放在根目录,不要放在中文文件夹里面三、Android SDK

地址:https://www.doczj.com/doc/4d15286908.html,/sdk/index.html 说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,后一种大概20多M,前一种70多M。 解压android sdk 这个也无需安装,解压后供后面使用 Eclipse配置 一、安装android 开发插件 (1)打开Eclipse, 在菜单栏上选择 E:\eclipse-java-juno-win32-x86_64\eclipse下,可以创建桌面快捷方式help->Install New SoftWare 出现如下界面:

OpenFire环境搭建说明文档

OpenFire环境和 插件开发说明文档 1概述 1.1编写目的 本文档旨在为在Windows系统下快速构建Openfire开发环境和集成插件环境进行相关说明。期望读者为Openfire开发人员和Openfire 服务器测试、维护人员。 1.2术语说明 Openfire服务器:基于XMPP(jabber)协议的开源实时协作(RTC)服务器,采用Java语言开发。可快速构建企业级的高效及时通信服务器。 Openfire插件:Openfire的可扩展应用服务模块,单个插件可通过Openfire的后台管理功能进行管理、发布、升级。 2准备资料 2.1运行环境 1.JDK:jdk 1.5以上,建议采用jdk1.6以上版本。版本基于操作 系统x86/x64确定。目前服务器采用x86 版本jdk1.6.0_01。

2.Mysql:Mysql5.0以上,建议采用mysql5.5以上版本。 2.2资源文件 Openfire源文件:Openfire版本【Openfire3.7.1】 3结构说明 3.1项目结构

服务器部分: a)src/java:Openfire服务器源代码 b)src/plugins:Openfire插件源代码 c)build:build.xml Openfire服务器编译打包脚本 d)documentation:安装开发说明文档和javadoc e)resources:国际化资源文件 f)src:源文件其它资源 g)target:编译后的Openfire服务器 h)work:开发环境Openfire工作目录 自定义部分: a)ant:plugin-utils.xml 自定义帮助类编译打包脚本 b)build:build-utf8.xml utf8格式Openfire服务器编译打包脚本 c)plugin-jar:自定义插件存放目录,从target/openfire/plugins/ 下拷贝,主要为提交到SVN服务器 d)src/plugins/rosterservice/src/java:关系服务插件源文件 e)src/plugins/accountservice/src/java:账号服务插件源文件

005_MyEclipse中编译环境和运行环境不一致的问题

MyEclipse中编译环境和运行环境不一致的问题 2012/9/12 常常我们在开发java程序的时候我们会遇到如下图所示的错误 为什么会出现这样一个问题主要是因为运行环境版本过低或则说是编译环境版本过高的问题,也就是说我们java程序使用高版本的编译器编译的而放到低版本的运行环境中运行,在高版本编译环境中编译的时候会用高版本的java规范来编译、解析java源程序,放到低版本的运行环境中后找不到高版本的里面用到的API,所以会报这样的错误 解决的问题当然是有两个: 1是用较低版本的编译环境来编译源代码,这个时候也就会限制在开发的过程中用到高版本JDK的新特性 2用较高版本的运行环境去运行在较高版本的编译去编译出来的代码 我们可以在建立一个java工程的时候就选择这些项:

上图是我们建立JavaProject的时候出现的界面,我们先看画红线1处,一般我们在MyEclipse中都会用MyEclipse默认自带的运行环境,这里面运行环境是JRE1.5点击画红线2处我们我们可以看到以下界面

我们看划红线的2处有这里是MyEclipse中自带的JRE我们可以点击1处添加一个我们想要的JRE,一般都是我们电脑中安装的JDK中代的JRE

这里我们可以点击划红线处选择我们我的运行环境

我们再找到我们安装JDK的时候会有上面如图的目录结构 划红线1处jdk1.6.0_10这里面是既有开发环境又有运行环境我们可以选它(个人习惯选它) 划红线2处jre6是我们的运行环境我们也可以选它 选择后我们可以点击3处确定然后有如下界面出现:

我们点击OK即可最后回到初始界面我们选择一下便会有

Android配置开发环境

1.下载需要用到的工具: (1)下载JAVA的IDE开发工具– Eclipse 到Eclipse官方网站下载Ecplise For Java EE的最新Windows版本 下载页面地址: https://www.doczj.com/doc/4d15286908.html,/downloads/ 下载Ecplise (2)下载Java开发包— Java SE Development Kit (JDK) JDK 6 到Sun官方网站下载JDK6,选择JDK 6 Update 12 下载页面地址: https://www.doczj.com/doc/4d15286908.html,/javase/downloads/index.jsp (https://www.doczj.com/doc/4d15286908.html,/technetwork/java/javase/downloads/index.html)

下载JDK6 (3)下载Android开发包— Android SDK 到Google的官方网站下载Android的开发包For Windows的 下载地址:https://www.doczj.com/doc/4d15286908.html,/android/android-sdk-windows-1.5_r2.zip 2.下载完需要的工具之后,开始安装 (1)安装Ecplise:下载回来的 Ecplise(eclipse-java-europa-winter-win32.zip)直接解压即可 (2)安装JDK6:运行下载回来的JSK安装包(jdk-6u12-windows-i586-p.exe)一路”下一步”即可(版本可能会有所不同) (3)安装Android开发包(SDK):下载回来的SDK包 (android-sdk-windows-1.5_r2.zip)直接解压即可 3.让Ecplise自动安装Android开发插件(ADT- plugin) (1)启动安装完(解压)后的Ecplise目录下的Ecplise.exe (2)点击菜单”Help”->”Software Updates”,在打开的窗口中切换到选项 页”Availabe Software”

(环境管理)C的运行环境和过程

【目的与要求】 1.了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 【上机内容】 【基础知识】 通过课堂上学习,我们对C语言已有了初步了解,对C语言源程序结构有了总体的认识,那么如何在机器上运行C语言源程序呢?任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种,一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。 C语言是一种编译型的程序设计语言,它采用编译的方式将源程序翻译成目的程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(·C)、编译生成目标文件(·obj)、连接生成可执行文件(·exe)和执行四个步骤。 下面主要介绍Turbo C下运行C语言源程序。 Turbo C是美国Borland公司推出的IBM PC系列机的C语言编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供了集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。 1 Turbo C工作环境介绍 一个C语言程序的实施是从进入Turbo C的集成环境开始的,而进入C语言的环境,一般有两种途径:从DOS环境进入和从Windows环境进入。 (1) 从DOS环境进入: 在DOS命令行上键入: C>CD \TC↙(指定当前目录为TC子目录) C>TC↙(进入Turbo C环境)

Android4.0开发环境搭建

Android开发环境搭建 在网上找各种解决办法,无奈,都是互相转帖,要错大家一起错,而且都是老版本的安装方法,虽然没有太大差别,但小的差异还是搞得人很头痛,因为有时候就是一点不同就要找好长时间解决方法,我现在把我的安装历程发布出来,供大家分享,当然版本再更新的话我也不能保证就完全正确,只能保证现在的版本完全没问题。因为现在的android版本与原来的版本有一定的区别,所以我在2.2的基础上改了一下,现在可以安装到4.0 安装JDK 这个在上一篇中已经介绍过了,注意JDK的版本为1.5或者1.6都可以就行了,推荐使用1.6版本,因为它要比以前快得多。还有JAVA_HOME的设置。用set JAVA_HOME命令检查一下就行了。 SDK 4.0安装 今年Google离开大陆,导致登陆他们的网站会比较麻烦,一般情况下是登陆不上去的,需要翻墙,大家都懂的,我不多说,如果能登上 https://www.doczj.com/doc/4d15286908.html,/sdk/index.html那是最好,如果登不上也没关系,能下的地方好多,上百度上搜有很多,而且下载都很快,我下载的是 android-sdk_r07-windows.zip,一下安装也是以它为例。 下载好后,随便解压到一个地方,目录结构如图所示:

此处SDK Manager.exe和以前版本略有区别,以前是SDK Setup.exe,功能都一样,双击它。(我们下载的也不是完整的SDK,只是一个安装SDK的工具) 双击之后我们会看到如下的界面: 左侧是我们要安装的SDK目录,如果你的网络够快而且空间不是特别少的话,选择Accept All,然后Install,开始漫长的在线安装:

Openfire+Spark+Spark Web安装配置

Openfire+Spark+Spark Web安装配置 一.安装环境 操作系统:Windows XP Prefessional SP2 服务器软件:Openfire 3.4.2 Openfire Enterprise 3.4.2 客户端软件:Spark 2.5.7 Spark Fastpath Webchat 3.4.1 JDK:J2SE 5.0 (1.5.0_03) 二.安装Jabber服务器软件 2.1 软件下载 Jabber官网地址:https://www.doczj.com/doc/4d15286908.html,/ 常用Jabber服务器软件:https://www.doczj.com/doc/4d15286908.html,/software/servers.shtml 本文以Openfire(Wildfire)为服务器,一款基于GPL协议开源软件,支持各种操作系统,软件需要java环境支持,不过软件本身自带了环境包,你可以根据你的需要下载不同的版本。 下载地址:https://www.doczj.com/doc/4d15286908.html,/downloads/index.jsp#openfire Windows无java环境版本地址: https://www.doczj.com/doc/4d15286908.html,/downloadServlet?filename=openfire/openfire_3_4_ 2.zip 最新版本:Openfire 3.4.2 2.2Windows版本安装 将openfire_3_2_2.zip解压缩到D:\。特别要注意,openfire的全路径中不能有中文字符,最好主机名也是标准点的英文名称。直接运行安装文件, D:\Openfire\bin\openfire.exe

相关主题
文本预览
相关文档 最新文档