java即时通信解决方案openfire+spark完整安装指南

本 文介绍基于java的即时通信解决方案openfire3.6.4+spark2.5.8的完整的安装说明,并介绍了使用smack的java类库如何与 im用户交互的例子,这样使得业务系统的消息可以通过smack编程将消息发送给spark客户端。spark2.5.8除了聊天之外还支持多人视频,语 音,文件传输,截图,观看远程桌面,msn互联互通等功能。因

本文图片太多,需要看图片的请下载资源或者访问http://code.google.com/p/openjweb/downloads/list ,找到java_im开头的文件下载。  

 

 

 

 

 

 

Openfire+Spark 安装手册

 

 

 

 

 

 

 

王保政

QQ:29803446

Msn:[email protected]

 

关键字 : 快速开发平台 openjweb 增删改查 即时通信

 

2009-8-29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第一章        Java 领域的 IM 解决方案 .... 2

第二章 安装 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 发消息了。对于局域网内部应用足以解决系统与用户交互的问题,甚至可以做自动应答机器人。

Spark 支持聊天,语音,视频,会议,文件收发,截屏,连接 msn 等功能。

 

第二章 安装 openfire3.6.4

2.1 配置机器的域名

使用 openfire 需要配置机器的域名。如果局域网内没有安装域服务器,则需要手工为机器配置域名,打开 C:/WINDOWS/system32/drivers/etc/hosts 文件,增加一新行:

127.0.0.1                          bzwang.tzsoft.com  (用户根据自己的需要可配置称别的名字,但最好符合带 . 的域名格式)

其他机器使用域名访问 openfire, 也需要在 C:/WINDOWS/system32/drivers/etc/hosts 中指定 bzwang.tzsoft.com 对应的 ip 地址,假设安装 openfire 的主机 IP 192.168.1.10, hosts 文件中应增加一新行 :

192.168.1.10 bzwang.tzsoft.com

通过这种方式指定主机域名,建议安装 openfire 的机器配置静态 ip 地址以免 ip 发生改变。

 

2.2 安装 openfire

2.2.1 安装

安装程序为 openfire_3_6_4.exe, 运行后,语言选择简体中文,见下图:

 

 

后续按照提示安装,最后出现下面的界面:

 

 

 

这时先不要运行 openfire, 所以不要勾选上面页面的复选框,然后点完成,如果勾选的话,在新出现的窗口中点“ stop ”停止 openfire 后续的运行,然会点 ”quit” 退出,因为下面要配置 openfire 使用的数据库,需要手工将数据库驱动放到 openfire 的某个目录下,否则 openfire 不识别数据库驱动的包名。

2.2.2 运行数据库脚本

 

数据库运行脚本在 C:/Program Files/Openfire/resources/database 目录下,如果用户安装选择的不是 C:/Program Files 目录,可以到安装 openfire 目录下找到 database 目录,打开此目录后可看到有多种版本的数据库脚本,假定我们现在要把 openfire 的数据库安装在 sqlserver2005 中,则使用 openfire_sqlserver.sql 脚本,假如已经装好了 2005 数据库,可在 Management Studio 中执行数据库脚本,见下图:

 

 

 

执行后,打开数据库,可看到下面创建的数据库表:

 

 

2.2.3 数据库驱动 jar

如果使用 sqlserver2005, 则将 sqlserver2005 驱动 jar sqljdbc.jar 复制到 C:/Program Files/Openfire/lib 下,使用 openjweb 快速开发平台的用户可直接从 D:/project/apache-tomcat-5.5.27/common/lib 找到此 jar 包复制过去,另外此目录还有 mysql mysql-connector-java-3.1.12-bin.jar oracle ojdbc14.jar ,如果用户不选择 sqlserver 则复制对应数据库的驱动 jar 包。

2.2.4 openfire 初始化配置

从开始菜单中找到 openfire 并运行,下面是运行界面:

 

 

 

”Launch Admin”, 出现下面的页面,页面连接为 http://127.0.0.1:9090/setup/index.jsp

 

 

 

语种选择中文(简体),点 ”Continue”: (下面的页面如果出现英文,请刷新一下页面或者重新点 Launch Admin

 

这个页面的 Domain 默认为机器名,请改为一开始设置的域名,例如 bzwang.tzsoft.com, 就是将图中的 Domain 中的文字换成 bzwang.tzsoft.com 后,点 Continue( 继续 ):

 

 

这个页面中第一个选项,即标准数据库连接,不要选择嵌入的数据库 (Embedded Database, 嵌入的数据库是 hsqldb 数据库,生产环境不要选择此选项 ), 然后点 继续 ”:

 

 

这个页面是配置是否使用 LDAP, 我们现在不配置 LDAP, 所以选择 Default 默认即可,点继续 :

 

 

上图是 sqlserver2005 的配置, jdbc 驱动类为 : com.microsoft.sqlserver.jdbc.SQLServerDriver

数据库 URL 为:

jdbc:sqlserver://192.168.1.222:2324;DatabaseName=dms

数据库名和用户名及口令请根据实际环境配置。

 

配置完成后,点 继续 ”:

如果点继续出现错误提示页面,请检查

(1)        数据库表是否按前面的步骤已在数据库中创建

(2)        是否已将对应的数据库 jar 保复制到 openfire lib 目录

(3)        检查数据库连接参数,端口,数据库名等属性,可使用 dos 命令行检查数据库端口是否有效,例如 telnet 192.168.1.222 2324

下面是配置 LDAP 的页面,选择 初始设置 ”( 默认选项 ) 即可。

 

 

点“继续”:

下面是配置超级管理员的页面:

 

 

 

输入一个邮箱和口令,例如 123456

 

设置好后点“继续”:

 

 

 

这个时候不要点“登录到管理控制台” , 登录肯定失败,需要切换到这个页面:

 

 

”stop” ,然后点“ start , 等重启动成功后点 ”Launch Admin”, 进入登录页面:

 

 

 

使用 admin 用户名和设置的口令 123456 登录,下面是登录成功的页面,恭喜! sqlserver2005 上安装 openfire 成功!

 

 

我们打开 ofUser 数据库表可以看到 admin 用户信息: ( 下面的口令不是用 md5 加密的 )

 

 

2.3 设置用户

 

在登录成功页面点“用户 / 组”标签维护用户信息,可在这里增加新的用户,也可以建组,下面是新建的几个组:

 

 

 

下面新建几个测试用户,分别是 abao/abao,zhangyu/zhangyu,suqi/suqi,liu/liu

 

 

说明:当安装了 spark 客户端后,用户可直接在客户端注册帐号。

 

第三章    安装 spark 客户端

 

安装程序为 spark_2_5_8.exe ,安装过程全部默认即可。

下面是登录界面:

 

 

登录时可使用 openfire 中创建的帐号,也可以点 (A) 帐户自己注册新的帐号,服务器需设置为 openfire 的域名地址即上面安装的 bzwang.tzsoft.com, 下面是登录成功界面:

 

 

 

关于 spark 客户端的具体功能就不介绍了,下面介绍 openfire 配置 msn 网关及 spark 如何连接 msn ,以及 red5 视频的配置方式。

第四章    配置 msn 网关

4.1 服务端配置 msn 网关

 

gateway.jar 插件包 ( 可网上下载 ) 复制到 openfire plugin 目录下,如 :

C:/Program Files/Openfire/plugins ,如果 openfire 安装到别的目录请找到对应的目录,把 gateway.jar 复制过去。停止 openfire, 重新启动并登录后,见下面的页面,多出了一个 gateways 的标签页:

 

 

Gateways, 找到 MSN Messagers, 勾选,然后点“选项”,见下图:

 

 

以上默认的配置不用修改,点“测试”,显示:

 

 

点“测试连接”,显示测试成功。(右侧将显示绿色背景的文字提示测试成功)

 

4.2 spark 客户端设置 msn 帐号:

 

启动 spark, 登录后 ,spark 窗口的右上多出一个灰色的蝴蝶,见下图:

 

 

点这个蝴蝶,然后选择“输入登入资讯”,显示下面的窗口:

 

 

在这里输入 msn 的用户和口令,然后保存,稍后片刻, spark 将从 msn 上获取用户列表,最后显示下面的 msn 好友列表:

 

 

 

这时可以选择一个在线用户聊天了, spark 还支持文件传输,截屏,语音,视频等。

 

第五章    Red5 视频配置

5.1 部署 red5.war

red5.war 复制到 C:/Program Files/Openfire/plugins ,如果 openfire 是在运行状态,一会会在这个目录下自动部署 red5.war( 在此目录下自动生成 red5 目录 ) 。安装成功后, openfire 的管理页面会多出一个 red5 标签,见下图:

 

 

服务端不需要做任何改动。

5.2 spark 客户端配置视频插件

上一步骤部署了 red5 后,需要停止 openfire 并重新启动,启动完成后,访问 http://bzwang.tzsoft.com:7070/red5 ,显示一个 red5 html 首页,下拉到页面最下面,找到 spark plugin, ”here”, 见下图:

 

 

 

here 会下载 red5-plugin.jar, 直接保存在 C:/Program Files/Spark/plugins 目录下,重新启动 spark

spark 中右键点一个人,会出现几个菜单:

 

 

 

其中 View Destop Screen Publish Desktop Screen 是相关联的 , 见下图:

 

 

 

如果 A 用户用 Publish Desktop Screen 发布了自己的桌面, B 用户选择 A 用户,右键选择上一个图中的 View Desktop Screen, B 用户可看到 A 用户的计算机桌面。在 http://bzwang.tzsoft.com:7070/red5 页面上有一个功能和这个类似,见下图:

 

 

 

To publish 是发布自己的桌面, To Viewer 是别人观看自己发布的桌面,多人发布是什么效果没有具体测试。可以自己发布然后观看自己的桌面(效果有点像两个镜子对照,会出现层层窗口嵌套的现象),下面是自己发布自己的桌面并观看自己的桌面的效果:

 

 

 

当选择一个人,右键选择 Add/Remove Video Roster 后,可进行 视频聊天,可以加多个人进行视频,每选择一个热人,然后点 Add/Remove Video Roster ,就可以将这个人加入到视频中或者从视频中移除,下面是视频页面(我没装摄像头),可以看出一个页面中可以显示多人视频,如果其他人也装了 spark, 估计也能看到多人视频的效果 ( 猜测,没有测试 ) ,见下图:

 

 

 

第六章    使用 smack 开发即时通信功能

 

可以使用 smack 开源产品开发与即时通信用户交互的功能,这样我们可以使用系统来模拟一个 openfire 的用户来向其他用户发送消息,因而可以使应用系统产生的业务消息实时传递给即时通信用户,例如系统向某用户发送“有新的请假单需要您审批”,如果用户开启了 spark 客户端,则 spark 客户端会实时接收此消息。

Smack 可从网上下载,目前最新版本为 smack_3_1_0.zip ,将此文件里四个 smack 开头的 jar 包放到自己的 WEB 应用的 WEB-INF/lib 目录,使用下面的 jsp 文件进行测试 :

下面是测试向 spark 用户 suqi 发送消息的页面代码:

 

<%@ page contentType="text/html;charset=UTF-8"%>

 

<%@ page import="org.jivesoftware.smack.*"%>

<%@ page import="org.jivesoftware.smack.packet.*"%>

 

<%

 

   // 以下可以通过程序向 spark 帐号发信息,但没有测通想 msn 帐号发信息

   XMPPConnection connection = new XMPPConnection("bzwang.tzsoft.com"); //openfire 服务器的主机域名

   // ConnectionConfiguration connectionConfig = new ConnectionConfiguration( "messenger.hotmail.com",1863,"messenger.hotmail.com");

   //  XMPPConnection connection = new XMPPConnection(connectionConfig);

   connection.connect();// 先连接服务器

   try

   {

       connection.login("abao", "abao");// 使用 openfire 的注册用户登录 openfire 服务器

       System.out.println(" 登录成功 !");

       //createChat 的第一个参数一定要带域名 ([email protected]) ,否则会话失败

       Chat chat = connection.getChatManager().createChat("[email protected]", new MessageListener()

       //Chat chat = connection.getChatManager().createChat("baozhengw9999%[email protected]", new MessageListener()

       {

           public void processMessage(Chat chat, Message message)

          {

              // 如果不用 connection.disconnect() 断开连接,这里可以监听回复信息

              System.out.println("Received message: " + message.getBody());

           }

        }

       );

      

       System.out.println(" 发送消息 ....");

      

       chat.sendMessage(" 请问你收到我的消息了吗 ?");//

       /* Message message = new Message("baozhengw9999%[email protected]");

          message.setBody(" 你好!我是个聊天机器人! ");

          connection.sendPacket(message);

        */

        System.out.println(" 发送完毕 ...");

       connection.disconnect();

       } catch (Exception ex) {

           System.out.println("login error");

       }

 

%>

 

 

发送成功后,如果suqi 用户打开了spark,spark 会闪烁提示有新消息,打开spark, 聊天窗口显示系统用abao 用户发送的消息,见下图:

 

 

 

这样实现了业务系统和即时通信的无缝整合,以后应该还可以实现通过smack 编程使内网的openfire 注册用户向自己的msn 好友或QQ 好友发送消息以及接收消息。

你可能感兴趣的:(java,数据库,测试,服务器,smack,sqlserver)