spark+openfire二次开发

合集下载

二次开发方案范文

二次开发方案范文

二次开发方案范文二次开发是指对已有软件或系统进行二次开发或功能扩展的过程。

在进行二次开发之前,首先需要明确开发的目标和需求,然后选择适合的开发平台和工具,制定详细的开发计划和任务,最后进行开发和测试工作。

下面是一个关于二次开发方案的具体内容,包括目标和需求分析、平台和工具选择、开发计划和任务制定、开发和测试工作。

一、目标和需求分析在进行二次开发之前,需要明确开发的目标和需求,确保开发的方向明确,确保二次开发能够满足用户的需求。

在目标和需求分析阶段,需要与用户进行充分的沟通和交流,以了解他们的需求和期望。

二、平台和工具选择在选择平台和工具时,需要考虑以下几个方面:1. 开发语言:根据项目需求和开发人员的技术背景选择合适的开发语言,常用的开发语言有Java、C#、Python等。

3. 数据库:根据项目需求选择合适的数据库,常用的数据库有MySQL、Oracle等。

4. 开发工具:选择合适的开发工具能够提高开发效率,例如Eclipse、Visual Studio等。

三、开发计划和任务制定在确定了目标和需求以及选择了合适的平台和工具后,需要制定详细的开发计划和任务,包括开发的阶段、时间和人力资源的分配等。

在制定开发计划和任务时,需要充分考虑项目的复杂度和开发人员的技术水平,确保开发进度和质量。

四、开发和测试工作在进行开发和测试工作时,需要按照开发计划和任务进行组织和安排,充分利用已有的资源和工具,以确保开发的进度和质量。

开发过程中需要遵循良好的开发规范和设计原则,编写高质量的代码和文档,进行充分的测试和调试工作,以确保开发的质量和可靠性。

五、验收和部署在开发完成后,需要进行验收和部署工作。

验收工作主要是对开发的软件或系统进行功能和性能测试,以确保满足用户的需求。

部署工作主要是将开发的软件或系统部署到生产环境中,确保能够正常运行和使用。

总结:二次开发是对已有软件或系统进行二次开发或功能扩展的过程,需要明确目标和需求,选择合适的开发平台和工具,制定详细的开发计划和任务,进行开发和测试工作,最后进行验收和部署。

二次开发方案

二次开发方案

二次开发方案引言:随着技术的进步和需求的不断增长,许多企业和组织在使用现有软件或系统时,常常会遇到一些功能不足或无法满足实际需求的情况。

这时,进行二次开发成为了一种常见的解决方案。

本文将探讨二次开发的定义、目的、方法以及实施过程,并提出一套完整的二次开发方案。

一、二次开发的定义二次开发指的是在已有软件或系统的基础上,根据用户的实际需求进行功能扩展、定制开发或性能优化等工作。

通过二次开发,用户可以在不改变现有软件或系统的基本框架和核心功能的前提下,实现更加个性化和高效的使用体验。

二、二次开发的目的二次开发的目的主要包括以下几个方面:1. 实现个性化需求:根据用户的具体需求,通过二次开发来实现一些特定的功能或业务流程,以满足用户个性化的需求。

2. 提升系统性能:通过优化代码结构、算法调优等手段,提高系统的性能和响应速度,确保系统能够高效稳定地运行。

3. 增强系统功能:在现有软件或系统的基础上,增加一些新的功能模块或扩展功能,以丰富系统的功能和可用性。

4. 适应业务发展:随着企业或组织的业务规模的扩大或业务流程的改变,二次开发可以根据业务需求进行系统定制或功能拓展,以适应新的业务发展。

三、二次开发的方法二次开发的方法多种多样,常见的方法有以下几种:1. 插件开发:在现有软件或系统的基础上,通过编写插件或模块,实现一些特定的功能或业务流程。

插件开发可以使系统具有一定的可扩展性,同时也能够保证原有系统的稳定性。

2. 数据库扩展:通过对现有数据库进行扩展或优化,实现更加高效的数据存储和管理,提升系统的运行效率。

3. API集成:利用现有软件或系统提供的API接口,将其他系统或软件与之集成,实现数据交互和功能扩展。

API集成可以使不同系统之间实现数据共享和协同工作,提高工作效率。

4. 定制开发:根据用户的具体需求,从头开始自定义开发一个全新的软件或系统。

定制开发可以满足用户的个性化需求,但同时也需要更多的开发时间和成本投入。

Openfire二次开发问题分析及解决

Openfire二次开发问题分析及解决
示。
3 命名空间需要 自己新建 。 ) 如 Sac erh插件 Sac Pu i.v erh lbnj a文件第 2 8行 a 6 i(a epc. u lN fn sae q as AME P E J B R I_ E C ){ m e ( S AC _AB E _Q S AR H) rpy akt ade erh eu si) e l c e=hn lSac R q etq; P (
< es n vrl > o < ae dt > < n evr es n miSreV ri > o
建立其他的 j a a 文件来辅助其完成相应功 能。 v 在编写该 j a a 文件时需要注意 的几个地方 : v 1 实现 po s ak t 口时 , ) r es ce 接 c P 需要组装 一个 pc e并 通过 cm o akt op— n n aae. n P ce 发送出去 , e t n gre d akt M s 该组装通过 hn l Q e us来完成 , ad lR qe e t 而 hn lQ eus中我们只需完 成对插件 自身命名空 间的编写 , ad lR qe e t 其余 的 X P标准协议 的部分 不需考虑。 MP 2该 i a ) a 文件 如果实现 交互式 的功能 , v 则面 向客户 的显 示界面 由 pu is ml lgn. 中定 义的 ulj x r( p文件 ) s 完成 , 功能 部分 由该 jv 文 件完成 , aa 如果实现 的不是交互式 的功 能 , 可以直接在该 iv aa文件 中完成 , 无需显
) 中 的 N ME P C _ A B R _ E R A S A E J B E jO _ A CH。 S
最 后 ,将 相关 的文件制作 成 O e ie 件需要 的 j 文 件 ,通 过 pnr插 l a r O efe p ni 提供 的插 件上传 到服务器 , r 或者直接拷贝该 i 文件到 O efe a r pni r 安 装 目录 的 pu is 件 夹 下 。 lgn 文 22插件开发实 现 . 这 里以我们 自己开发 的“ 组织机构 管理 ” 插件 为例 , 简要 介绍插件 开 发 的 实 现 。 开 发 环 境 为 O e fe 4 J K1 . p ni 3 r +D . 0 6 +My cis510 下 E l e ..( p 同) 首先 , 。 准备我们需要 的文件 , 经分析 , 我们的插 件要进 行人机交互 , 需要提供 中文 的交互界 面, 并且需要对数据库进行某些修 改或 添加 。 根 据上文对插件开发的分析 , 我们需要提供上文提 到的全部文件 。

神东即时通的研发与应用

神东即时通的研发与应用

神东即时通的研发与应用文章介绍了神东煤炭集团随需而建的即时通信软件已越来越跟不上企业突飞猛进的发展步伐,各即时通信软件独立部署,数据孤立,且不能实现跨单位或部门之间的即时通信功能。

因此开发一个与神东现有信息系统集成的企业即时通信软件是很有必要的,不仅实现对神东组织架构的共享,而且打造了一款适用于神东煤炭集团的企业即时通信软件。

标签:企业即时通信;系统集成;XMPP;自主研发引言IM,Instant Messaging,即时通信软件,就是人们日常使用的QQ、MSN Messenger和Gtalk等等。

当前IM几乎作为每个上网者必然使用的工具,在国外的大型企业中有一些企业级的IM应用。

那么企业都可以利用它来开发适合企业自身工作、提高生产效率的企业即时通信平台。

神东即时通信平台(Shen Dong Instant Messaging)是一款为神东量身定做的企业即时通信平台。

神东公司即时通信的现状:(1)使用的软件种类不同。

目前神东公司内部使用的即时通信软件主要有:腾讯通RTX、恒创企业信使Active Messenger等。

(2)服务器单独部署。

公司各单位的即时通信软件大都以单位的形式进行部署,没有实现跨单位之间的互联互通,不能满足全公司范围内的即时通信需求。

(3)没有实现与神东业务协同平台的集成。

各单位目前所使用的即时通信软件大都是成品软件,软件开发商拥有技术资料,不能与神东自主研发的业务协同平台等系统进行融合,也就难以实现通过与神东现有系统的集成从而提高办公效率的目标。

(4)用户扩展费用昂贵。

目前神东购买的RTX仅能支持1000人的合法用户,只能给公司的少数人(如科级干部)分配账号,难以满足公司全员使用即时通信办公的需求。

若在全公司范围内统一采购成熟的即时通信软件,费用比较昂贵。

1 实现目标神东即时通信平台(Shendong Instant Messaging)是一款为神东煤炭集团量身定做的企业即时通信软件。

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明

项目二次开发源代码及详细说明I. 项目介绍本文档描述了一个二次开发项目的源代码及详细说明。

该项目是基于一个开源的企业资源管理系统进行二次开发,以满足特定客户的需求。

原始系统功能包括客户关系管理、订单管理、库存管理等,但客户需要在原始系统的基础上增加一些新的功能,比如业务报表的定制、权限管理的优化等。

为了满足客户的需求,我们需要对原系统进行二次开发,修改和添加一些功能,以适应客户的特定业务需求。

II. 项目目标1. 通过二次开发,实现客户需求的定制化功能,并满足特定的业务需求。

2. 优化原系统的权限管理模块,增强系统的安全性和稳定性。

3. 重构原系统的报表模块,实现业务报表的定制化功能。

4. 对原系统的库存管理模块进行优化,提高系统的性能和稳定性。

III. 项目源代码及详细说明1. 新增功能模块:客户需要系统新增一个产品价格管理模块,方便他们随时根据市场需求调整产品的价格。

我们在系统中增加了产品价格管理的功能模块,客户可以在这个模块中根据自己的需求,对产品的价格进行调整。

以下是新增功能模块的主要源代码及详细说明:```python# 产品价格管理模块import datetimefrom django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100, verbose_name='产品名称')price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='产品价格') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间')class Meta:verbose_name = '产品'verbose_name_plural = verbose_name# 增加产品价格调整记录模型class PriceAdjustRecord(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='产品')old_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整前价格')new_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='调整后价格')adjust_time = models.DateTimeField(default=datetime.now, verbose_name='调整时间')class Meta:verbose_name = '价格调整记录'verbose_name_plural = verbose_name```上面的代码是在原系统中新增的产品价格管理模块的源代码。

Spark+Openfire二次开发Message类型汇总

Spark+Openfire二次开发Message类型汇总

Spark+Openfire二次开发Message类型汇总在使用Spark+Openfire二次开发的时候,不免要涉及到Message包的处理。

在openfire封装的packet中,对于Message 的类型有如下这么几类:1. Chat2. Error3. GroupChat4. Headline5. Normal这里分别对每一种类型进行深入研究:1. Chat用途:标记发送单人聊天类型的消息。

举例XML:<message from="cds003@lvhb" to="lvhb@lvhb" type="chat"><body>测试消息!</body></message>Spark端显示:2. Error用途:标记错误类型的消息。

举例XML:<message from="我的聊天室@conference.lvhb" to="我的聊天室@conference.lvhb" type="error"><body>测试消息!</body><error code="406" type="modify"><not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></message>说明:此种类型的消息在Spark端没有任何反应。

而且error消息为系统自动发送的,往往是由于错误发送消息,引起系统发送一个error类型的消息来提示spark之前发送的某一个消息是错的。

3. GroupChat用途:标记发送群体聊天类型的消息。

Openfire_spark_安装手册

Openfire_spark_安装手册

Openfire+Spark安装手册王保政QQ:29803446Msn:baozhengw999@关键字:快速开发平台openjweb 增删改查即时通信2009-8-29目录第一章JA VA领域的IM解决方案 (3)第二章安装OPENFIRE3.6.4 (3)2.1配置机器的域名 (3)2.2安装OPENFIRE (3)2.2.1 安装 (3)2.2.2 运行数据库脚本 (4)2.2.3 数据库驱动jar包 (6)2.2.4 openfire初始化配置 (6)2.3设置用户 (12)第三章安装SPARK客户端 (13)第四章配置MSN网关 (15)4.1服务端配置MSN网关 (15)第五章RED5视频配置 (18)5.1部署RED5.WAR (18)5.2 SPARK客户端配置视频插件 (19)第六章使用SMACK开发即时通信功能 (22)第一章Java领域的IM解决方案Java领域的即时通信的解决方案可以考虑openfire+spark+smack。

当然也有其他的选择。

Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用3.6.4版本,这个版本是当前最新的版本,而且网上可以找到下载的源代码。

即时通信客户端可使用spark2.5.8,这个版本是目前最新的release版本,经过测试发现上一版本在视频支持,msn网关支持上可能有问题,所以选择openfire3.6.4+spark2.5.8是最合适的选择。

Smack是即时通信客户端编程库,目前我已测通通过jsp使用smack的API向openfire 注册用户发送消息,并且可以通过监听器获得此用户的应答消息。

通过smack向msn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向gtalk 用户发送消息的例子较多。

这个留待以后研究。

至少目前可以通过程序向spark发消息了。

对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。

openfirespark二次开发服务插件

openfirespark二次开发服务插件

openfirespark二次开发服务插件==================== 废话begin============================最近老大让我为研发平台增加即时通讯功能。

告诉我用comet 在web端实现即时通讯。

最初狂搜集资料。

不能让自己方向错了。

这是很重要的。

不过还是难免的周折了一番。

测试了一个comet4j的聊天小例子。

用它前后端开发成本太大、对服务器也太大压力放弃了。

最终决定使用openfire +jsjac.js + JabberHTTPBind 然后实现老大要求的web 及时通讯功能。

很庆幸找到了hoojo大哥的demo 很不幸,他为了让大家复制代码,自己练习。

不提供jar包js下载。

(虽然好心但是足足浪费了我两天时间)一个jsjac.js库版本有问题。

很费劲的看源码。

哎。

然后、拿这个小demo 先交差。

顺便展示了spark 和web 聊天窗口,交互即时聊天。

顺便构想了一下,修改openfire用户表。

让用户来自系统。

组织则用自带的。

(当然这是预想。

其实openfire已经帮我们想过了。

)接着、全局搜索了openfire源码中包含ofuser表sql的类。

只有两个类。

很庆幸。

改了之后,改造用户密码加密认证方式。

当然这样做是错误的。

直到我发现类名字似乎有些不对的时候。

DefaultUserProvider 哈哈、嘲讽啊。

不出所料有一个实现类JDBCUuserProvider 。

直接配置就可以搞定、但是加密sha256加密过程和我平台不一样。

改造后就顺利搞定。

接着、到了插件开发过程。

这个过程很烦人。

网上很多帖子很多人去讲这个开发过程。

或许是两三年前的贴了。

很多过时了。

只能有一点帮助。

更多的是走向了错误的道路。

磕磕碰碰。

最终还是只能从源码中寻求出路。

这个过程整整浪费了我两星期时间。

很痛苦。

所以。

我会针对最新代码聊聊,spark 开发一个组织架构树插件。

展示出用户。

并可以与之聊天。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

spark+openfire二次开发(一)
文章分类:Java编程
1.准备工作:
到官网上下载Openfire 3.6.4,并通过svn下载openfire、Spark和SparkWeb 的源代码
官网地址如下:
/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.
点击Main class::Search按钮,选择main所在的类
uncher.Startup再点击OK
建议勾选Stop in main.
点击Classpath标签页,选择User Entries ,使得Advanced..按钮变的可用.点击Advanced按钮.在弹出来的Advanced Options窗口,选择Add Folders,再点OK,在Folder Selection窗口选择spark::src::resources 文件夹,点击OK
选择Common标签页,勾选Debug,Run前面的框
点击Apply,再点击Close
4)在run下选择spark,运行成功!
spark+openfire二次开发(二)
1.openfire源码部署
将下来的openfire_src_3_6_4.tar.gz解压后得到openfire_src文件夹,重命名为openfire。

其源码部署方式请参照spark+openfire二次开发(一)中spark源码的部署方式。

2.openfire运行配置
1)点击Run::Open Debug Dialog...,出现"Run"窗口
2)选择"Java Application",右键点击"New"按钮.
3)在"Main"标签页,将New_configuration换成openfire.
4)点击Project::Browse按钮,选择openfire,再点OK.
5)点击Main class::Search按钮,选择main所在的类ServerStarter
再点击OK,建议勾选Stop in main.
6)Arguments页面。

在VM arguments中加下内容
-DopenfireHome="${workspace_loc:Openfire}/target/openfire"。

7)点击Classpath标签页,选择User Entries ,使得Advanced..按钮变的可用.点击Advanced按钮.在弹出来的Advanced Options窗口,选择Add Folders,再点OK,在Folder Selection窗口选择Openfire/src/i18n文件夹,同样的方式选择Openfire/src/resources/jar文件夹,点击OK。

8)选择Common标签页,勾选Debug,Run前面的框
9)点击Apply,再点击Close
3.编译
1)将Openfire/src/i18n文件夹下的openfire_i18n_en.properties文件及Openfire/src/resources/jar文件夹下的admin-sidebar.xml文件拷贝到src\bin目录下,打开ANT面板,选择openfire【default】任务执行。

4.运行
运行openfire,控制台界面出现如下信息:
Openfire 3.6.4 [Mar 15, 2010 8:49:33 AM]
Admin console listening at http://127.0.0.1:9090
在浏览器中打开上面显示的地址,可进行openfire的管理配置。

spark+openfire二次开发(三)
文章分类:Java编程
spark的插件主要用来增强客户端的功能,下文主要介绍一下spark插件的开发过程。

1.最终完成效果如下:
增加一个My Plugin菜单,点击后显示hello面板。

2.开发流程
1)插件结构
插件的jar包结构如下示:
Java代码
1.example.jar
2. |- plugin.xml 插件定义文件
3. |- libs/ 包含所有运行此插件所需的classes文件
定义你的plugin.xml文件。

spark会自动读取插件jar中的plugin.xml文件,进行插件加载工作。

示例文件如下:
Java代码
1.<!-- Define your plugins -->
2.<plugin>
3. <name>Examples Plugin</name>
4. <version>1.0</version>
5. <author>Derek DeMoro</author>
6. <homePage></homePage>
7. <email>derek@</email>
8. <description>Shows some simple ways to create plugins.</des
cription>
9. <!--插件的接口实现类-->
10. <class>com.jivesoftware.spark.examples.ExamplePlugin</class
>
11. <minSparkVersion>2.5.0</minSparkVersion>
12.</plugin>
2)开发你的插件
插件源码目录结构
Java代码
1.example
2. |- src 源代码
3. |- lib 支持此插件的额外jar文件
4. |- resources 图片等资源文件
5. |- build 编译文件
6. |-build.xml ant打包插件的配置文件
插件的实现类,你的类首先要实现Spark 提供的Plugin 接口,然后实现它的一些方法。

Java代码
1.package org.jivesoftware.spark.examples;
2.
3.import org.jivesoftware.spark.plugin.Plugin;
4.
5./**
6. * 通过实现方法的不同,来显示不同的插件功能
7. */
8.public class ExamplePlugin implements Plugin {
9.
10. /**
11. * 插件安装后,初始化插件
12. */
13. public void initialize() {
14. System.out.println("Welcome To Spark");
15.
16. }
17.
18. /**
19. *spark关闭的时候调用,来实现信息持久化或释放资源
20. */
21. public void shutdown() {
22.
23. }
24.
25. /**
26. * 当用户请求关闭spark时,如果可以关闭返回真
27. */
28. public boolean canShutDown() {
29. return true;
30. }
31.
32. /**
33. * 插件卸载的时候调用,清除磁盘上的资源,如文件,图像等以及插
件安装时留下的所有组件
34. */
35. public void uninstall(){
36. // Remove all resources belonging to this plugin.
37. }
38.}
开发流程待续,例子先放上。

相关文档
最新文档