`
chungang
  • 浏览: 32825 次
社区版块
存档分类
最新评论

openfire集成现有数据库,以及在源码中的实现

阅读更多
一、集成数据库的设置
    在使用openfire的过程中,如果需要用到已有的数据库里面的用户来登录的时候,需要再openfire自己的数据库中ofProperty表里面新增、以及修改一些字段,修改之后如下所示:

admin.authorizedJIDs   1048622@192.168.1.1
jdbcAuthProvider.passwordSQL select password from user where uid=?
jdbcAuthProvider.passwordType md5
jdbcProvider.connectionString  jdbc:mysql://192.168.1.2:3306/app?user=work&password=w2q5l0u1
jdbcProvider.driver com.mysql.jdbc.Driver
jdbcUserProvider.allUsersSQL select uid from user
jdbcUserProvider.emailField email
jdbcUserProvider.loadUserSQL select name,email from user where uid=?
jdbcUserProvider.nameField name
jdbcUserProvider.userCountSQL select count(*) from user
jdbcUserProvider.usernameField name
passwordKey EXOrfCVaNU9sq9X
provider.admin.className org.jivesoftware.openfire.admin.DefaultAdminProvider
provider.auth.className org.jivesoftware.openfire.auth.JDBCAuthProvider
provider.group.className org.jivesoftware.openfire.group.DefaultGroupProvider
provider.lockout.className org.jivesoftware.openfire.lockout.DefaultLockOutProvider
provider.securityAudit.className org.jivesoftware.openfire.security.DefaultSecurityAuditProvider
provider.user.className org.jivesoftware.openfire.user.JDBCUserProvider
provider.vcard.className org.jivesoftware.openfire.vcard.DefaultVCardProvider
register.inband true
register.password true
update.lastCheck 1344306789871
xmpp.auth.anonymous true
xmpp.domain 192.168.1.1
xmpp.session.conflict-limit 0
xmpp.socket.ssl.active true
需要说明的是xmpp.domain 字段可以填写openfire所在服务器的域名或者IP, connectionString是需要集成的数据库地址,loadUserSQL里面的uid是你需要通过它来登录的,还有,这些Sql里面的字段一定要保证需要集成的数据库里面是存在的。

二、上面的设置如何在程序中起作用

程序里有AuthFactory和UserManger分别用来处理provider.auth.className和provider.user.className。

AuthFactory类里有一个私有属性
private static AuthProvider authProvider = null;

JDBCAuthProvider继承自这个接口AuthProvider ,AuthFactory里面有个初始化AuthProvider的方法:

private static void initProvider() {
       String className = JiveGlobals.getProperty("provider.auth.className",
                "org.jivesoftware.openfire.auth.DefaultAuthProvider");
        // Check if we need to reset the auth provider class
        if (authProvider == null || !className.equals(authProvider.getClass().getName())) {
            try {
                Class c = ClassUtils.forName(className);
                authProvider = (AuthProvider)c.newInstance();
            }
}
该方法将authProvider 设置为ofProperty中provider.auth.className字段设置的值。
UserManger对JDBCUserProvider进行了类似的处理。


下面在源码里面查看org.jivesoftware.openfire.auth.JDBCAuthProvider 和org.jivesoftware.openfire.user.JDBCUserProvider这两个类
以JDBCAuthProvider为例,JDBCAuthProvider有几个私有的属性:
    private String connectionString;
  private String passwordSQL;
  private PasswordType passwordType;
在对JDBCAuthProvider进行初始化的时候,对这几个属性进行了如下的赋值:
connectionString = JiveGlobals.getProperty("jdbcProvider.connectionString");
passwordSQL= JiveGlobals.getProperty("jdbcAuthProvider.passwordSQL");
passwordType = PasswordType.plain;
try {
passwordType = PasswordType.valueOf(
JiveGlobals.getProperty("jdbcAuthProvider.passwordType", "plain"));
}
其中JiveGlobals是专门用来处理数据库的类。
因为connectionString被赋值为你在ofProperty里面所填写的值,所以该类在调用获取连接的方法getConnection()中获取了指向待集成数据库的地址。
return DriverManager.getConnection(connectionString);

在调用获取密码的方法getPasswordValue()的时候,对PreparedStatement的设置的内容就是passwordSQL,如下:

private String getPasswordValue(String username) {
        ...
        try {
            con = getConnection();
            pstmt = con.prepareStatement(passwordSQL);
            pstmt.setString(1, username);

             ...      
             }
      
        return password;
  }
其他字段都是以这种方式在程序中起的作用。
分享到:
评论

相关推荐

    openfire源码

    源码中包含数据库连接和查询的实现,有助于理解数据库在IM系统中的应用。 5. **安全与认证**:Openfire支持SSL/TLS加密,以保护通信的隐私。源码中包含了身份验证和授权机制,比如使用JASIG CAS服务进行单点登录...

    openfire 聊天记录插件 archive(java 源码)

    源码中的注释也是学习的好资料,可能包含实现细节、设计决策以及潜在的优化点。 在Openfire中,聊天记录的管理和存储通常涉及以下几个核心概念: 1. **XMPP协议**:Openfire基于XMPP(Extensible Messaging and ...

    openfire3.9.3 源码部署安装文档

    2. 新建 Java 项目:在 Eclipse 中新建一个 Java 项目,项目名与源码文件名必须一样。 3. 添加 jar 包:将 coherence.jar 和 tangosol.jar 添加到 build 目录下的 lib 目录下。 三、解决错误 1. 实现抽象方法:在 ...

    openfire3.9.1 源码部署及运行

    在本文中,我们将深入探讨如何部署和运行Openfire 3.9.1的源码,以及在这个过程中可能遇到的关键知识点。 首先,我们需要从官方网站下载Openfire 3.9.1的源代码。这通常是一个.zip或.tar.gz格式的压缩包,包含所有...

    openfire4.2.3源码

    源码中可以看到这些组件如何相互协作,以及如何通过插件扩展功能。 5. **安全机制**:Openfire重视安全,支持SSL/TLS加密通信,防止数据被窃取。源码中会有证书管理、加密算法实现等相关部分。 6. **Web管理界面**...

    Openfire即时消息传输平台 v4.8.0 源码包.zip

    1. **XMPP支持**:Openfire作为XMPP服务器,实现了XMPP标准,使得用户可以通过各种XMPP兼容的客户端进行聊天、群聊、文件传输以及在线状态管理。 2. **安全性**:Openfire支持SSL/TLS加密,保证了通信过程中的数据...

    openfire扩展整合现有系统用户

    标题中的“openfire扩展整合现有系统用户”是指在Openfire这款开源即时通讯服务器上,将已有的用户系统(如企业内部的LDAP、AD等)与Openfire进行集成,实现用户身份验证和管理的一体化。Openfire是一款基于Java开发...

    openfire webchat源码部署相关jar

    在解压后的"lib"和"openfire webchat 相关jar"目录中,你可能会找到Openfire WebChat所需的其他依赖库,这些库可能包含了XML解析、数据库连接、加密算法等关键功能。确保所有必要的库都已到位,是成功部署和运行...

    openfire聊天记录插件源码包

    在源码中,聊天记录查询模块是核心部分,它实现了对数据库的高效查询,以便用户可以查看过去的对话。这部分可能涉及到索引优化、分页查询、时间范围筛选等功能。开发者可以通过研究这个模块来学习如何设计和实现一个...

    Openfire3.10.3所需jar包以及Eclipse部署教程

    9. **扩展与定制**:Openfire支持插件机制,你可以开发自己的插件来扩展其功能,例如集成企业内部应用、实现特定的业务逻辑。 总结来说,部署Openfire 3.10.3涉及下载源码、配置Eclipse项目、添加依赖库、设置...

    openfire3.9.3在MyEclipse的源码部署.docx

    【Openfire 3.9.3在MyEclipse的源码部署详解】 Openfire是一款流行的...在实际部署过程中,根据具体环境和需求,可能还需要配置数据库连接、端口设置等其他环节,务必根据Openfire的官方文档或社区指南进行相应调整。

    JAVA源码+openfire+spark 即时通讯

    首先,我们要了解JAVA源码在即时通讯中的作用。Java作为跨平台的编程语言,广泛应用于服务器端开发,尤其适合构建稳定且高效的IM系统。这里的JAVA源码已经过验证,意味着它可以正常运行并且满足即时通讯的基本需求,...

    openfire3.9.3源码

    源码中会包含数据库连接池、SQL查询以及数据持久化的实现。 5. **多线程处理**:由于即时通讯的实时性要求,Openfire在处理并发连接和消息传递时会大量使用多线程。开发者可以学习到如何在Java中有效地管理和同步...

    openfire 聊天记录开发源码 ,包括说明文档,一步一步跟我走绝对能搞定

    在本文中,我们将深入探讨如何利用Openfire进行聊天记录的开发,包括源码解析、功能实现以及配套说明文档的解读。 首先,Openfire的核心特性之一就是其强大的聊天记录管理功能。XMPP协议本身支持聊天记录的存储和...

    openfire4.1.6_linux版

    在本文中,我们将深入探讨Openfire 4.1.6 Linux版的特性和使用方法,以及如何在Linux环境中安装和配置。 Openfire的核心功能包括: 1. **实时通讯协议支持**:Openfire支持XMPP(Extensible Messaging and Presence...

    openfire_4_0_1

    在Windows环境下部署Openfire,可以实现高效、安全的实时通信功能,例如聊天、群组讨论、文件传输等。下面我们将深入探讨Openfire的核心特性和在Windows上的安装与配置过程。 1. **Openfire的主要特性** - **跨...

    openfire 聊天实现

    【压缩包子文件的文件名称列表】"XMPPChatClient0.4.4"可能是一个Android应用的APK文件或者源码包,它代表了项目的客户端部分,可能是用于连接Openfire服务器并实现聊天功能的应用程序。版本号"0.4.4"暗示这是一个...

    openfire开发文档

    在开发过程中,阅读源码和官方文档是必不可少的,这将帮助你更好地理解和利用Openfire的功能。 总结,Openfire插件开发涉及的主要知识点包括: - Openfire架构和插件系统 - Java编程基础 - XMPP协议理解 - ...

    java源码:即时消息传输平台 Openfire.rar

    这个Java源码项目为开发者提供了一个强大的平台,用于构建自己的聊天应用或者集成即时通讯功能到现有的系统中。 在深入研究Openfire之前,我们先来了解一下XMPP。XMPP是一种开放标准的通信协议,它最初由Jabber项目...

Global site tag (gtag.js) - Google Analytics