本文绝大部分内容均参照Openfire官方文档:Custom Database Integration Guide,地址如下:
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html
Openfire使用外部数据库只需要在openfire/src/con/openfire.xml配置文件中进行相应的配置,不需要手动编码。配置分为两个阶段:1、进行openfire.xml的配置;2、登录到web管理后台进行手动配置;
阶段一:进行Openfire.xml的配置
1、外部数据库集成配置
配置驱动和连接字符串:
<jive> ... <jdbcProvider> <driver>com.mysql.jdbc.Driver</driver> <connectionString>jdbc:mysql://localhost/dbname?user=username&password=secret</connectionString> </jdbcProvider> ... </jive>
<jive> ... <jdbcProvider> <driver>com.mysql.jdbc.Driver</driver> <connectionString>jdbc:mysql://localhost/openfirev1?username=root</connectionString> </jdbcProvider> ... </jive>
我的数据库名叫openfirev1,mysql的用户名是root,没有设密码所以密码不用写。
2、认证集成配置
认证配置需要配置以下标签:
- provider.auth.className--设置为org.jivesoftware.openfire.auth.JDBCAuthProvider
- jdbcAuthProvider.passwordSQL--该SQL语句用于查询一个用户密码。SQL语句必须包含一个‘?’,它在执行时将被动态地替换
- jdbcAuthProvider.passwordType--密码的类型。可用的有:plain(不加密)、md5、sha1、sha256、sh512
<jive> ... <provider> <auth> <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className> </auth> </provider> <jdbcAuthProvider> <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL> <passwordType>plain</passwordType> </jdbcAuthProvider> ... </jive>
<jive> ... <provider> <auth> <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className> </auth> </provider> <jdbAuthProvider> <passwordSQL>SELECT password FROM ofuser WHERE username=?</passwordSQL> <passwordType>plain</passwordType> ... </jive>
3、用户集成配置
用户集成是可选的,Openfire可用从外部数据库载入用户。如果你想使用用户集成,则必须先进行认证集成配置(如配置2)。用户集成配置需配置已下标签:
- provider.user.className--设为org.jivesoftware.openfire.user.JDBCUserProvider
- jdbcUserProvider.loadUserSQL--该SQL语句用于载入给定用户名的姓名和邮件地址信息。该SQL语句应该包括一个‘?’,它在执行时将被动态地替换
- jdbcUserProvider.userCountSQL--用于计算用户数
- jdbcUserProvider.allUsersSQL--用于载入数据库中的所有用户
- jdbcUserProvider.searchSQL--用于在数据库中搜索符合条件的用户,是不完整的SQL语句,缺少where后面的内容,它在执行时将被动态地补全,如果不填则不能进行搜索
- usernameField--用户名字段,用于搜索
- nameField--昵称字段,用于搜索
- emailField--邮箱字段,用于搜索
<jive> ... <provider> <user> <className>org.jivesoftware.openfire.user.JDBCUserProvider</className> </user> </provider> <jdbcAuthProvider> <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL> <passwordType>plain</passwordType> </jdbcAuthProvider> <jdbcUserProvider> <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL> <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL> <allUsersSQL>SELECT username FROM myUser</allUsersSQL> <searchSQL>SELECT username FROM myUser WHERE</searchSQL> <usernameField>username</usernameField> <nameField>name</nameField> <emailField>email</emailField> </jdbcUserProvider> ... </jive>
<jive> ... <provider> <user> <className>org.jivesoftware.openfire.user.JDBCUserProvider</className> </user> </provider> <jdbcUserProvoder> <loadUserSQL>SELECT name,email FROM ofuser WHERE username=?</loadUserSQL> <userCountSQL>SELECT COUNT(*) FROM ofuser</userCountSQL> <allUserSQL>SELECT username FROM ofuser</allUserSQL> <searchSQL>SELECT username FROM ofuser WHERE</searchSQL> <usernameField>username</usernameField> <nameField>name</nameField> <emailField>email</emailField> </jdbcUserProvoder> ... </jive>
4/openfire.xml文件配置完成!所有代码整合:
<jive> <adminConsole> <!-- Disable either port by setting the value to -1 --> <port>9090</port> <securePort>9091</securePort> </adminConsole> <locale>en</locale> <!-- Network settings. By default, Openfire will bind to all network interfaces. Alternatively, you can specify a specific network interfaces that the server will listen on. For example, 127.0.0.1. This setting is generally only useful on multi-homed servers. --> <jdbcProvider> <driver>com.mysql.jdbc.Driver</driver> <connectionString>jdbc:mysql://localhost/openfirev1?username=root</connectionString> </jdbcProvider> <provider> <auth> <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className> </auth> <user> <className>org.jivesoftware.openfire.user.JDBCUserProvider</className> </user> </provider> <jdbAuthProvider> <passwordSQL>SELECT password FROM ofuser WHERE username=?</passwordSQL> <passwordType>plain</passwordType> </jdbAuthProvider> <jdbcUserProvider> <loadUserSQL>SELECT name,email FROM ofuser WHERE username=?</loadUserSQL> <userCountSQL>SELECT COUNT(*) FROM ofuser</userCountSQL> <allUserSQL>SELECT username FROM ofuser</allUserSQL> <searchSQL>SELECT username FROM ofuser WHERE</searchSQL> <usernameField>username</usernameField> <nameField>name</nameField> <emailField>email</emailField> </jdbcUserProvoder> </jive>
阶段二:登录http:127.0.0.1:9090进行后台管理的初始化设置。
首先在MySQL中建立数据库openfirev1。
此时,数据库中已经生成了所有表!
目前为止已经可以使用数据库中的用户了。现在我们测试一下~往数据库中的ofuser表中添加一条记录:用户名:tt,密码:tt,直接从数据库中添加和从控制台添加都可以。如下图就是从控制台添加:
然后从客户端spark登录:
登录成功!
相关推荐
总的来说,Openfire是一个强大且灵活的即时通讯解决方案,其详细的安装教程使得即使对技术不太熟悉的用户也能轻松上手。只需按照步骤进行,你就可以拥有一个属于自己的即时通讯服务器了。在实际使用过程中,如果遇到...
在Openfire中,Coherence可能被用来作为会话数据的高速缓存,或者用于优化数据库交互,提升服务响应速度。 接下来,coherence.jar是Coherence框架的主要实现包,包含了Coherence运行时的所有核心组件和服务。这个...
在Web管理界面中,进入“系统设置”>“存储”部分,选择“使用外部数据库”,然后填写数据库连接信息。 2. 安全配置:确保开启SSL/TLS加密,以保护通信安全。在“服务器设置”中,配置SSL端口和证书。如果需要,还...
8. **优化与扩展**:你可以根据需求对Openfire进行定制,比如使用外部数据库(MySQL、PostgreSQL等)来存储用户数据,增加插件来实现更多功能,如文件传输、语音/视频通话等。 9. **安全性考虑**:为了保障用户隐私...
在Openfire中,数据存储是通过数据库实现的,而本文将深入解析Openfire数据库中的关键数据结构,以便理解其工作原理和管理方式。 1. **ofGroup**:这是用户组的数据表,用于存储用户组的信息。主键是`groupName`,...
如果使用外部数据库,还需要备份数据库。在需要时,可以使用Openfire提供的工具进行恢复。 11. **性能优化**:根据服务器硬件资源和用户负载,可能需要调整Openfire的配置以优化性能,例如调整内存分配、并发连接数...
首先,我们来看"openfire_3_10_2所有缺少的jar包"这个压缩文件,它包含了Openfire项目在Eclipse中运行所必需的外部依赖。这些JAR包通常包括了Openfire核心功能所需的第三方库,例如数据库连接、XML处理、网络通信等...
- 设计数据存储方案,可以选择直接存储在Openfire内置的数据库(如HSQLDB或MySQL),或者使用外部存储如MongoDB或Elasticsearch。 - 实现插件逻辑,包括消息的抓取、解析、存储以及提供查询接口。 - 在Openfire...
为了使Openfire在系统启动时自动运行,你可以将其设置为系统服务,比如使用`systemd`,创建一个名为`openfire.service`的配置文件,并使用`systemctl enable openfire`使其开机启动。 7. **安全设置**:确保你已经...
- 安装过程中,按照提示配置数据库连接(可以选择内置的HSQLDB或连接到外部MySQL、PostgreSQL等)。 - 配置服务器端口,确保没有与其他服务冲突。 - 启动Openfire服务器,并通过Web管理界面进行基本设置,如管理...
9. **故障恢复和备份**:Openfire支持数据库备份和恢复,有助于在系统出现故障时快速恢复服务。 10. **日志记录**:提供详细的日志记录功能,帮助管理员排查和解决系统问题。 11. **兼容性**:Openfire兼容多种...
首先,文档详细说明了进行Openfire开发所需的初始准备工作,包括安装Java开发工具包(JDK)、集成开发环境(Eclipse/MyEclipse)、数据库(Oracle 10gXE)以及Openfire服务器软件。在安装JDK时,文档提供了两种方法...
- **脚本执行**:根据实际需求选择相应的数据库类型(如SQL Server 2005),并使用相应的数据库管理工具(如Management Studio)执行脚本。 ##### 2.2.3 数据库驱动jar包 - **放置位置**:将数据库驱动jar包(如...
- 安装过程中,可以选择创建数据库(默认为HSQLDB)或连接已有的数据库(如MySQL、PostgreSQL)。 - 完成安装后,通过浏览器访问`http://localhost:9090/`,输入默认的管理员账号(admin/admin),登录Openfire...
本教程将详细介绍如何在你的系统上安装和配置Openfire服务器。 **一、Openfire概述** Openfire以其易用性、可扩展性和稳定性而受到广泛欢迎。它支持多种操作系统,包括Windows、Linux和macOS。通过Openfire,你可以...
《Openfire 4.5.0源码解析:探索即时通讯框架的秘密》 Openfire,一个基于XMPP(Extensible Messaging and Presence Protocol)协议的开源即时通讯框架,因其高效、可扩展性和安全性,在IT领域备受青睐。4.5.0版本...
1. **理解Openfire的用户管理机制**:Openfire自身有一个内置的用户存储库,但为了与外部系统兼容,它也支持多种外部认证服务,如JDBC(数据库)、LDAP(轻量级目录访问协议)和Active Directory(AD)等。...
默认情况下,Openfire使用HSQLDB作为内置数据库。如果需要使用MySQL,需要修改Openfire的数据库连接配置。这涉及更改`conf/database.properties`文件中的连接参数,如URL、用户名、密码和驱动类名。同时,还需要在...
Openfire采用插件式设计,允许开发者根据需求扩展其功能,例如会议、聊天记录、外部认证等。它的核心功能包括用户管理、群组管理、安全策略和性能优化。 1. **连接Openfire服务器**:在Java中,我们通常使用Smack库...