目标: 搭建一个小型的即时通讯系统。

服务器端: Openfire

Android客户端:Smack

开发环境:Windows10、JDK、Android SDK

IDE: Android Studio

数据库: MySQL(Windows下推荐使用wnmp)

开始!

 

一、 服务器端

 

1.  直接从openfire的github仓库下载release版本:https://github.com/igniterealtime/Openfire/releases/download/v4.3.2/openfire_4_3_2.zip

版本是最新的4.3.2(2019/05/22)

 

2. 配置java环境(后面要开发android,这个应该都有了)

 

3. 安装数据库,并准备一个空的数据库。

 

4. 解压openfire到一个目录。

 

5. 打开命令行,进入openfire/bin目录,执行:

openfire.bat

6. 这时会弹出一个java的命令行界面,显示如下:

 

8.  打开浏览器,访问:http://localhost:9090

 

选择简体中文,点击continue。

 

9.  填写域和Host地址,这里因为是本地搭建,写任意的就行比如:test.com

 

10. 接着选择“标准数据库连接”

11. 配置数据库,填写数据库的地址、名称和用户名密码

 

11.1 注意,这时如果使用默认的编码设置,可能会收到这样一条错误:

11.2 提示我们看error.log,打开openfire/logs/error.log文件,我们发现了这个报错:

这个是时区设置问题,解决办法:在设置数据库连接地址的地方加上时区和编码格式的设置:

useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

就行了。

但是

在设置完这个结果后,如果重启openfire,可能会遇到这种错误:

java.sql.SQLException: 
ConnectionManager.getConnection() failed to obtain a connection after 11 retries. 
The exception from the last attempt is as follows:
java.sql.SQLNonTransientConnectionException: 
Cannot load connection class because of underlying exception:
com.mysql.cj.exceptions.WrongArgumentException: 
Malformed database URL, failed to parse the connection string near
';useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC'.

打开openfire生成的目录里的openfire配置文件:

E:\server\openfire1\Openfire\distribution\target\distribution-base\conf\openfire.xml

找到这行:

<serverURL>jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;serverTimezone=UTC</serverURL>  

会发现里面的“&”符合被转义成了“&amp;amp;”但是每个转义都多了一个“amp;”,改成这个“&amp;”就行了。

 

12. 接着选择默认设置

13. 设置管理员密码

14. 完成设置。

 

15. 登录页面,openfire启动成功。

 

下一篇文章开始开发Android客户端程序。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐